GitHub MCP Tools
A Multi-Claude Program (MCP) for interacting with GitHub APIs through Claude Desktop.
Features
- Search GitHub repositories and issues
 
- Create, update, and manage GitHub issues and pull requests
 
- Manage repository settings and configurations
 
- Handle repository workflows and actions
 
- Search for users and organizations
 
- Manage repository collaborators and teams
 
Installation
- 
Clone this repository:
git clone https://github.com/yourusername/github-mcp.git
cd github-mcp
 
- 
Create and activate a virtual environment:
# On macOS/Linux
python -m venv venv
source venv/bin/activate
# On Windows
python -m venv venv
.\venv\Scripts\activate
 
- 
Install dependencies:
pip install -r requirements.txt
 
- 
Create a .env file in the project root:
touch .env
 
- 
Add your GitHub credentials to the .env file:
GITHUB_TOKEN=your_personal_access_token_here
GITHUB_USERNAME=your_github_username
 
- 
Test the installation:
# Run all tests
python -m pytest
# Run a specific test file
python -m pytest tests/test_search_repos.py
 
- 
Start the MCP server:
python run.py
 
Environment Setup
GitHub Personal Access Token
You'll need a fine-grained personal access token to authenticate with GitHub:
- Log in to your GitHub account
 
- Go to Settings > Developer settings > Personal access tokens > Fine-grained tokens
 
- Click "Generate new token"
 
- Configure the token:
- Token name: "Claude Desktop Integration"
 
- Description: "Token for Claude Desktop GitHub integration"
 
- Expiration: Choose an appropriate expiration date
 
- Repository access: Select "All repositories" or specific repositories
 
- Permissions:
- Repository permissions:
- Actions: Read and write
 
- Contents: Read and write
 
- Issues: Read and write
 
- Pull requests: Read and write
 
- Repository hooks: Read and write
 
- Repository settings: Read and write
 
 
- Organization permissions (if working with organization repositories):
- Members: Read-only
 
- Teams: Read-only
 
 
 
 
- Click "Generate token" and save the generated token securely
 
Tools
Search Repositories
Search for GitHub repositories using various criteria.
Parameters:
- query: Search query string
 
- sort: Sort field (stars, forks, updated, etc.)
 
- order: Sort order (asc or desc)
 
- max_results: Maximum number of results to return (default: 10)
 
Create Issue
Create a new GitHub issue in a specified repository.
Parameters:
- owner: Repository owner
 
- repo: Repository name
 
- title: Issue title
 
- body: Issue description
 
- labels: List of labels to apply
 
- assignees: List of assignee usernames
 
Create Pull Request
Create a new pull request.
Parameters:
- owner: Repository owner
 
- repo: Repository name
 
- title: PR title
 
- body: PR description
 
- head: Source branch
 
- base: Target branch
 
- draft: Whether to create as draft PR
 
Manage Repository Settings
Update repository settings and configurations.
Parameters:
- owner: Repository owner
 
- repo: Repository name
 
- settings: Dictionary of settings to update
 
Search Issues
Search for issues across repositories.
Parameters:
- query: Search query string
 
- state: Issue state (open, closed, all)
 
- sort: Sort field
 
- order: Sort order
 
- max_results: Maximum number of results
 
Manage Workflows
Manage GitHub Actions workflows.
Parameters:
- owner: Repository owner
 
- repo: Repository name
 
- workflow_file: Workflow file path
 
- action: Action to perform (enable, disable, trigger)
 
Manage Collaborators
Manage repository collaborators.
Parameters:
- owner: Repository owner
 
- repo: Repository name
 
- username: Collaborator username
 
- permission: Permission level (pull, push, admin, maintain, triage)
 
Example Usage
# Search for repositories
search_repos(query="python web framework", sort="stars", max_results=5)
# Create a new issue
create_issue(
    owner="username",
    repo="repository",
    title="Bug: Login not working",
    body="Users cannot log in using the login button",
    labels=["bug", "high-priority"]
)
# Create a pull request
create_pull_request(
    owner="username",
    repo="repository",
    title="Feature: Add user authentication",
    body="Implements JWT-based authentication",
    head="feature/auth",
    base="main"
)
# Search for issues
search_issues(query="is:open is:issue author:username", max_results=10)
# Manage repository settings
manage_repo_settings(
    owner="username",
    repo="repository",
    settings={
        "has_issues": True,
        "has_projects": True,
        "has_wiki": True
    }
)
Development
Running Tests
# Run all tests
python -m pytest
# Run with coverage
python -m pytest --cov=src tests/
# Run specific test file
python -m pytest tests/test_search_repos.py
Adding New Tools
- Create a new file in 
src/tools/ 
- Implement your tool function
 
- Register the tool in 
src/main.py 
- Add tests in 
tests/ 
- Update documentation in README.md
 
Contributing
- Fork the repository
 
- Create a feature branch
 
- Make your changes
 
- Run tests
 
- Submit a pull request
 
License
MIT License