GitHub MCP Agent Server
MCP server that exposes GitHub operations as tools for AI agents, enabling code search, issue management, and PR review.
README
GitHub MCP Agent Server
MCP (Model Context Protocol) server that exposes GitHub operations as tools for AI agents — Claude Code, Codex, and any MCP-compatible client.
Features
| Tool | Description |
|---|---|
search_code |
Search GitHub repositories for code |
list_issues |
List open/closed issues in a repository |
create_issue |
Create a new GitHub issue |
get_pr_diff |
Fetch the raw diff of any pull request |
create_pr |
Create a pull request between branches |
review_pr_diff |
Automated code review via local rules (no API call) |
Quick Start
1. Prerequisites
- Python 3.10+
- A GitHub personal access token with
reposcope
2. Install
pip install fastmcp httpx python-dotenv
3. Configure
git clone https://github.com/FMorgan-111/github-mcp-server.git
cd github-mcp-server
echo "GITHUB_TOKEN=ghp_your_token_here" > .env
4. Run
python -m src.main
5. Connect to your AI agent
Claude Code:
claude mcp add github-agent -- python3 /path/to/github-mcp-server/src/main.py
Or via Claude Desktop / Cursor config:
{
"mcpServers": {
"github-agent": {
"command": "python3",
"args": ["/path/to/github-mcp-server/src/main.py"],
"env": {
"GITHUB_TOKEN": "ghp_your_token_here"
}
}
}
}
Then ask your AI:
"List open issues in FMorgan-111/github-mcp-server" "Search for 'FastMCP' in my repo" "Review PR #1 in this repo"
Tool Reference
search_code(query, repo)
Search code within a GitHub repository.
Parameters:
query(str, required) — Search queryrepo(str, optional) — Repository inowner/repoformat
Returns: Formatted list of matching files with paths and URLs.
list_issues(repo, state)
List issues in a repository.
Parameters:
repo(str, required) — Repository inowner/repoformatstate(str, optional) —"open"(default) or"closed"
create_issue(repo, title, body)
Create a new issue.
Parameters:
repo(str, required) — Repository inowner/repoformattitle(str, required) — Issue titlebody(str, required) — Issue body text
get_pr_diff(repo, pr_number)
Fetch the raw diff of a pull request.
Parameters:
repo(str, required) — Repository inowner/repoformatpr_number(int, required) — Pull request number
create_pr(repo, title, body, head, base)
Create a pull request.
Parameters:
repo(str, required) — Repository inowner/repoformattitle(str, required) — PR titlebody(str, required) — PR descriptionhead(str, required) — Source branch namebase(str, required) — Target branch name (e.g."main")
review_pr_diff(repo, pr_number)
Fetch a PR diff and run local code review rules. No API call — all analysis is local.
Rules checked:
- ⚠️
print()statements in non-test files - ⚠️
TODO/FIXME/HACKcomments - ❌ Hardcoded secrets (passwords, API keys, tokens)
- ❌ Bare
except:clauses (should specify exception type) - ⚠️ Functions over 80 lines
Architecture
┌─────────────────┐ MCP stdio transport ┌──────────────────────┐
│ Claude Code │ ◄─────────────────────────► │ GitHub MCP Server │
│ Codex │ JSON-RPC 2.0 messages │ │
│ Any MCP client │ │ ┌────────────────┐ │
└─────────────────┘ │ │ github_client │ │
│ │ (httpx) │ │
│ │ → GitHub API │ │
│ └────────────────┘ │
│ ┌────────────────┐ │
│ │ review.py │ │
│ │ local rules │ │
│ └────────────────┘ │
│ ┌────────────────┐ │
│ │ config.py │ │
│ │ .env / env │ │
│ └────────────────┘ │
└──────────────────────┘
Development
# Clone and install
git clone https://github.com/FMorgan-111/github-mcp-server.git
cd github-mcp-server
pip install -e . --break-system-packages
# Run tests
python -m pytest tests/ -v
# Start MCP server (stdio mode)
python -m src.main
# Test with MCP Inspector
# https://github.com/modelcontextprotocol/inspector
Deployment
Docker
docker build -t github-mcp-server .
docker run -e GITHUB_TOKEN=ghp_your_token_here -i github-mcp-server
Smithery (MCP Registry)
Deploy to Smithery for one-click install into any MCP client.
License
MIT
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.