Skip to main content
Glama

GitHub MCP Server (@sumirati/mcp-github)

A modern, 2026 AI-native Model Context Protocol (MCP) server for GitHub REST API, engineered for autonomous AI agents and developer workflows.

npm version License: MIT GitHub


What makes v2 Unique: The 2026 5-Tool Hybrid Standard

In early MCP servers, exposing 50–100+ eager tool definitions flooded every LLM turn with thousands of redundant schema tokens ("System Prompt Tax") and degraded reasoning coherence.

Architecturally aligned with @sumirati/mcp-gitlab, @sumirati/mcp-github solves this with a 5-Tool Hybrid Surface:

  • Glama TDQS Coherence Tier A (5/5): By exposing exactly 5 tools to the client, the server sits in the ideal 3–15 tool coherence sweet spot.

  • Ultra-Lean System Prompt Tax: Drops schema overhead from ~14.7k tokens down to ~450 tokens (97% reduction), preserving context windows and maximizing LLM prompt-cache hits.

  • Zero-Hop Hourly Drivers: The 3 operations developers and agents use constantly (get_file_contents, get_repository, get_commit) remain eager tools for instant zero-hop execution.

  • 100% Platform Access on Demand: The entire platform surface of 79 actions across 13 domains is accessible on-demand via dynamic action discovery (github_find_actions $\rightarrow$ github_execute_action), supporting both JSON and Markdown output (format: "json" | "markdown").

  • Resilient Fallback: If an agent directly invokes any catalog action name (e.g. list_pull_requests), the server dynamically executes it with full input validation and projection.

