Skip to main content
Glama
bugzy-ai

GitHub MCP Server

by bugzy-ai

GitHub MCP Server

A Model Context Protocol (MCP) server for GitHub operations. This server provides tools for listing PRs, getting commit details, and comparing changes - useful for understanding what changed in a build or investigating test failures.

Installation

npm install -g @bugzy-ai/github-mcp-server

Or use with npx:

npx @bugzy-ai/github-mcp-server

Related MCP server: mcp-server-github

Configuration

Set the GITHUB_TOKEN environment variable with a token that has repo scope:

export GITHUB_TOKEN=ghp_your_token_here

Available Tools

github_list_prs

List pull requests in a repository with optional filters.

Parameters:

  • owner (required): Repository owner

  • repo (required): Repository name

  • state (optional): Filter by state - "open", "closed", or "all" (default: "all")

  • base (optional): Filter by base branch

  • sort (optional): Sort by "created", "updated", "popularity", or "long-running"

  • direction (optional): Sort direction - "asc" or "desc"

  • per_page (optional): Results per page (max 100)

  • page (optional): Page number

github_get_pr

Get detailed information about a specific pull request.

Parameters:

  • owner (required): Repository owner

  • repo (required): Repository name

  • pull_number (required): Pull request number

github_list_commits

List commits on a branch with optional date range filters.

Parameters:

  • owner (required): Repository owner

  • repo (required): Repository name

  • sha (optional): Branch name, tag, or commit SHA

  • since (optional): Only commits after this date (ISO 8601)

  • until (optional): Only commits before this date (ISO 8601)

  • per_page (optional): Results per page (max 100)

  • page (optional): Page number

github_get_commit

Get detailed information about a specific commit.

Parameters:

  • owner (required): Repository owner

  • repo (required): Repository name

  • ref (required): Commit SHA, branch name, or tag name

github_compare_commits

Compare two commits, branches, or tags.

Parameters:

  • owner (required): Repository owner

  • repo (required): Repository name

  • base (required): Base ref (branch, tag, or SHA)

  • head (required): Head ref (branch, tag, or SHA)

  • per_page (optional): Results per page (max 100)

  • page (optional): Page number

MCP Configuration

Add to your .mcp.json:

{
  "mcpServers": {
    "github": {
      "command": "npx",
      "args": ["-y", "@bugzy-ai/github-mcp-server"],
      "env": {
        "GITHUB_TOKEN": "${GITHUB_TOKEN}"
      }
    }
  }
}

License

Apache-2.0

Available Tools

5 tools
github_compare_commitsB

Compare two commits, branches, or tags to see what changed between them

ParametersJSON Schema
NameRequiredDescriptionDefault
baseYesBase ref (branch, tag, or SHA)
headYesHead ref (branch, tag, or SHA)
pageNoPage number
repoYesRepository name
ownerYesRepository owner (organization or username)
per_pageNoResults per page (max 100)

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the basic comparison operation and says nothing about the response shape (commit list vs. file diffs vs. stats), pagination behavior, or access requirements. 'What changed' is left ambiguous, which is a significant gap for a diff-oriented tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single 13-word sentence with the verb front-loaded and zero filler. Every word earns its place, and the scope of what is compared (commits, branches, tags) is stated immediately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations and no output schema, the description should disclose what the response contains — the entire purpose of a compare call is the diff representation — and it does not. Parameter coverage is complete, so the tool is callable, but an agent cannot anticipate whether results come back as a commit list, file patches, statistics, or some combination, nor how pagination affects the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all six parameters are already documented in the schema, including base/head as 'ref (branch, tag, or SHA)'. The tool description's mention that base/head can be commits, branches, or tags slightly reinforces the schema but adds little new meaning. Baseline 3 is appropriate since the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Compare') with concrete resources (commits, branches, tags) and an outcome ('see what changed between them'). The verb differentiates it from the sibling list/get tools, though no sibling is named explicitly, so it stops short of maximal distinction. Clear and unambiguous overall.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied: use this when you want to diff two refs. However, there is no explicit when-to-use, when-not-to-use, or mention of alternatives such as github_list_commits or github_get_commit, which an agent might confuse with this tool when trying to inspect changes between refs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

github_get_commitA

Get detailed information about a specific commit including file changes and stats

ParametersJSON Schema
NameRequiredDescriptionDefault
refYesCommit SHA, branch name, or tag name
repoYesRepository name
ownerYesRepository owner (organization or username)

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description conveys a read-only 'Get' operation and clarifies the return scope ('file changes and stats'), which is useful given there are no annotations. However, it does not disclose potential limitations like large diffs, auth requirements, or response truncation despite carrying the full burden without annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that states the main purpose and the key output detail ('file changes and stats') without any filler. Every part contributes meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple (3 required parameters, no nested objects, no output schema), and the description adequately summarizes what the tool returns. It could mention the response format or note about large diffs, but for this low-complexity tool, the missing details are minor.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents all three parameters (owner, repo, ref) including the ref formats. The description does not add parameter-specific detail beyond what the schema provides, so the baseline score of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Get detailed information about a specific commit') and adds distinguishing detail ('including file changes and stats'). This clearly separates it from sibling tools like list_commits (which lists) and compare_commits (which compares).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'specific commit' implies this tool is for retrieving one commit's details rather than listing or comparing commits, but no explicit when-to-use or when-not-to-use guidance is given. The agent must infer usage context from the name and wording.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

