# github-mcp [Health: Active]

**Category:** 🔄 Version Control  
**Repository:** https://github.com/jaimenbell/github-mcp  
**GitHub Stars:** 0  
**Views:** 5  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/github-mcp

## Description
MCP server for the GitHub REST API: issues, PRs, repos; read always on, write env-gated.

## Tools
Capabilities this server exposes over MCP:

- **get_repo** — Repo metadata (stars, language, license, default branch, archived flag...)
- **list_issues** — List issues on a repo (PRs filtered out)
- **get_issue** — Fetch a single issue
- **list_pull_requests** — List pull requests on a repo
- **get_pull_request** — Fetch a single pull request
- **get_file_content** — Read a repo file's content (base64-decoded, binary detected not decoded)
- **search_repos** — Search public repositories
- **get_user** — Public user/org profile
- **list_commits** — List commits on a branch/ref
- **create_issue** — Open an issue
- **comment_on_issue** — Comment on an issue/PR
- **update_issue_state** — Open/close an issue
- **add_labels** — Add labels to an issue/PR
- **create_pr_review_comment** — Create a PR review comment on a diff line

## Claude Desktop Quick Installation
Install path detected from listing signals. Uses `uvx` (confidence: high):

```json
"mcpServers": {
  "github-mcp": {
    "command": "uvx",
    "args": ["jaimenbell-github-mcp"],
    "env": {
      "GITHUB_MCP_ENABLE_WRITE": "",
      "GITHUB_TOKEN": ""
    }
  }
}
```

**Requires environment variables:** `GITHUB_MCP_ENABLE_WRITE`, `GITHUB_TOKEN` — the values above are empty placeholders; fill in real credentials before running (see the repository for what each one is for).

## Documentation

## What github-mcp MCP server does

The github-mcp MCP server exposes selected GitHub REST API operations through MCP. Its read surface includes repository metadata, issue and pull request retrieval, repository file contents, public repository search, public user or organization profiles, and commit listings for a branch or reference.

The write surface covers opening issues, commenting on issues or pull requests, changing an issue's open or closed state, adding labels, and placing a review comment on a specific pull request diff line. Pull requests are excluded from the issue-listing result, so agents can handle the two resource types separately.

## How it works

Read tools are active by default and can use GitHub's unauthenticated access tier when no token is configured. GitHub limits that tier to 60 requests per hour, with search subject to a 10-requests-per-minute limit. Supplying a token can raise the applicable read limits.

Write tools are disabled unless `GITHUB_MCP_ENABLE_WRITE=1` is present. They also require `GITHUB_TOKEN`; the server checks these conditions independently before making a network request. A disabled write operation returns a structured `policy_refusal` error, while an enabled operation without a token returns `auth_required`.

The client reports API, network, malformed-response, and rate-limit failures as typed errors rather than uncaught exceptions. Primary rate limits use GitHub reset information when available, and secondary limits expose retry timing when provided.

## Setup and configuration

Install the package with:

```bash
pip install jaimenbell-github-mcp
```

Register the `github-mcp` executable with an MCP host. A minimal configuration uses the command directly:

```json
{
  "mcpServers": {
    "github-mcp": {
      "command": "github-mcp"
    }
  }
}
```

For read-only use, no environment variable is required. To permit mutations, add `GITHUB_MCP_ENABLE_WRITE=1` and provide a fine-grained personal access token through `GITHUB_TOKEN`. The write group remains off unless the environment explicitly enables it.

## Tools and capabilities

The github-mcp MCP server provides these read tools:

- `get_repo`, `search_repos`, and `get_user` for repository discovery and public metadata.
- `list_issues` and `get_issue` for issue work.
- `list_pull_requests` and `get_pull_request` for pull request work.
- `get_file_content` for repository files; text is base64-decoded, while binary content is identified rather than decoded.
- `list_commits` for commits on a branch or reference.

Its write tools are `create_issue`, `comment_on_issue`, `update_issue_state`, `add_labels`, and `create_pr_review_comment`.

## Limitations and notes

The implementation uses GitHub REST API v1 only. It does not provide GraphQL, webhooks, GitHub App authentication, Actions or workflow-dispatch tools. The supported authentication method is a fine-grained personal access token.

List endpoints return one page only. Each endpoint's `limit` controls page size but does not provide pagination. `get_file_content` truncates content beyond 100 KB and reports non-UTF-8 files instead of decoding them. Unauthenticated use is therefore subject to GitHub rate limits, especially during sustained or search-heavy workloads.

_Full upstream README: https://allmcps.com/mcp/github-mcp/readme_