LLM Prompt Context (~450 tokens total):
├── 1. github_find_actions(query, [domain], [format])     [Meta Discovery]
├── 2. github_execute_action(action, params, [format])   [Meta Dynamic Execution]
├── 3. get_file_contents(owner, repo, path)               [Eager Daily Driver #1]
├── 4. get_repository(owner, repo)                        [Eager Daily Driver #2]
└── 5. get_commit(owner, repo, ref)                       [Eager Daily Driver #3]

Under the hood (Dynamic Registry):
└── 79 Curated Actions across 13 Domains (with 70%+ token reduction projections)

Related MCP server: GitHub Dev Copilot

Core Capabilities Across 13 Domains

  1. Enterprise Observability & Diagnostics: End-to-end API latency, authentication verification, remaining rate limits, and read-only status (system_health_check).

  2. Repositories & Governance: Full repository lifecycle, branch management, branch protection rules (get_branch_protection), file reading (auto Base64-decoded), atomic multi-file commits, and repository topics.

  3. Pull Requests & Code Reviews: PR lifecycle (create, update, merge), review comments, inline diff reviews, and two-stage diff inspection with lockfile filtering.

  4. Issues & Milestones: Issue tracking, milestone assignment, progress notes, and label management.

  5. CI/CD & GitHub Actions: Workflow inspection, workflow runs, job status, build artifacts (list_workflow_run_artifacts, get_workflow_run_artifact), log tailing, run cancel/retry, and action triggers.

  6. Releases & Tags: Release publishing, tag creation, asset inspection, and release notes management.

  7. Actions Variables & Secrets: Manage repository and environment variables for automated CI/CD pipelines.

  8. Collaborators & Permissions: Audit and manage repository collaborators and permission levels.

  9. Security & Dependabot: Audit Dependabot security alerts and vulnerability reports.

  10. Gists & Snippets: Full gist lifecycle for sharing code templates and configurations.

  11. Webhooks & Integrations: Audit repository webhooks and subscribed event triggers.


Quickstart & Installation

Option 1: Run with npx (No installation needed)

npx -y @sumirati/mcp-github

Option 2: Install Globally

npm install -g @sumirati/mcp-github
mcp-github

Option 3: Local Clone

git clone https://github.com/sumirati/mcp-github.git
cd mcp-github
npm install
npm test
npm start

Environment Configuration

Variable

Required

Default

Description

GITHUB_PERSONAL_ACCESS_TOKEN

Yes

—

GitHub Personal Access Token (classic or fine-grained)

GITHUB_TOKEN

No

—

Alternative token variable name

GITHUB_API_URL

No

https://api.github.com

Base API URL (or GitHub Enterprise Server)

GITHUB_READ_ONLY

No

false

Enable 3-tier read-only mode (true, 1, yes)

GITHUB_EXPOSE_ALL_TOOLS

No

false

Set to true (or GITHUB_EXPOSE_LEGACY_TOOLS=true) to expose all 79 tools directly on ListTools for legacy clients


Client Configuration

Google Antigravity / Claude Desktop / Cursor

Add to your MCP configuration file (mcp_config.json or claude_desktop_config.json):

{
  "mcpServers": {
    "github": {
      "command": "npx",
      "args": ["-y", "@sumirati/mcp-github"],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "<your-github-token>",
        "GITHUB_READ_ONLY": "false"
      }
    }
  }
}

Using local clone:

{
  "mcpServers": {
    "github": {
      "command": "node",
      "args": ["/path/to/mcp-github/index.js"],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "<your-github-token>",
        "GITHUB_READ_ONLY": "false"
      }
    }
  }
}

Complete Action Catalog Reference (75 Actions)

All 75 actions feature strict input validation and 2-tier field-mask projections:

1. The 5 Client-Exposed Tools (Hybrid Mode)

Tool

Type

Description

github_find_actions

Meta

Search and discover available GitHub operations across all 13 domains with compact parameter schemas

github_execute_action

Meta

Execute any discovered GitHub platform action with input validation and token-optimized projection

get_file_contents

Eager

Read raw file contents (auto Base64 decoded) or directory listings at any ref without cloning

get_repository

Eager

Retrieve repository metadata, visibility, description, default branch, clone URLs, and topics

get_commit

Eager

Inspect Git commit details, author info, and token-capped file diffs

2. Repositories & Branches (11 actions)

Action

Description

Mutating?

search_repositories

Search public or accessible GitHub repositories by query

No

create_repository

Create a new repository for the authenticated user or organization

Yes

fork_repository

Fork a repository to your account or specified organization

Yes

list_branches

List branches with commit SHAs and protection status

No

get_branch

Get detailed branch metadata, protection rules, and head commit

No

create_branch

Create a new git branch from an existing branch or SHA

Yes

delete_branch

Delete a git branch (destructive)

Yes

create_or_update_file

Create or update a single file with a commit

Yes

delete_file

Delete a file from a repository with a commit

Yes

push_files

Atomically commit multiple file additions, edits, or deletions

Yes

3. Commits & Statuses (4 actions)

Action

Description

Mutating?

list_commits

List chronological commit history filtered by branch, date, or author

No

get_commit_status

Get combined CI status checks and commit statuses for a ref

No

create_commit_status

Post a status check result to a specific commit SHA

Yes

4. Pull Requests & Reviews (11 actions)

Action

Description

Mutating?

list_pull_requests

List PRs filtered by state (open, closed, all), base branch, or sort

No

get_pull_request

Get detailed PR metadata, mergeability status, head, and base refs

No

get_pull_request_diff

Get token-capped unified diff of PR changes with max line limits

No

create_pull_request

Create a new pull request with head, base, title, and body

Yes

update_pull_request

Update title, body, state, or base branch of an existing PR

Yes

merge_pull_request

Merge a pull request with merge, squash, or rebase strategy

Yes

list_pull_request_comments

List inline review comments on a pull request

No

create_pull_request_comment

Create an inline review comment on a specific diff line

Yes

create_pull_request_reply

Reply directly to an existing inline review comment thread

Yes

list_pull_request_reviews

List formal reviews submitted on a pull request

No

create_pull_request_review

Submit an APPROVE, REQUEST_CHANGES, or COMMENT review

Yes

5. Issues & Labels (8 actions)

Action

Description

Mutating?

list_issues

List repository issues filtered by state, labels, assignee, or milestone

No

get_issue

Get detailed issue description, assignees, labels, and state

No

create_issue

Create a new issue with title, body, labels, and assignees

Yes

update_issue

Modify title, body, state (open/closed), or assignees

Yes

list_issue_comments

List conversation comments on an issue

No

create_issue_comment

Post a comment note to an issue

Yes

list_labels

List all repository labels with names and color hex codes

No

create_label

Create a new label with name, color, and description

Yes

6. Milestones (4 actions)

Action

Description

Mutating?

list_milestones

List repository milestones with open/closed counts and due dates

No

get_milestone

Get milestone metadata and progress statistics

No

create_milestone

Create a new milestone with title, description, and due date

Yes

update_milestone

Update milestone title, description, state, or due date

Yes

7. Collaborators & Roles (4 actions)

Action

Description

Mutating?

list_collaborators

List collaborators with role names (admin, push, pull)

No

get_collaborator_permission

Check permission level of a specific user on a repository

No

add_collaborator

Invite or add a collaborator with designated permission

Yes

remove_collaborator

Remove collaborator access from a repository

Yes

8. Actions Variables & Secrets (6 actions)

Action

Description

Mutating?

list_actions_variables

List repository Actions variables

No

get_actions_variable

Get variable value and metadata

No

create_actions_variable

Create a new Actions variable

Yes

update_actions_variable

Update existing Actions variable value

Yes

delete_actions_variable

Delete an Actions variable

Yes

list_actions_secrets

List repository Actions secrets names (values redacted)

No

9. GitHub Actions & CI (8 actions)

Action

Description

Mutating?

list_workflows

List GitHub Actions workflows defined in .github/workflows/

No

list_workflow_runs

List workflow execution runs filtered by branch, event, or status

No

get_workflow_run

Get detailed execution status, conclusion, and timing

No

list_workflow_run_jobs

List individual jobs in a workflow run with step conclusions

No

get_job_logs

Safely tail failure logs from a workflow job with line truncation

No

trigger_workflow

Dispatch a manual workflow_dispatch run on a ref

Yes

cancel_workflow_run

Cancel an in-progress workflow run

Yes

rerun_workflow

Re-run a failed or completed workflow

Yes

10. Releases & Git Tags (5 actions)

Action

Description

Mutating?

list_releases

List project releases with changelogs and asset metadata

No

get_release

Get specific release notes and downloadable assets

No

create_release

Publish a release tied to a git tag with markdown release notes

Yes

list_tags

List git tags with commit hashes

No

create_tag

Create an annotated git tag pointing to a SHA

Yes

11. Webhooks, Gists, Security & User Context (18 actions)

  • Webhooks & Topics (4 actions): list_repository_topics, set_repository_topics, list_webhooks, create_webhook.

  • Gists (5 actions): list_gists, get_gist, create_gist, update_gist, delete_gist.

  • Security (1 action): list_dependabot_alerts.

  • User & Orgs (4 actions): get_authenticated_user, get_user, list_user_organizations, list_accessible_repositories.


Token Economy & Output Projection Filters

Raw GitHub REST API responses are notoriously heavy (often 30KB–100KB per Issue or PR). @sumirati/mcp-github enforces strict token economy:

  • System Prompt Tax Reduction (>93% savings): Shrinks MCP tool definition footprint from ~14.7k tokens down to ~450 tokens.

  • Recursive Output Projection Filter (projectOutput): Automatically strips redundant metadata fields (_links, avatar_url, gravatar_id, node_id, site_admin, user navigation URLs, internal API links, and null/empty fields) before payloads reach the LLM, guaranteeing 70%+ output token savings.

  • Unified Diff Truncation: PR and commit diffs are capped by line count (max_diff_lines, default: 400).

  • Safe Log Tailing: CI workflow job logs extract the failure tail (tail_lines, default: 200) instead of megabyte log dumps.


Acknowledgements & Lineage

This project incorporates architectural concepts, schemas, and patterns from:

See NOTICE for complete third-party attribution details.


License

This project is licensed under the MIT License — Copyright (c) 2026 sumirati@buggycode.net.

Available Tools

5 tools
get_commitGet CommitA
Read-onlyIdempotent

Get detailed commit metadata, author information, message, and unified git diffs for a specific commit SHA or reference. Eager daily driver tool for reviewing code modifications, patches, or investigating regressions. Output diffs are token-optimized and automatically truncated to max_diff_lines (default: 400 lines).

ParametersJSON Schema
NameRequiredDescriptionDefault
refYesCommit SHA, branch name, or tag reference to inspect
repoYesRepository name (e.g. 'Hello-World' or 'mcp-github')
ownerYesRepository owner (user or organization, e.g. 'octocat' or 'buggycode')
file_pathNoOptional file path filter: only include diff and stats for this single file
max_diff_linesYesMaximum unified diff lines to return across files to conserve LLM context tokens (default: 400)

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, and non-destructive behavior, so the safety profile is covered. The description adds genuinely useful context beyond that: diffs are token-optimized and automatically truncated to max_diff_lines (default 400). It stops short of saying whether truncation is signaled in the output, which is the one open behavioral question.

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?

Three sentences, no redundancy, and the core capability is front-loaded ahead of the usage hint and the truncation caveat. Every sentence carries distinct information.

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?

With no output schema, the description carries the return-value burden and does so (metadata, author, message, diffs). Annotations cover safety. The remaining gap is behavior under truncation for very large commits, but nothing essential for correct invocation is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3; the description earns an extra point by explaining the intent behind max_diff_lines (context-token conservation) and reinforcing that ref accepts SHA, branch, or tag. It doesn't describe the optional file_path filter, but the schema covers that fully.

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?

States a specific verb and resource ('Get detailed commit metadata... and unified git diffs') scoped by 'a specific commit SHA or reference'. This clearly separates it from siblings like get_file_contents and get_repository, which target files and repositories rather than a commit ref.

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

Usage Guidelines4/5

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

Gives clear usage context ('reviewing code modifications, patches, or investigating regressions'), which tells the agent when this tool is appropriate. However, it names no alternatives or when-not conditions, so routing versus siblings such as get_file_contents is left to inference.

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

get_file_contentsGet File ContentsA
Read-onlyIdempotent

Read current file contents or list directory entries from a repository at a specified git ref without cloning. Automatically decodes Base64 file contents into plain text UTF-8 in 'decoded_content'. Eager daily driver tool for inspecting source code, configuration files, and directory layouts.

ParametersJSON Schema
NameRequiredDescriptionDefault
refNoGit reference (branch name, tag, or commit SHA) to read from (default: default branch / HEAD)
pathYesRelative path to file or directory in repository (e.g. 'README.md', 'src/index.js', or '' for root)
repoYesRepository name (e.g. 'Hello-World' or 'mcp-github')
ownerYesRepository owner (user or organization, e.g. 'octocat' or 'buggycode')

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare the safe read-only, idempotent, non-destructive profile, so the bar is lower. The description still adds real value by disclosing that no clone is required and that Base64 payloads are auto-decoded into a 'decoded_content' field, which materially affects how the agent consumes the result.

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

Conciseness4/5

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

Three dense sentences that are front-loaded with the core capability before the decoding detail and usage framing. 'Eager daily driver tool' is mildly promotional filler, but everything else earns its place.

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?

With no output schema, the description partially compensates by naming the 'decoded_content' return field and the directory-listing mode. Combined with the annotations and full schema coverage, an agent has enough to call it correctly, though pagination and error behavior are unmentioned.

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 all four parameters (owner, repo, path, ref) are already documented with examples and defaults. The description reinforces the dual file/directory semantics of 'path' and the ref concept but adds no syntax or format detail beyond the schema, so the baseline 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?

States a specific verb (read/list) and resource (repository file or directory) at a git ref, and covers both operating modes explicitly. An agent can immediately distinguish it from get_repository (metadata) and get_commit (history) without opening any schema.

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

Usage Guidelines4/5

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

Gives concrete usage context ('inspecting source code, configuration files, and directory layouts') and labels itself a frequent 'daily driver' tool, which tells the agent this is the default choice for reading repo content. It stops short of naming when NOT to use it or pointing at a sibling alternative.

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

get_repositoryGet RepositoryA
Read-onlyIdempotent

Get comprehensive repository metadata, visibility, description, default branch, clone URLs, star count, and topics for an owner/repo. Eager daily driver tool for verifying repository configuration and existence.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYesRepository name (e.g. 'Hello-World' or 'mcp-github')
ownerYesRepository owner (user or organization, e.g. 'octocat' or 'buggycode')

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered by structured data. The description adds the useful behavioral note that this is intended as a frequent, cheap verification call, but says nothing about authentication requirements, rate limits, or failure behavior for nonexistent repos.

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

Conciseness4/5

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

Two compact sentences with the returned payload front-loaded before the usage note. The phrase "Eager daily driver tool" is mildly promotional filler, but the rest is dense and earns its space.

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?

With no output schema, the description carries the burden of describing return values and does so by enumerating the metadata fields. For a two-parameter, fully-annotated read tool this is essentially complete; only the error behavior for a missing repo is unaddressed.

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% — both owner and repo are documented with concrete examples in the schema itself. The description only restates "for an owner/repo" and adds no format, casing, or validation detail beyond what the schema provides, so the baseline of 3 applies.

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 gives a specific verb (get) and resource (repository) and enumerates the returned fields — metadata, visibility, description, default branch, clone URLs, star count, topics — so the agent knows exactly what comes back. It does not explicitly contrast itself with siblings like get_file_contents or get_commit, but the resource is distinct enough that confusion is unlikely.

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?

"Eager daily driver tool for verifying repository configuration and existence" implies the usage context (existence/configuration checks) but names no alternatives and states no when-not conditions. Usage is implied rather than prescribed, which is the definition of a 3.

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

github_execute_actionExecute GitHub ActionA

Execute any supported GitHub action from the 75-action catalog by action name with parameters. Requires the exact action name (discovered via github_find_actions) and its corresponding argument dictionary. Output is automatically compressed with strict token projection filters (stripping URLs, avatar links, empty hashes, node_ids) to guarantee 70%+ token savings. Mutating actions are blocked when running in read-only mode (GITHUB_READ_ONLY=true).

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesExact name of the GitHub action to execute (e.g. 'create_pull_request', 'list_issues', 'trigger_workflow', 'create_branch')
formatYesOutput format: 'json' (default) or 'markdown' (compact human/LLM-readable text)json
paramsNoParameters dictionary for the action matching its parameter schema
parametersNoAlias for params (for cross-client compatibility)

TDQS

A4.5/5.0
Behavior5/5

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

Goes well beyond the annotations by disclosing that output is lossily compressed via strict token projection filters (URLs, avatar links, empty hashes, node_ids stripped) with a claimed 70%+ token saving, and that mutation is environment-gated. That output-truncation disclosure is exactly the kind of behavior an agent cannot infer from readOnlyHint/destructiveHint alone.

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

Conciseness4/5

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

Three dense sentences that are front-loaded with the execution contract before moving to prerequisites and output behavior; little waste. The '70%+ token savings' claim borders on promotional but still conveys expected output shrinkage.

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?

With no output schema, the description carries the return-value burden and does so adequately via the format enum and compression note, and it covers the dynamic-parameter discovery path. It leaves error behavior for blocked mutating actions and partial-schema mismatches unstated, which is a minor gap.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning for the polymorphic 'params' object by framing it as the argument dictionary matching the selected action's own schema and pointing to github_find_actions as the way to learn that schema. The static schema cannot express that per-action contract, so the description earns above baseline.

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?

States a specific verb (execute) and resource (a named action from the 75-action catalog) with the dispatch mechanism spelled out: action name plus argument dictionary. It is clearly separable from github_find_actions, which is named as the discovery step rather than the executor.

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

Usage Guidelines4/5

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

Gives an explicit prerequisite (the exact action name must come from github_find_actions) and an explicit environmental exclusion (mutating actions blocked under GITHUB_READ_ONLY=true). It does not clarify when to prefer this generic dispatcher over typed siblings like get_file_contents or get_repository, which overlap with catalog actions.

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

github_find_actionsFind GitHub ActionsA
Read-onlyIdempotent

Search and discover available GitHub actions in the 75-action catalog by keyword query or domain filter. Use this discovery tool first whenever you need to perform an action outside the 3 eager daily drivers (e.g. managing PRs, issues, releases, workflows, collaborators, webhooks, variables, security alerts). Returns matching action names, domain categories, mutating flags, descriptions, and complete parameter schemas so you can construct the call for github_execute_action.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoSearch keyword query to match against action names, domains, or descriptions (e.g. 'pull request', 'issue comment', 'webhook', 'deploy', 'dependabot')
domainNoOptional domain filter to restrict discovery to a specific functional category
formatYesOutput format: 'json' (default, structured object) or 'markdown' (compact human/LLM-readable text table)json

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, so safety is covered. The description adds real value beyond that: catalog size (75 actions), the existence of 3 eager daily drivers, and the fact that results include mutating flags plus complete parameter schemas for building the follow-up call.

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?

Two sentences, zero waste, front-loaded with the core purpose and then the usage rule. The dense second sentence is entirely load-bearing (scope, trigger condition, examples, return shape).

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

Completeness5/5

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

There is no output schema, but the description enumerates what is returned (action names, domain categories, mutating flags, descriptions, full parameter schemas), so an agent knows exactly what it gets back. Combined with the annotations, nothing needed to call this correctly is missing.

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 query, domain, and format in detail. The description restates the two filtering modes but adds no syntax, matching behavior, or edge-case guidance beyond what the enum and parameter descriptions provide; baseline 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?

States a specific verb+resource ('Search and discover available GitHub actions in the 75-action catalog') with the two selection axes (keyword query or domain filter). It clearly distinguishes itself from the sibling github_execute_action by being the discovery step that feeds it.

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

Usage Guidelines5/5

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

Explicitly says 'Use this discovery tool first whenever you need to perform an action outside the 3 eager daily drivers' and lists the domains that qualify (PRs, issues, releases, workflows, collaborators, webhooks, variables, security alerts). It also names the downstream tool to construct the call for, github_execute_action.

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. 45 tool updatesv2.1.0
    • Removedcancel_workflow_run
    • Removedcreate_branch
    • Removedcreate_issue
    • Removedcreate_issue_comment
    • Removedcreate_label
    • Removedcreate_or_update_file
    • Removedcreate_pull_request
    • Removedcreate_pull_request_comment
    • Removedcreate_pull_request_reply
    • Removedcreate_release
    • Removedcreate_repository
    • Removedcreate_tag
    • Removeddelete_file
    • Removedfork_repository
    • Removedget_authenticated_user
    • Addedget_commit
    • Changedget_file_contents2 fields changed
      • changedInput schema / properties / path / description
        Previous value: -"Path to the file or directory in repository (e.g. 'README.md' or 'src/index.js')"New value: +"Relative path to file or directory in repository (e.g. 'README.md', 'src/index.js', or '' for root)"
      • changedInput schema / properties / ref / description
        Previous value: -"Branch name, tag, or commit SHA (default: default branch / HEAD)"New value: +"Git reference (branch name, tag, or commit SHA) to read from (default: default branch / HEAD)"
    • Removedget_issue
    • Removedget_job_logs
    • Removedget_pull_request
    • Removedget_pull_request_diff
    • Removedget_release
    • Removedget_user
    • Removedget_workflow_run
    • Addedgithub_execute_action
    • Addedgithub_find_actions
    • Removedlist_accessible_repositories
    • Removedlist_branches
    • Removedlist_issue_comments
    • Removedlist_issues
    • Removedlist_labels
    • Removedlist_pull_request_comments
    • Removedlist_pull_requests
    • Removedlist_releases
    • Removedlist_tags
    • Removedlist_user_organizations
    • Removedlist_workflow_run_jobs
    • Removedlist_workflow_runs
    • Removedlist_workflows
    • Removedmerge_pull_request
    • Removedrerun_workflow
    • Removedsearch_repositories
    • Removedtrigger_workflow
    • Removedupdate_issue
    • Removedupdate_pull_request
  2. 43 tool updatesv1.0.0
    • First observedcancel_workflow_run
    • First observedcreate_branch
    • First observedcreate_issue
    • First observedcreate_issue_comment
    • First observedcreate_label
    • First observedcreate_or_update_file
    • First observedcreate_pull_request
    • First observedcreate_pull_request_comment
    • First observedcreate_pull_request_reply
    • First observedcreate_release
    • First observedcreate_repository
    • First observedcreate_tag
    • First observeddelete_file
    • First observedfork_repository
    • First observedget_authenticated_user
    • First observedget_file_contents
    • First observedget_issue
    • First observedget_job_logs
    • First observedget_pull_request
    • First observedget_pull_request_diff
    • First observedget_release
    • First observedget_repository
    • First observedget_user
    • First observedget_workflow_run
    • First observedlist_accessible_repositories
    • First observedlist_branches
    • First observedlist_issue_comments
    • First observedlist_issues
    • First observedlist_labels
    • First observedlist_pull_request_comments
    • First observedlist_pull_requests
    • First observedlist_releases
    • First observedlist_tags
    • First observedlist_user_organizations
    • First observedlist_workflow_run_jobs
    • First observedlist_workflow_runs
    • First observedlist_workflows
    • First observedmerge_pull_request
    • First observedrerun_workflow
    • First observedsearch_repositories
    • First observedtrigger_workflow
    • First observedupdate_issue
    • First observedupdate_pull_request

TDQS

A3.8/5.0

Scored across 5 tools

Disambiguation3/5

The discover/execute pair is clearly distinct from each other, and the three get_* tools are distinct among themselves. However, github_execute_action can perform any of the 75 catalog actions, which likely includes the read operations covered by get_file_contents, get_repository, and get_commit, creating overlap. The 'eager daily driver' framing helps, but an agent must still decide between the direct tool and the generic executor.

Naming Consistency3/5

All names use snake_case, but two conventions coexist: the meta tools use a github_ namespace prefix (github_find_actions, github_execute_action) while the direct tools use bare get_* verbs (get_file_contents, get_repository, get_commit). The get_* trio is internally consistent, but the mixed prefixing and differing verb styles make the set only partially predictable.

Tool Count4/5

Five tools is a compact, well-scoped surface for what is effectively a 75-action GitHub catalog, avoiding the bloat of exposing every action individually. The three eager tools are somewhat redundant given execute_action, but they justify themselves as high-frequency shortcuts. The count is reasonable and no tool feels extraneous.

Completeness4/5

The catalog-plus-executor design claims coverage of PRs, issues, releases, workflows, collaborators, webhooks, variables, and security alerts, which is broad lifecycle coverage for a GitHub server. Discovery via github_find_actions fills the gap of not knowing action names. Minor gaps exist in that nothing is eager for write operations and catalog completeness depends entirely on the advertised 75 actions being real and correct.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    Not graded
    maintenance
    Enables AI agents to interact with GitHub repositories through the GitHub REST API for managing files, issues, and repository metadata. It supports both read operations like searching code and write operations such as creating repositories and updating issue comments.
    9
    -
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to interact with GitHub via MCP, managing repositories, issues, PRs, and analyzing repository health through tools like list_repositories, read_issues, create_issue, comment_on_pr, and analyze_repo_health.
    -