github_get_prA

Get detailed information about a specific pull request including files changed, commits, and review status

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYesRepository name
ownerYesRepository owner (organization or username)
pull_numberYesPull request number

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the behavioral burden. It communicates that the operation is a read-style retrieval and indicates the kind of data returned, but it does not mention authentication needs, rate limits, error behavior, or whether the files/commits lists are paginated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, focused sentence that front-loads the core purpose and then lists the key content areas. There is no filler or redundant repetition of schema fields.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple get-by-identifier tool with self-explanatory required parameters and no output schema, the description gives enough context about what will be returned. It lacks some behavioral context such as auth requirements and pagination, but it is otherwise sufficient for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with owner, repo, and pull_number all adequately described in the schema. The tool description adds no parameter-level detail beyond that, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the operation: getting detailed information about one specific pull request. It lists concrete result areas (files changed, commits, review status) and is distinct from the sibling github_list_prs, which is about listing PRs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use it: when you need details about a known pull request rather than a list of PRs. However, it does not explicitly name alternatives like github_list_prs or state when not to use this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

github_list_commitsB

List commits on a branch with optional date range filters

ParametersJSON Schema
NameRequiredDescriptionDefault
shaNoBranch name, tag, or commit SHA to list commits from
pageNoPage number
repoYesRepository name
ownerYesRepository owner (organization or username)
sinceNoOnly commits after this date (ISO 8601 format)
untilNoOnly commits before this date (ISO 8601 format)
per_pageNoResults per page (max 100)

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It does not mention pagination behavior, default branch behavior when sha is omitted, result ordering, or how date filters apply. These are notable gaps for a tool with no annotation-based safety or behavior hints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no filler. Every word contributes to communicating the core purpose and the key optional capability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 7 parameters and no output schema, the description is thin. It omits key operational context such as default branch handling, pagination defaults, response shape, and the relationship between since/until filters. The schema covers parameter names but not the full call context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters well. The description adds only the idea of 'branch' and 'date range filters', which mostly restates schema info and does not meaningfully deepen parameter understanding beyond the structured definitions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific action ('List commits') and resource ('on a branch') with optional date filters, which distinguishes it from siblings like PR listing and single-commit retrieval. However, it says 'on a branch' while the sha parameter explicitly accepts tags and commit SHAs, so the scope is slightly narrower than reality.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies this is the tool for listing commit history, and the optional date range filters hint at a use case. But it does not explicitly state when to prefer this over siblings like github_get_commit or github_compare_commits, nor does it mention that listing the default branch requires no sha.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

github_list_prsA

List pull requests in a repository with optional filters for state, base branch, and sorting

ParametersJSON Schema
NameRequiredDescriptionDefault
baseNoFilter by base branch (e.g., "main")
pageNoPage number
repoYesRepository name
sortNoSort by fieldupdated
ownerYesRepository owner (organization or username)
stateNoFilter by PR stateall
per_pageNoResults per page (max 100)
directionNoSort directiondesc

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It establishes that this is a read/list operation, but it does not mention pagination behavior, result shape, sorting defaults, or any rate-limit or scoping caveats. The five-word core leaves significant behavioral context undisclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single efficient sentence that front-loads the core operation and then lists the key filter dimensions. There is no filler, repetition, or unnecessary detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a list operation, the description plus a fully covered input schema gives the agent the essentials: required owner/repo and available filters. However, with no output schema and no mention of pagination or return contents, some context is missing, and the absence of any relationship to siblings leaves the tool somewhat contextually incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema fully documents owner, repo, state, sort, direction, page, per_page, and base. The description adds a high-level grouping of filters (state, base branch, sorting) but no syntax or meaning beyond the schema, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('List'), a clear resource ('pull requests in a repository'), and names the optional filters (state, base branch, sorting). This distinguishes it from siblings like github_get_pr (single PR) and github_list_commits (commits) even without explicitly naming them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use it: whenever you need a list of pull requests with optional filtering. However, it provides no explicit guidance on when not to use it or when a sibling like github_get_pr would be more appropriate, so usage guidance is only implied rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 5 tool updatesv0.1.0
    • First observedgithub_compare_commits
    • First observedgithub_get_commit
    • First observedgithub_get_pr
    • First observedgithub_list_commits
    • First observedgithub_list_prs

TDQS

A3.8/5.0

Scored across 5 tools

Disambiguation5/5

Each tool targets a clearly distinct resource and action: listing PRs, getting PR details, listing commits, getting commit details, and comparing refs. Even list_commits vs compare_commits are distinguishable by purpose, one showing branch history and the other showing changes between two refs.

Naming Consistency5/5

All tool names follow the consistent pattern github_<verb>_<noun>, using snake_case throughout. The verbs list/get/compare are predictable and match the operation each tool performs.

Tool Count5/5

Five tools is a well-scoped set for a focused GitHub read-only server covering PRs and commits. Each tool has a clear purpose and none feel redundant or unnecessary.

Completeness4/5

The set provides solid read-only coverage for exploring pull requests, commits, and diffs. Minor gaps exist, such as no direct branch listing or repository-level search, but these can be worked around using compare_commits and the included PR/commit detail endpoints.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers