Skip to main content
Glama

github-mcp

Self-hosted GitHub MCP server. Personal-access-token auth, stdio transport, transport-agnostic so it works with Claude Code (any account), Codex CLI, Cursor, or any MCP-compliant client. No claude.ai OAuth dependency.

Written in Python on top of FastMCP. Slots into the same install pattern as other community Python MCP servers.

Why this exists

The official github/github-mcp-server (Go, 60+ tools) is excellent if you want a kitchen-sink server tied to a single agent platform's auth flow. This one is scoped for operators who:

  • Switch between multiple Claude accounts, Codex CLI, Cursor, or other MCP clients and want the same GitHub auth across all of them.

  • Prefer a small, audited tool surface scoped to PR + repo file + Dependabot operations.

  • Want a Python install that lives alongside their other MCP servers.

If neither applies, run github/github-mcp-server instead — that's the right call.

Related MCP server: GitHub MCP Agent Server

Tool surface (v0.1.0)

Tool

Purpose

health_check

Verify the PAT is valid + report rate-limit headroom. First call when wiring up.

list_prs

List pull requests with state filter.

get_pr

Single PR with check-run status + mergeable state.

merge_pr

Squash/merge/rebase with optional branch delete.

list_dependabot_alerts

Alert sweep with severity-grouped counts.

get_file

Read a file via the Contents API.

put_file

Create or update a file via the Contents API (idempotent with SHA).

Future versions expand: workflows, releases, issues, rulesets, secret-scan alerts, branch protection, repo settings.

Secret hygiene (read this first)

v0.1.1+ reads the PAT from macOS Keychain by default. Env-var fallback is still supported for non-macOS / CI, but the Keychain path is the recommended setup because the secret never enters argv or process env — safe from ps aux, pgrep -fl, lsof, /proc/<pid>/environ, panic dumps, CI logs, debuggers, or any LLM agent running an introspection command.

# One-time setup (macOS):
security add-generic-password -s github-mcp -a "$USER" -w "<your-fine-grained-PAT>"

# Update later (e.g. after rotation):
security delete-generic-password -s github-mcp -a "$USER" 2>/dev/null
security add-generic-password -s github-mcp -a "$USER" -w "<new-PAT>"

Do NOT install with an inline --env:

# BAD — bakes the PAT into ~/.claude.json + every Claude child spawn's --mcp-config argv.
# Any pgrep / ps aux dumps it.
claude mcp add github --scope user --env GITHUB_TOKEN=github_pat_... -- <command>

# GOOD — no --env block. The server reads from Keychain at call time.
claude mcp add github --scope user -- <command>

PR/incident lineage: this hygiene path was added 2026-05-19 after a pgrep -fl chrome-devtools-mcp dumped a PAT-bearing claude process into a session transcript. See adelaidasofia/github-mcp Keychain migration (TODO: link PR once merged).

For non-macOS environments, fall back to env:

export GITHUB_TOKEN=<your-PAT>   # set in shell rc, NOT in argv

Minimum scopes for the v0.1 tool surface: Contents R/W, Pull requests R/W, Dependabot R.

Install

Open Claude Code, paste:

/plugin marketplace add adelaidasofia/github-mcp
/plugin install github-mcp@github-mcp
git clone https://github.com/adelaidasofia/github-mcp ~/.claude/github-mcp
cd ~/.claude/github-mcp
uv tool install --editable .

Or as a one-off without persistent install:

cd ~/.claude/github-mcp
uv run github-mcp

Auth

The server reads the GitHub PAT from environment, in this precedence:

  1. GITHUB_TOKEN

  2. GH_TOKEN

Fine-grained tokens recommended.

Scope matrix

Permission

Access

Unlocks

Metadata

Read

Baseline (auto-required when any other repo permission is set)

Contents

Read and write

get_file, put_file

Pull requests

Read and write

list_prs, get_pr, merge_pr

Dependabot alerts

Read

list_dependabot_alerts

Administration

Read and write

Future: rulesets, branch protection, allow_auto_merge toggle

Workflows

Read and write

