A Model Context Protocol (MCP) server that provides GitHub integration tools for AI assistants. This server implements a set of tools that allow AI models to interact with GitHub repositories, issues, pull requests, and content.
- Repository Management
- List repositories
- Get repository details
- Issue Management
- List issues
- Create issues
- Pull Request Management
- List pull requests
- Create pull requests
- Content Management
- Get file content
- List directory contents
- Clone the repository:
git clone https://github.com/yourusername/github-mcp.git
cd github-mcp
- Install the package:
pip install -e .
This server uses githubauthlib
for secure GitHub authentication. The library retrieves GitHub tokens from your system's keychain:
- macOS: Uses Keychain Access
- Windows: Uses Credential Manager
- Linux: Uses libsecret
To set up authentication:
-
Install the required system dependencies:
-
macOS: No additional setup required
-
Windows: No additional setup required
-
Linux: Install libsecret
# Ubuntu/Debian sudo apt-get install libsecret-tools # Fedora sudo dnf install libsecret
-
-
Configure your GitHub credentials:
-
The server will automatically use your Git credentials from the system keychain
-
If no credentials are found, you'll need to configure Git with your GitHub credentials:
git config --global credential.helper store # Then perform a Git operation that requires authentication
-
- Start the server:
python -m github_mcp.server
The server will start on http://localhost:8000
by default.
- Configure Cursor IDE:
-
Open Cursor IDE settings
-
Add the following MCP server configuration:
{ "mcp": { "servers": [ { "name": "github-mcp", "url": "http://localhost:8000/sse" } ] } }
-
GET /
: Server information and available toolsPOST /tool
: Synchronous tool callsGET /sse
: Server-Sent Events endpoint for streaming responses
list_repositories
: List GitHub repositories- Parameters:
visibility
(optional): "all", "public", or "private"sort
(optional): "created", "updated", "pushed", or "full_name"
- Parameters:
get_repository
: Get repository details- Parameters:
owner
: Repository ownerrepo
: Repository name
- Parameters:
list_issues
: List repository issues- Parameters:
owner
: Repository ownerrepo
: Repository namestate
(optional): "open", "closed", or "all"labels
(optional): List of label names
- Parameters:
create_issue
: Create a new issue- Parameters:
owner
: Repository ownerrepo
: Repository nametitle
: Issue titlebody
(optional): Issue descriptionlabels
(optional): List of label namesassignees
(optional): List of assignee usernames
- Parameters:
list_pull_requests
: List repository pull requests- Parameters:
owner
: Repository ownerrepo
: Repository namestate
(optional): "open", "closed", or "all"sort
(optional): "created", "updated", "popularity", or "long-running"
- Parameters:
create_pull_request
: Create a new pull request- Parameters:
owner
: Repository ownerrepo
: Repository nametitle
: Pull request titlebody
(optional): Pull request descriptionhead
: Source branchbase
(optional): Target branch (default: "main")draft
(optional): Create as draft (default: false)
- Parameters:
get_file_content
: Get file content- Parameters:
owner
: Repository ownerrepo
: Repository namepath
: File pathref
(optional): Branch/tag/commit reference
- Parameters:
list_directory
: List directory contents- Parameters:
owner
: Repository ownerrepo
: Repository namepath
(optional): Directory path (default: "")ref
(optional): Branch/tag/commit reference
- Parameters:
- Install development dependencies:
pip install -e ".[dev]"
- Run tests:
pytest
- Run linting:
ruff check .
This project is licensed under the MIT License - see the LICENSE file for details.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request