A Model Context Protocol (MCP) server that enables AI assistants like Claude to interact with GitHub repositories, issues, and pull requests.
- Repository Search: Find GitHub repositories based on search queries
- Issue Management: Get, create, and comment on issues
- Pull Request Handling: View and manage pull requests
- Repository Analysis: Get statistics and insights about repositories
- Python 3.8+
- GitHub API token
-
Clone this repository:
git clone https://github.com/yourusername/github-mcp-server.git cd github-mcp-server -
Install dependencies:
pip install -r requirements.txt
-
Set up your GitHub token as an environment variable:
export GITHUB_TOKEN=your_github_token_here -
Run the server:
python server.py
The server will start running on http://localhost:5000.
The MCP server provides the following endpoints:
- GET /mcp/discover: Returns available operations and their parameters
- POST /mcp/execute: Executes operations based on provided parameters
curl -X GET http://localhost:5000/mcp/discovercurl -X POST http://localhost:5000/mcp/execute \
-H "Content-Type: application/json" \
-d '{
"endpoint": "search_repositories",
"parameters": {
"query": "machine learning"
}
}'curl -X POST http://localhost:5000/mcp/execute \
-H "Content-Type: application/json" \
-d '{
"endpoint": "get_repo_issues",
"parameters": {
"owner": "openai",
"repo": "whisper"
}
}'The server follows the Model Context Protocol specification to allow AI assistants to:
- Discover available operations
- Execute operations with appropriate parameters
- Process and return results in a structured format
You can extend this server by:
- Adding new endpoints in the
discover()function - Implementing corresponding handler functions
- Updating the routing in the
execute()function
- The server uses an API token for authentication with GitHub
- Implement rate limiting to prevent abuse
- Add input validation for all parameters
- Consider implementing OAuth for more secure token management
See the demo video for a walkthrough of the server's capabilities.
MIT License
For questions or support, please open an issue on this repository.