Future: read/update .github/workflows/*.yml

Actions

Read and write

Future: trigger and inspect workflow runs

Secret scanning alerts

Read

Future: fleet-wide secret-scan sweep

Code scanning alerts

Read

Future: CodeQL fleet sweep

v0.1 floor: Metadata + Contents (R/W) + Pull requests (R/W) + Dependabot alerts (R) is enough to use every tool in this release.

Future-proof: granting the full table now means new MCP tools can ship without rotating the PAT. Equivalent to checking "all repository permissions" in the fine-grained PAT UI. Trade-off: broader blast radius if the token leaks. Reasonable for a personal-dev token on an encrypted laptop with FileVault; reconsider for shared or production deployments.

The MCP introspects scopes via health_check — call it after wiring up to confirm what your token actually has.

Optional: GITHUB_API_BASE for GitHub Enterprise Server. Defaults to https://api.github.com.

Wire into an MCP client

Claude Code

Add to ~/.claude/.mcp.json (or any .mcp.json in the project root):

{
  "mcpServers": {
    "github": {
      "command": "uv",
      "args": ["run", "--project", "/Users/<you>/.claude/github-mcp", "github-mcp"],
      "env": {
        "GITHUB_TOKEN": "${GITHUB_TOKEN}"
      }
    }
  }
}

Codex CLI

Add to ~/.codex/config.toml:

[mcp_servers.github]
command = "uv"
args = ["run", "--project", "/Users/<you>/.claude/github-mcp", "github-mcp"]

[mcp_servers.github.env]
GITHUB_TOKEN = "${GITHUB_TOKEN}"

Cursor

~/.cursor/mcp.json follows the Claude Code shape. Same env block.

Any other MCP-compliant client

Configure it to spawn the github-mcp command and pipe stdio. The server speaks standard MCP over stdio.

Verify

GITHUB_TOKEN=ghp_yourpat uv run github-mcp

The server will wait on stdin for MCP traffic. In another shell, exercise health_check via your client.

Test

uv pip install -e ".[dev]"
uv run pytest tests/ -v

Telemetry

This plugin sends a single anonymous install signal to myceliumai.co the first time it loads in a Claude Code session on a given machine.

What is sent:

  • Plugin name (e.g. slack-mcp)

  • Plugin version (e.g. 0.1.0)

What is NOT sent:

  • No user identifiers, names, emails, tokens, or API keys

  • No file paths, message content, or anything from your work

  • No IP address is stored after dedup processing

Why: Helps the maintainer know which plugins people actually install, so attention goes to the ones that get used.

Opt out: Set the environment variable MYCELIUM_NO_PING=1 before launching Claude Code. The hook will skip the network call entirely. Already-pinged installs leave a sentinel at ~/.mycelium/onboarded-<plugin> — delete it if you want to reset state.

License

MIT.

Available Tools

7 tools
get_fileB

Read a file from a repo via the Contents API.

ParametersJSON Schema
NameRequiredDescriptionDefault
ownerYesGitHub owner/org name.
repoYesRepository name.
pathYesFile path within the repo, no leading slash.
refNoBranch, tag, or SHA. Default: the default branch.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits. It only adds 'via the Contents API', which is minor context. It omits details like error behavior, file size limits, authentication needs, or rate limits.

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, perfectly concise sentence with no wasted words. It front-loads the purpose and fits the principle of minimal but complete specification.

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?

While an output schema exists, the description lacks behavioral context such as usage guidelines, error handling, or prerequisites. For a simple read tool, this may be acceptable but not complete.

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?

The input schema already has 100% coverage with descriptions for all 4 parameters. The description adds no extra meaning beyond what the schema provides, so a baseline 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 states the verb 'Read' and the resource 'file from a repo', making the tool's purpose immediately obvious. It distinguishes from siblings like put_file (write) and list_prs (list PRs).

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

Usage Guidelines2/5

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

The description provides no guidance on when to use or avoid this tool. It does not mention alternatives like get_pr or put_file, leaving the agent to infer context from the name alone.

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

get_prA

Fetch a single PR with its check-run status and mergeable state.

ParametersJSON Schema
NameRequiredDescriptionDefault
ownerYesGitHub owner/org name.
repoYesRepository name.
numberYesPR number.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations provided, the description carries full burden. It discloses that the tool returns check-run status and mergeable state, which is helpful. However, it does not explicitly state that it is a read-only operation or mention any constraints like rate limits or authentication needs. It is mostly transparent.

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 sentence that is front-loaded with the purpose. No wasted words; it is appropriately sized for the tool's simplicity.

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?

The tool has a provided output schema (as indicated by context), so return values are documented elsewhere. The description sufficiently explains what the tool does and includes key output fields (check-run status, mergeable state), making it complete for an agent.

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% (all three parameters have descriptions in the schema). The tool description does not add any additional parameter semantics beyond what the schema already provides, so 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 explicitly states it 'Fetches a single PR with its check-run status and mergeable state,' using a specific verb and resource. It clearly distinguishes itself from sibling tools like list_prs (which lists multiple PRs) and merge_pr (which merges a PR).

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 usage for fetching a single PR with status details, but provides no explicit guidance on when to use this tool vs alternatives (e.g., list_prs or merge_pr). No 'when not to use' or comparison to siblings is given.

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

health_checkA

Verify the GitHub PAT is valid and report current rate-limit state.

Returns the authenticated login, token scopes (when discoverable), the rate-limit ceiling, remaining requests, and the reset timestamp. Use this as the first call when wiring github-mcp into a new client.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/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 burden. It describes the returned data but does not explicitly state it is read-only or mention error behavior (e.g., if PAT is invalid). Adequate but could be more explicit.

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: the first states purpose and return values, the second provides usage guidance. Every sentence adds value with no redundancy.

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?

Given no parameters and an output schema (implied), the description covers all needed info for a health check tool. It mentions key return fields and proper use case.

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?

No parameters exist, so the schema coverage is 100%. The description adds no param details, which is fine. Baseline of 4 for zero-parameter tools.

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 states it verifies PAT validity and reports rate-limit state, listing specific returned fields. It is distinct from sibling tools that focus on file, PR, or alert operations.

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?

Explicitly recommends using this as the first call when setting up the client. It does not specify when not to use, but the context makes it clear this is a setup/validation tool.

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

list_dependabot_alertsA

List Dependabot alerts for a repo with a severity-grouped summary.

ParametersJSON Schema
NameRequiredDescriptionDefault
ownerYesGitHub owner/org name.
repoYesRepository name.
stateNo"open" | "fixed" | "dismissed" | "auto_dismissed" | "all". Default "open" — the operational case.open
per_pageNoPage size, capped at 100.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the burden. It adds the 'severity-grouped summary' behavior beyond the schema, but does not disclose pagination details, rate limits, or what happens with empty results. The description is adequate but not exhaustive.

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?

The description is a single, efficient sentence that front-loads the core purpose. It could be slightly more structured (e.g., separating the summary feature), but it is concise and informative.

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?

Given the existence of an output schema, the description does not need to explain return values. It adequately covers the key aspect of severity-grouped summary. For a list tool with well-documented parameters, the description is sufficient and leaves no major gaps.

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 baseline is 3. The description does not add any additional meaning to parameters beyond what the schema already provides (e.g., owner, repo, state, per_page).

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 states 'List Dependabot alerts for a repo with a severity-grouped summary,' specifying the verb (list), resource (Dependabot alerts), and a unique output feature (severity-grouped summary), which distinguishes it from sibling tools like list_prs.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives, such as when filtering by alert state or needing pagination behavior. There is no mention of prerequisites or exclusions.

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

list_prsC

List pull requests for a repo.

ParametersJSON Schema
NameRequiredDescriptionDefault
ownerYesGitHub owner/org name (e.g. "adelaidasofia").
repoYesRepository name.
stateNo"open" | "closed" | "all". Default "open".open
per_pageNoPage size, capped at 100 server-side.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/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 full burden. It does not disclose any behavioral traits like pagination (despite per_page parameter), authentication requirements, or rate limits. The bare description offers no safety or performance insights.

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?

Extremely concise at 5 words, but the brevity sacrifices informativeness. Every word earns its place, yet the description could be more structured (e.g., adding a note about pagination).

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?

Given the tool's 4 parameters, no annotations, and an output schema not referenced, the description omits critical context like pagination behavior or typical response size. It is incomplete for an agent to fully understand invocation effects.

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?

The input schema covers all 4 parameters with descriptions, so the description adds minimal extra meaning beyond the schema. Baseline 3 is appropriate as the description does not enhance parameter understanding.

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 the action ('List') and resource ('pull requests') and implies a repository context via the 'for a repo' phrasing. It distinguishes from sibling tools like 'get_pr' (single PR) and 'merge_pr' by its plural nature, but does not explicitly differentiate.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives (e.g., 'get_pr' for a single PR). No exclusions or prerequisites mentioned, leaving the agent to infer usage from context.

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

merge_prC

Merge a pull request.

ParametersJSON Schema
NameRequiredDescriptionDefault
ownerYesGitHub owner/org name.
repoYesRepository name.
numberYesPR number.
methodNo"squash" | "merge" | "rebase". Default "squash".squash
delete_branchNoWhether to delete the head branch after merge. Default true.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations, the description carries the burden of disclosing behavior. It only says 'Merge a pull request,' omitting side effects like branch deletion, authorization needs, rate limits, or non-idempotent nature.

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

Conciseness2/5

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

The description is excessively concise (4 words) and lacks substance, missing the opportunity to provide useful context. It is not earned conciseness but under-specification.

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?

Despite the minimal description, the input schema and output schema (present) provide adequate information for an agent to use the tool, though additional context on merge behavior would improve completeness.

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?

The input schema has 100% coverage with descriptions for all parameters, so the description adds no additional meaning; baseline 3 is appropriate.

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 'Merge a pull request.' clearly states the action and resource, distinguishing it from siblings like get_pr and list_prs, though it doesn't specify the context (GitHub) which is inferred from the schema.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives, prerequisites for merging (e.g., review status, no conflicts), or when not to use it.

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

put_fileA

Create or update a file via the Contents API. Idempotent when sha is correctly supplied for updates.

ParametersJSON Schema
NameRequiredDescriptionDefault
ownerYesGitHub owner/org name.
repoYesRepository name.
pathYesFile path within the repo, no leading slash.
contentYesUTF-8 file content. Will be base64-encoded for transport.
messageYesCommit message.
branchNoTarget branch. Default: the default branch.
shaNoRequired when updating; the current blob SHA from get_file. Omit for create.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description must disclose behavioral traits. It mentions idempotency for updates when sha is supplied, which is useful. However, it does not disclose authentication needs, rate limits, side effects, or behavior on conflicts. The description adds some context beyond the schema but is not comprehensive.

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 one concise sentence (13 words) that front-loads the core action and key trait (idempotency). There is no redundancy or unnecessary information.

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?

Given the tool has 7 parameters (5 required) and an output schema, the description is minimal. It does not explain prerequisites (e.g., repo existence, access permissions) or error conditions. While output schema exists, more context on the tool's place in workflows would improve completeness.

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 baseline is 3. The description adds marginal value by explaining that sha is 'required when updating' and idempotent behavior, but the schema already describes most parameters adequately.

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 states 'Create or update a file via the Contents API.' It uses specific verbs (create/update) and resource (file via Contents API). Among siblings like get_file (read-only) and merge_pr (PR merging), it unambiguously identifies this as the write tool for files.

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?

The description implies usage for creating or updating files, and the idempotency condition when sha is supplied. However, it does not explicitly state when to use this tool versus alternatives like get_file for reading or merge_pr for pull requests. No exclusions or when-not-to-use guidance is given.

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

TDQS

B3.4/5.0
Disambiguation5/5

Each tool targets a distinct GitHub resource or action: file read/write, PR operations (single fetch, list, merge), health check, and Dependabot alerts. No overlapping functionality.

Naming Consistency4/5

Most tools follow a verb_noun pattern (get_file, get_pr, list_prs, merge_pr, put_file), but 'health_check' deviates slightly as a noun_verb compound, and 'list_dependabot_alerts' uses a longer but still consistent verb_noun format.

Tool Count5/5

Seven tools is well-scoped for a focused GitHub MCP server, covering key areas without being overwhelming or trivial.

Completeness2/5

The tool set lacks essential GitHub operations like creating PRs, managing issues, branches, or repository settings, leaving significant gaps for common workflows.

Maintenance

ActivityActive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/adelaidasofia/github-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server