fleXRPL/github-mcp
If you are the rightful owner of github-mcp and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
A Model Context Protocol (MCP) server that provides GitHub integration tools for AI assistants.
list_repositories
List GitHub repositories with optional visibility and sorting parameters.
get_repository
Retrieve details of a specific repository.
list_issues
List issues in a repository with optional state and label filters.
create_issue
Create a new issue in a repository with optional labels and assignees.
list_pull_requests
List pull requests in a repository with optional state and sorting parameters.
create_pull_request
Create a new pull request with optional draft status.
get_file_content
Retrieve the content of a file in a repository.
list_directory
List the contents of a directory in a repository.
GitHub MCP Server
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.
Features
- 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
Installation
- Clone the repository:
git clone https://github.com/yourusername/github-mcp.git
cd github-mcp
- Install the package:
pip install -e .
Authentication
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
-
Usage
- 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" } ] } }
-
API Endpoints
GET /
: Server information and available toolsPOST /tool
: Synchronous tool callsGET /sse
: Server-Sent Events endpoint for streaming responses
Available Tools
Repository Tools
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:
Issue Tools
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:
Pull Request Tools
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:
Content Tools
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:
Development
- Install development dependencies:
pip install -e ".[dev]"
- Run tests:
pytest
- Run linting:
ruff check .
License
This project is licensed under the MIT License - see the LICENSE file for details.
Contributing
- 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