# GitHub MCP

> 🧠🤖 MCP-compliant AI agent server in TypeScript 🚀 — Extend Claude & others with 🐙 GitHub Repos, Issues, Pull Requests & Actions superpowers! Ready-to-use executables available for macOS & Windows

- **Type:** MCP server
- **Install:** `agentstack add mcp-chayan-1906-github-mcp`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [chayan-1906](https://agentstack.voostack.com/s/chayan-1906)
- **Installs:** 0
- **Category:** [Databases](https://agentstack.voostack.com/c/databases)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [chayan-1906](https://github.com/chayan-1906)
- **Source:** https://github.com/chayan-1906/GitHub-MCP
- **Website:** https://versed-blinker-33e.notion.site/GitHub-MCP-User-Guide-2120c027172280fb81ccda9b88b8e265

## Install

```sh
agentstack add mcp-chayan-1906-github-mcp
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# 🐙 GitHub MCP Server

[](https://github.com/chayan-1906/GitHub-MCP)
[](https://nodejs.org/)
[](https://www.typescriptlang.org/)
[](https://expressjs.com/)
[](https://www.mongodb.com/)
[](https://opensource.org/licenses/MIT)
[](https://modelcontextprotocol.io/)
[](https://docs.github.com/en/developers/apps/building-oauth-apps)

An MCP-compliant server built with TypeScript to extend Claude and other AI agents with superpowers for GitHub
Repositories, Branches, Commits, Issues, Pull Requests, Releases, and Actions. Pre-built executables available for
macOS, Windows, and
Linux for easy end-user installation without Node.js dependencies.

---

## ⚙️ Quick Start

### Option 1: Use Pre-built Package

#### 1. Install Claude Desktop:

Download from [https://claude.ai/download](https://claude.ai/download)

#### 2. Download the Executable:

**macOS:**
📦 [Download macOS Executable](https://github.com/chayan-1906/GitHub-MCP/releases/download/v1.3.0/github)

**Windows:**
📦 [Download Windows Executable](https://github.com/chayan-1906/GitHub-MCP/releases/download/v1.3.0/github.exe)

#### 3. Run the Executable:

- **For macOS users**:
  ```bash
  chmod +x github
  ./github
  ```
- **For Windows users**:
  Double-click the file, or run via terminal: `.\github.exe`

**Note**:

1. No need to run the executable repeatedly
2. Do NOT delete the executable after running
3. If you rename, move, or modify the executable, you must run it again (Step 3) to restart it properly

#### 4. 🌐 Explore Available Tools (Optional)

Visit the homepage to browse all available tools:

- **Homepage**: **http://localhost:20253/**
- See all 44+ GitHub tools with user-friendly descriptions
- Great for understanding what the server can do

#### 5. (Optional) Stop the Server:

You can stop the server if needed (launching Claude will automatically stop the currently running instance/port)

#### 6. Launch Claude Desktop

Start Claude Desktop application

#### 7. Start Asking Tasks:

Claude will now recognize the available tools with descriptions

**Important**: When prompting Claude, include "use available GitHub tools" in your prompts to ensure the LLM utilizes
the GitHub MCP tools instead of defaulting to web search

### Option 2: Build from Source

#### 1. 📁 Clone the repo

```bash
git clone https://github.com/chayan-1906/GitHub-MCP.git
cd GitHub-MCP
```

#### 2. 📦 Install dependencies

```bash
npm install
```

#### 3. 🔧 Setup Configuration

Configure your credentials in `src/config/config.ts`:

```typescript
export const PORT = 20253
export const DB_NAME = "github";
export const CLIENT_ID = "your_github_client_id"
export const CLIENT_SECRET = "your_github_client_secret"
export const GITHUB_CALLBACK_URL = `http://localhost:${PORT}/github/oauth/callback`
export const MONGODB_URI = "your_mongodb_connection_string"
export const TOKEN_SECRET = "your_token_secret"
```

Replace placeholder values with your actual GitHub OAuth app credentials and MongoDB connection string.

**Generate a secure token secret:**

```bash
openssl rand -hex 32
```

#### 4. 🌐 Explore Available Tools

Visit the homepage to see all available tools with user-friendly descriptions:

- **Homepage**: **http://localhost:20253/**
- Browse all 44+ GitHub tools organized by category
- View user-friendly descriptions and use cases
- Perfect for understanding the server's capabilities

#### 5. 🔧 Switch GitHub Accounts

To authenticate with a different GitHub account or refresh your session:

- Visit: **http://localhost:20253/auth**
- Complete OAuth flow with desired GitHub account

#### 6. 🧪 Run the MCP Server

```bash
npm run dev
```

Or compile and run:

```bash
npm run build
npm run bundle
npm run package
```

## 📖 User Guide

Detailed
documentation: [GitHub MCP User Guide](https://versed-blinker-33e.notion.site/GitHub-MCP-User-Guide-2120c027172280fb81ccda9b88b8e265)

---

## 🧰 Available Tools

| Tool Name                      | Category      | Description                                                                                                                                                                                                                |
|--------------------------------|---------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `my-github-account`            | Profile       | Retrieves details of the authenticated GitHub user, including username, display name, email (if available), avatar URL, and profile link                                                                                   |
|                                |               |                                                                                                                                                                                                                            |
| `list-repositories`            | Repositories  | Fetches repositories user has access to. Calls repeatedly with increasing currentPage until result is empty                                                                                                                |
| `get-repository-details`       | Repositories  | Fetches metadata of a GitHub repository (e.g., default branch, visibility, description, etc.). Useful before accessing files or commits from a repo                                                                        |
| `create-repository`            | Repositories  | Creates a new GitHub repository for the authenticated user with optional description, visibility, and initialization                                                                                                       |
| `update-repository`            | Repositories  | Updates repository description and/or tags (topics) of a GitHub repository                                                                                                                                                 |
| `rename-repository`            | Repositories  | Renames a GitHub repository owned by the authenticated user                                                                                                                                                                |
| `delete-repository`            | Repositories  | Deletes a GitHub repository owned by the authenticated user. This action is irreversible                                                                                                                                   |
| `modify-repository-visibility` | Repositories  | Modifies a GitHub repository visibility (private/public/internal)                                                                                                                                                          |
| `list-collaborators`           | Repositories  | Returns a combined list of accepted collaborators and pending invitations for a GitHub Repository, each marked with their status                                                                                           |
| `add-remove-collaborators`     | Repositories  | Adds or removes a collaborator from a GitHub repository                                                                                                                                                                    |
|                                |               |                                                                                                                                                                                                                            |
| `list-branches`                | Branches      | Fetches branches of the authenticated user's repository. Calls repeatedly with increasing currentPage until the result is empty                                                                                            |
| `get-branch-details`           | Branches      | Fetches details of a specific branch in a GitHub repository                                                                                                                                                                |
| `create-branch`                | Branches      | Creates a new branch from a given commit SHA (usually the latest commit of an existing branch)                                                                                                                             |
| `set-default-branch`           | Branches      | Sets the default branch in a GitHub repository                                                                                                                                                                             |
| `delete-branch`                | Branches      | Deletes a branch from a GitHub repository. Cannot delete the default branch                                                                                                                                                |
|                                |               |                                                                                                                                                                                                                            |
| `repository-tree`              | Files         | Displays the hierarchical tree structure of a GitHub repository branch with ASCII tree formatting. Shows files and directories in a visual tree layout with filtering and pagination support.                              |
| `get-file-content`             | Files         | Reads and returns the raw content of a specific file from a GitHub repository branch                                                                                                                                       |
| `commit-remote-file`           | Files         | Commits a file to a GitHub Repository using GitHub API. This does not use the local file system. • parentCommitSha & baseTreeSha: must be real SHAs. • If the repository is empty, omit these fields (don't pass 000…000). |
|                                |               |                                                                                                                                                                                                                            |
| `list-commits`                 | Commits       | Fetches commits in a branch of a GitHub repository, page by page                                                                                                                                                           |
| `get-commit-modifications`     | Commits       | Returns the list of files modified in a specific GitHub commit                                                                                                                                                             |
|                                |               |                                                                                                                                                                                                                            |
| `list-issues`                  | Issues        | Fetches issues from a GitHub repository, page by page. Calls repeatedly with increasing currentPage until result is empty                                                                                                  |
| `get-issue-details`            | Issues        | Fetches detailed information about a specific GitHub issue by issue number                                                                                                                                                 |
| `get-issue-comments`           | Issues        | Fetches all comments for a GitHub issue, including the original issue, all comments, and participant details. Automatically fetches all pages of comments                                                                  |
| `create-issue`                 | Issues        | Creates a new issue in a GitHub repository. Including body and labels is optional                                                                                                                                          |
| `update-issue`                 | Issues        | Updates the title, body, and/or labels of an existing GitHub issue. Also works for pull requests since PRs are treated as issues for label management.                                                                     |
| `update-issue-state`           | Issues        | Updates the state of a GitHub issue (open or closed) by issue number                                                                                                                                                       |
| `assign-issue`                 | Issues        | Assigns one or more GitHub users to a GitHub issue                                                                                                                                                                         |
|                                |               |                                                                                                                                                                                                                            |
| `list-pull-requests`           | Pull Requests | Fetches all pull requests from a GitHub repository, page by page. Filter by state and sort options available                                                                                                               |
| `get-pull-request-details`     | Pull Requests | Fetches detailed information about a specific GitHub pull request by PR number                                                                                                                                             |
| `create-pull-request`          | Pull Requests | Creates a new pull request in a GitHub repository. Compares changes between two branches and creates a PR for review                                                                                                       |
| `update-pull-request`          | Pull Requests | Updates title, body, state, and base branch of an existing pull request                                                                                                                                                    |
| `list-pull-request-commits`    | Pull Requests | Lists all commits in a specific pull request with pagination support                                                                                                                                                       |
| `list-pull-request-files`      | Pull Requests | Lists all files changed in a specific pull request with diff information                                                                                                                                                   |
| `update-pull-request-state`    | Pull Requests | Updates the state of a pull request (open or closed)                                                                                                                                                                       |
| `merge-pull-request`           | Pull Requests | Merges a GitHub pull request only if PR is open, not draft, and has no conflicts                                                                                                                                           |
| `get-pull-request-reviews`     | Pull Requests | Lists all reviews for a specific GitHub pull request, page by page                                                                                                                                                         |
| `create-pull-request-review`   | Pull Requests | Creates a review for a GitHub pull request. Can approve, request changes, or add com

…

## Source & license

This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [chayan-1906](https://github.com/chayan-1906)
- **Source:** [chayan-1906/GitHub-MCP](https://github.com/chayan-1906/GitHub-MCP)
- **License:** MIT
- **Homepage:** https://versed-blinker-33e.notion.site/GitHub-MCP-User-Guide-2120c027172280fb81ccda9b88b8e265

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** yes
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/mcp-chayan-1906-github-mcp
- Seller: https://agentstack.voostack.com/s/chayan-1906
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
