GitHub MCP Server

A Model Context Protocol (MCP) server built in TypeScript that integrates with GitHub's API, enabling AI assistants to manage repositories, issues

Local serverstdio

What is the GitHub MCP server?

A Model Context Protocol (MCP) server built in TypeScript that integrates with GitHub's API, enabling AI assistants to manage repositories, issues, pull requests, and code while providing a structured interface for LLM agents to perform. The github mcp server wraps that behind the Model Context Protocol, so an assistant can use it through 14 defined tools rather than through you.

What it actually does

A Model Context Protocol (MCP) server that provides tools for interacting with the GitHub API. This server allows LLM agents manage GitHub repositories, issues, pull requests, branches, files, and releases through a standardized interface.

github-mcp-server implements the Model Context Protocol (MCP), enabling standardized communication between LLMs and external systems through:

Its toolset

Everything the assistant can do here goes through one of these:

  • get_repository — Get detailed information about a specific repository Parameters: owner, repo
  • list_repositories — List repositories for the authenticated user Parameters: type (optional), sort (optional)
  • create_repository — Create a new GitHub repository Parameters: name, description (optional), private (optional)
  • list_branches — List branches in a repository Parameters: owner, repo, protected (optional), per_page (optional)
  • create_branch — Create a new branch Parameters: owner, repo, branch, sha
  • delete_branch — Delete a branch Parameters: owner, repo, branch
  • create_issue — Create a new issue in a repository Parameters: owner, repo, title, body (optional), labels (optional)
  • list_issues — List issues in a repository Parameters: owner, repo, state (optional), labels (optional)
  • create_pull_request — Create a new pull request Parameters: owner, repo, title, head, base, body (optional)
  • merge_pull_request — Merge a pull request Parameters: owner, repo, pull_number, commit_title (optional), commit_message (optional), merge_method (optional)
  • update_pull_request — Update an existing pull request Parameters: owner, repo, pull_number, title (optional), body (optional), state (optional), base (optional)
  • list_pull_requests — List pull requests in a repository Parameters: owner, repo, state (optional), head (optional), base (optional), sort (optional), direction (optional)

Configuration

You will need 3 environment variables: GITHUB_TOKEN, LOG_LEVEL, SERVER_NAME. The server will not start without them, which is usually why the tools fail to appear on a first run. Keep credentials in your client's env block or a secrets manager rather than in a file you might commit.

  • Node.js (v16 or newer) - A GitHub personal access token with appropriate permissions

Adding it to your client

Setup follows the usual MCP pattern — install or clone the server, register it in your client's configuration file, restart the client. The configuration blocks on this page cover the common clients.

When to reach for it

This sits in the developer tooling group, where several servers overlap in what they claim to do but differ sharply once you actually set them up. GitHub's toolset — get_repository, list_repositories, create_repository and 11 more — is a fair guide to whether it matches your workflow. It is maintained by cyanheads; worth a glance at recent repository activity before you build anything load-bearing on it.

We check each listing at SyncDev against the project's documentation before it goes live — if something here drifts out of date, it is a bug worth reporting.

Caveats

  • It runs with your machine's permissions. That is convenient and also the reason to think about what you point it at before you approve a tool call.
  • With 14 tools registered it takes up a noticeable share of the context window; turn it off in projects that never touch GitHub.
  • Missing credentials fail quietly in some clients — if no tools show up, check the environment block first.
  • MCP clients confirm each tool call by default. Leave that on until you have watched what the github mcp server does with a few real requests.

Available tools

ToolWhat it does
get_repositoryGet detailed information about a specific repository Parameters: owner, repo
list_repositoriesList repositories for the authenticated user Parameters: type (optional), sort (optional)
create_repositoryCreate a new GitHub repository Parameters: name, description (optional), private (optional)
list_branchesList branches in a repository Parameters: owner, repo, protected (optional), per_page (optional)
create_branchCreate a new branch Parameters: owner, repo, branch, sha
delete_branchDelete a branch Parameters: owner, repo, branch
create_issueCreate a new issue in a repository Parameters: owner, repo, title, body (optional), labels (optional)
list_issuesList issues in a repository Parameters: owner, repo, state (optional), labels (optional)
create_pull_requestCreate a new pull request Parameters: owner, repo, title, head, base, body (optional)
merge_pull_requestMerge a pull request Parameters: owner, repo, pull_number, commit_title (optional), commit_message (optional), merge_method (optional)
update_pull_requestUpdate an existing pull request Parameters: owner, repo, pull_number, title (optional), body (optional), state (optional), base (optional), maintainer_can_modify (optional)
list_pull_requestsList pull requests in a repository Parameters: owner, repo, state (optional), head (optional), base (optional), sort (optional), direction (optional)
update_fileCreate or update a file in a repository Parameters: owner, repo, path, message, content, sha (optional), branch (optional)
create_releaseCreate a new release Parameters: owner, repo, tag_name, name (optional), body (optional), draft (optional), prerelease (optional)

How to install the GitHub MCP server

{
  "mcpServers": {
    "github": {
      "command": "node",
      "args": ["/path/to/github-mcp-server/build/index.js"],
      "env": {
        "GITHUB_TOKEN": "your_github_personal_access_token",
        "LOG_LEVEL": "info",
        "SERVER_NAME": "github-mcp-server"
      }
    }
  }
}

Configuration as documented by the project. Restart the client after saving.

Configuration

  • Node.js (v16 or newer) - A GitHub personal access token with appropriate permissions
VariableDescriptionRequired
GITHUB_TOKENCredential the server authenticates with.Yes
LOG_LEVELConfiguration value read at startup.Optional
SERVER_NAMEConfiguration value read at startup.Optional

Example prompts to try

  • Use GitHub to get repository.
  • Use GitHub to list repositories.
  • Use GitHub to create repository.

Frequently asked questions

No. This repository is deprecated. Please use the official GitHub MCP server at github/github-mcp-server.