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.serverThe 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
