Skip to main content
Glama
Utkarsh-kumar-singh

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 request

TDQS

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