GitHub MCP Agent Server

GitHub MCP Agent Server

MCP server that exposes GitHub operations as tools for AI agents, enabling code search, issue management, and PR review.

Category
Visit Server

README

GitHub MCP Agent Server

Python License CI

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

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 query
  • repo (str, optional) — Repository in owner/repo format

Returns: Formatted list of matching files with paths and URLs.

list_issues(repo, state)

List issues in a repository.

Parameters:

  • repo (str, required) — Repository in owner/repo format
  • state (str, optional) — "open" (default) or "closed"

create_issue(repo, title, body)

Create a new issue.

Parameters:

  • repo (str, required) — Repository in owner/repo format
  • title (str, required) — Issue title
  • body (str, required) — Issue body text

get_pr_diff(repo, pr_number)

Fetch the raw diff of a pull request.

Parameters:

  • repo (str, required) — Repository in owner/repo format
  • pr_number (int, required) — Pull request number

create_pr(repo, title, body, head, base)

Create a pull request.

Parameters:

  • repo (str, required) — Repository in owner/repo format
  • title (str, required) — PR title
  • body (str, required) — PR description
  • head (str, required) — Source branch name
  • base (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 / HACK comments
  • ❌ 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

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.

Official
Featured
TypeScript
Magic Component Platform (MCP)

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.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

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.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

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.

Official
Featured
TypeScript
Kagi MCP Server

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.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured
Exa Search

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.

Official
Featured