mcpField
M
mcp-github-cli

mcp-github-cli

Local
github.com/michaelnealeDeveloper Tools4Updated 78w ago

About mcp-github-cli

mcp-github-cli is an MCP server for working with GitHub through the GitHub CLI and GitHub GraphQL and REST APIs. It serves users who need to inspect or maintain repositories from an MCP client, with tools for profiles, repositories, issues, pull requests, and custom API requests.

Key features

  1. 01Retrieve authenticated user information
  2. 02Get repository, user, and contributor details
  3. 03Query issues and pull requests
  4. 04Search repositories and read file contents
  5. 05Create issues and pull requests
  6. 06Run custom GraphQL and REST requests

Use cases

  1. 01Inspect repository details, branches, and commits
  2. 02Review issue and pull request status
  3. 03Create issues or pull requests from an MCP client

MCP support

The MCP server provides tools for GitHub GraphQL and REST APIs through the GitHub CLI. It requires `gh` to be installed and authenticated before use.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"github-cli": {
"command": "uvx",
"args": [
"mcp-github-cli"
]
}
}
}
Run commanduvx mcp-github-cli

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
pypimcp-github-cli

Tools

No tool list yet

Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.

Details

From the project README

mcp-github-cli

MCP server that provides focused GraphQL and REST API tools for interacting with GitHub. This server offers a streamlined set of powerful tools that leverage GitHub's APIs to provide rich data and functionality.

Usage

uvx mcp-github-cli

Will run from PyPI. This can be used in goose or claude.

Prerequisites

  1. Install the GitHub CLI (gh) if not already installed:

    • macOS: brew install gh
    • Linux: sudo apt install gh
    • Windows: winget install GitHub.cli
  2. Authenticate with GitHub:

    gh auth login
    

Test

uv run python main.py --test

This will run a comprehensive test suite that verifies:

  • Authentication status with GitHub
  • User information retrieval (gh_get_me)
  • GraphQL query functionality (viewer info)
  • REST API repository search
  • GraphQL repository information retrieval
  • REST API branch listing

The test output provides a good demonstration of the capabilities of the different tools.

Usage from source

Running from CLI (Goose, or to try it)
uv --directory /path/to/mcp-github-cli run python main.py

Features

This MCP server focuses on providing powerful, focused tools that leverage GitHub's GraphQL and REST APIs:

User Information
  • gh_get_me(): Get detailed information about the authenticated user
GraphQL Tools

GraphQL tools provide rich, nested data in a single request:

  • gh_graphql_repo_info(owner_repo): Get comprehensive repository information
  • gh_graphql_user_profile(username): Get detailed user profile data
  • gh_graphql_pull_requests(owner_repo, limit, state): Get pull requests with reviewers and status
  • gh_graphql_issues(owner_repo, limit, state, labels): Get issues with comments and labels
  • gh_graphql_repo_contributors(owner_repo, limit): Get repository contributors and their commits
  • gh_custom_graphql(query, variables): Execute a custom GraphQL query
REST API Tools

REST tools provide specific functionality for common operations:

  • gh_rest_search_repos(query, limit): Search for repositories
  • gh_rest_repo_contents(owner_repo, path, ref): Get repository contents
  • gh_rest_create_issue(owner_repo, title, body, labels): Create an issue
  • gh_rest_create_pr(owner_repo, title, body, head, base, draft): Create a pull request
  • gh_rest_branches(owner_repo): List repository branches
  • gh_rest_commits(owner_repo, branch, limit): List repository commits
  • gh_rest_api(endpoint, method, data, query_params): Execute a custom REST API request

Examples

Here are examples of using these tools:

User Information
# Get authenticated user information
gh_get_me()
GraphQL Examples
# Get repository information
gh_graphql_repo_info("block/goose")

# Get user profile
gh_graphql_user_profile("octocat")

# Get open pull requests
gh_graphql_pull_requests("block/goose", 5, "OPEN")

# Get issues with specific labels
gh_graphql_issues("block/goose", 10, "OPEN", ["bug", "help wanted"])

# Custom GraphQL query
gh_custom_graphql("""
query {
  viewer {
    login
    name
  }
}
""")
REST API Examples
# Search for repositories
gh_rest_search_repos("language:python stars:>1000", 5)

# Get file contents
gh_rest_repo_contents("block/goose", "README.md")

# Create an issue
gh_rest_create_issue("your-username/your-repo", "Bug report", "There's a bug", ["bug"])

# List branches
gh_rest_branches("block/goose")

# Custom REST API request
gh_rest_api("repos/block/goose", "GET", query_params={"sort": "updated"})

Building and Publishing

  1. Update version in pyproject.toml:
[project]
version = "x.y.z"  # Update this
  1. Build the package:
# Clean previous builds
rm -rf dist/*

# Or build in a clean environment using uv
uv venv .venv
source .venv/bin/activate
uv pip install build
python -m build
  1. Publish to PyPI:
# Install twine if needed
uv pip install twine

# Upload to PyPI
python -m twine upload dist/*

License

MIT

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.