GitHub MCP Server
README.md
# š GitHub MCP Server
A production-ready **Model Context Protocol (MCP) Server** built with Python that enables AI assistants and MCP clients to interact with GitHub repositories through the GitHub REST API.
This project demonstrates how to build a custom MCP server capable of performing GitHub operations such as listing repositories, retrieving repository information, managing issues, and extending to pull requests, workflows, and code management.
---
## š Features
### Repository Management
* List all repositories for the authenticated user
* Retrieve repository details
* Access repository metadata
### Issue Management
* List repository issues
* Create new issues
* Close existing issues *(future enhancement)*
### MCP Integration
* Built using the official MCP Python SDK
* Compatible with MCP Inspector
* JSON-RPC based communication
* Local STDIO transport support
---
## šļø Architecture
```text
āāāāāāāāāāāāāāāāāāāāāāā
ā MCP Client ā
ā (Inspector / AI) ā
āāāāāāāāāāāā¬āāāāāāāāāāā
ā
ā¼
āāāāāāāāāāāāāāāāāāāāāāā
ā GitHub MCP Server ā
ā (Python) ā
āāāāāāāāāāāā¬āāāāāāāāāāā
ā
ā¼
āāāāāāāāāāāāāāāāāāāāāāā
ā GitHub REST API ā
āāāāāāāāāāāā¬āāāāāāāāāāā
ā
ā¼
āāāāāāāāāāāāāāāāāāāāāāā
ā GitHub Account ā
āāāāāāāāāāāāāāāāāāāāāāā
```
---
# š Project Structure
```text
github-mcp/
ā
āāā server.py
āāā .env
āāā pyproject.toml
āāā uv.lock
āāā .gitignore
āāā README.md
```
---
# āļø Prerequisites
* Python 3.10+
* UV Package Manager
* GitHub Account
* GitHub Personal Access Token (PAT)
* Node.js (for MCP Inspector)
---
# š GitHub Token Setup
Generate a Personal Access Token from:
https://github.com/settings/tokens
Recommended permissions:
```text
Repository Access
Issues: Read & Write
Contents: Read
Pull Requests: Read & Write
```
Create a `.env` file:
```env
GITHUB_TOKEN=your_github_token_here
```
---
# š¦ Installation
Clone the repository:
```bash
git clone <repository-url>
cd github-mcp
```
Initialize project:
```bash
uv init
```
Install dependencies:
```bash
uv add mcp requests python-dotenv
```
---
# ā¶ļø Running the Server
Start the MCP server:
```bash
uv run server.py
```
The server will wait for MCP client connections.
---
# š Using MCP Inspector
Start MCP Inspector:
```bash
npx @modelcontextprotocol/inspector
```
Open:
```text
http://localhost:6274
```
Connection Settings:
```text
Transport : STDIO
Command:
uv
Arguments:
run server.py
```
Click **Connect**.
---
# š ļø Available Tools
## list_repositories
Returns all repositories accessible by the authenticated user.
### Example
```json
{}
```
### Response
```json
[
{
"name": "github-mcp",
"full_name": "username/github-mcp",
"private": false
}
]
```
---
## get_repository
Returns details for a specific repository.
### Input
```json
{
"owner": "username",
"repo": "github-mcp"
}
```
### Response
```json
{
"name": "github-mcp",
"description": "GitHub MCP Server",
"stars": 10,
"forks": 2
}
```
---
# š MCP Request Flow
```text
User
ā
ā¼
MCP Client
ā
ā¼
Tool Call
ā
ā¼
GitHub MCP Server
ā
ā¼
GitHub REST API
ā
ā¼
Response Returned
```
---
# š§ Planned Enhancements
* Create GitHub Issues
* Close Issues
* Pull Request Management
* Branch Management
* File Operations
* GitHub Actions Integration
* Repository Search
* Code Search
* OAuth Authentication
* Remote MCP Deployment
---
# š§ Learning Outcomes
This project demonstrates:
* Model Context Protocol (MCP)
* MCP Tools
* JSON-RPC Communication
* GitHub REST API Integration
* Authentication using PAT
* MCP Inspector Usage
* Production MCP Architecture
* Local MCP Server Development
---
# š License
MIT License
---
# šØāš» Author
Built as a learning and production-ready MCP project for understanding MCP architecture, GitHub integrations, and AI tooling ecosystems.
# Test commit for pull requestTDQS
C2.5/5.0
Scored across 2 tools
Disambiguation5/5
The two tools are clearly distinct: one retrieves details of a specific repository, the other lists all repositories. No overlap in purpose.
Naming Consistency5/5
Both tools follow a consistent verb_noun pattern ('get_repository', 'list_repositories'), with appropriate singular/plural usage.
Tool Count1/5
With only 2 tools, the server is extremely limited for a GitHub-related service. Typical functionality requires many more tools (issues, PRs, etc.).
Completeness1/5
The tool surface is severely incomplete; it lacks any operations related to issues, pull requests, commits, content, or repository management beyond basic retrieval.
Maintenance
ActivityStale
ResponsivenessUnresponsive