Skip to main content
Glama

github-devhub-mcp

A Model Context Protocol server (built on the official Python MCP SDK) that brings GitHub workflow tools and cost-free LLM-powered engineering tools to any MCP client (Claude Desktop, Claude Code, Cursor, …).

Two halves, one server:

  • github.* — read/write tools over the GitHub REST API (typed, rate-limit-aware, paginated).

  • ai.* — LLM tools powered by the Groq free tier (no billing setup): PR review, PR summary, issue summary, issue triage, commit messages, and repo onboarding briefs.

Built to demonstrate MCP SDK integration, third-party API integration, and careful tool design — the three things this project is for.

What it can do

Tool

What it does

github.get_repo

Repo metadata (stars, language, default branch, archived…)

github.list_repos

Paginated, sorted repo list for an owner

github.list_prs

PRs filtered by state, with stats

github.get_pr

Full PR detail incl. head/base refs

github.ci_status

Check runs + combined commit status for a PR or ref

github.code_search

Code search across GitHub

github.list_issues

Issues filtered by state / labels / sort

github.get_issue

Single issue detail

github.create_issue

Create an issue (supports dry_run preview)

github.add_issue_comment

Comment on an issue/PR thread (supports dry_run)

ai.review_pr

Groq-powered code review of a PR diff

ai.summarize_pr

Concise "what/why/how/risks" PR summary

ai.summarize_issue

Issue + comment-thread summary

ai.triage_issue

Classify issue type/priority/labels with reasoning

ai.gen_commit_message

Conventional commit message from a PR

ai.explain_repo

Onboarding brief from README + file tree

meta.health

Connectivity + rate-limit + LLM ping check

Related MCP server: GitHub MCP Agent Server

Architecture

┌─────────────────────────┐         stdio (Claude Desktop / Code)
│        MCP client       │ ◄────── or streamable HTTP (--http)
└─────────────────────────┘
              │  JSON-RPC (MCPServer)
              ▼
┌────────────────────────────────────────────┐
│  github_devhub (server.py)                 │
│  ┌──────────────┐  ┌──────────────┐  ┌─────┴───┐
│  │ github.*     │  │ ai.*         │  │ meta.*  │
│  │ tools        │  │ tools        │  │ health  │
│  └──────┬───────┘  └──────┬───────┘  └─────────┘
│         ▼                 ▼
│  GithubClient      LLMProvider (Protocol)
│  (httpx,           GroqProvider (free tier)
│   rate-limit,      swap for Ollama / vLLM / any
│   structured       OpenAI-compatible endpoint)
│   errors)
└────────────────────────────────────────────┘

Quickstart

# 1. Python 3.10+; install the package (with dev deps for testing)
python -m pip install -e ".[dev]"

# 2. Configure
cp .env.example .env        # fill in GITHUB_TOKEN and GROQ_API_KEY

# 3. Run — the MCP Inspector is the easiest interactive demo
npx @modelcontextprotocol/inspector python -m github_devhub

# No Node.js installed? Same things work through the Python SDK client:
python scripts/smoke_client.py

Run with a client:

# Claude Desktop — claude_desktop_config.json
{
  "mcpServers": {
    "github-devhub": {
      "command": "python",
      "args": ["-m", "github_devhub"],
      "env": {
        "GITHUB_TOKEN": "ghp_...",
        "GROQ_API_KEY": "gsk_..."
      }
    }
  }
}

Or over HTTP:

python -m github_devhub --http   # streamable HTTP on http://localhost:8787/mcp

Getting the two free keys

  1. GitHub — a classic personal access token (repo scope) or a fine-grained token with read access to contents/pulls/issues. → https://github.com/settings/tokens

  2. Groq — free API key, no card required. → https://console.groq.com/keys

Design decisions (the resume part)

These are deliberate, and each maps to a thing engineering teams screen for:

  1. LLM-actionable errors — every failure carries a stable code, a recoverable flag, and a plain-language remediation hint (errors.py). Tool errors are returned as structured JSON the calling agent can parse and self-correct (e.g. GITHUB_404 → verify the owner/repo and retry; GROQ_429 → back off). Opaque errors are the #1 agent-killer; this server never returns one.

  2. Safety-first tool design — write tools (github.create_issue, github.add_issue_comment) default to a dry_run preview so an agent can show intent before mutating anything. Reads are read-only; page sizes are capped.

  3. Rate-limit awareness — the GitHub client parses x-ratelimit-remaining on every call, surfaces it in results, and converts an exhausted quota into a dedicated recoverable error instead of a generic 403. The health tool reports current headroom.

  4. Provider abstraction — tools depend on an LLMProvider protocol, not on Groq. Groq (free tier) is the default implementation; pointing the same server at a local Ollama or vLLM OpenAI-compatible endpoint is a config change. See llm/provider.py.

  5. Context-budget guard — every prompt is truncated to a configurable char budget before hitting the LLM, so huge diffs can't blow a model's context window (LLM_MAX_INPUT_CHARS).

  6. Protocol-level tests — the test suite drives the server through a real in-process MCP Client, so tool registration, arguments, dry-run behavior, and error serialization are verified over the protocol, not just as unit functions.

  7. Two transports — stdio for local clients, streamable HTTP for remote tools.

Testing

python -m pip install -e ".[dev]"
python -m pytest          # or just: pytest

Try these prompts

List open PRs in octocat/Hello-World, then review PR #1 for me.

Triage issue #5 in octocat/Hello-World and propose labels.

Explain the architecture of facebook/react to a new contributor.

Summarize PR #3 in octocat/Hello-World and draft a commit message for it.

Check health, then show me open issues labeled bug in octocat/Hello-World.

See DEMO.md for a scripted walkthrough.

Resume bullets

  • Built an MCP server on the official Python SDK exposing 17 typed tools across GitHub API integration and LLM-powered analysis, with stdio + streamable HTTP transports.

  • Integrated the Groq free-tier API behind a swappable LLM provider abstraction with config-bounded context budgets.

  • Designed LLM-actionable error protocol (stable codes + recoverable + remediation hints) and dry_run-safe write tools, validated by protocol-level tests over the MCP wire.

Roadmap

  • OAuth device flow instead of a static token

  • Webhook → MCP notifications for live PR/CI events

  • Per-session session pools on the HTTP transport

  • Cached embeddings for repo-wide semantic search

Available Tools

17 tools
ai.explain_repoA

Generate a newcomer's onboarding brief for a repository from its README and top-level file tree.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYes
ownerYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It explicitly states the data sources (README and top-level file tree) and the nature of the output (an onboarding brief). 'Generate' implies a non-destructive read-only operation, giving sufficient transparency for an AI agent. It lacks explicit auth or rate-limit caveats, but these are not central for a generation 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?

The description is a single, focused sentence that conveys all necessary information without fluff. Every word earns its place, making it easy to parse and act upon.

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 the simple input schema (owner/repo) and the presence of an output schema, the description is complete. It explains what the tool does, from what inputs, and the output type. No additional context about return values is needed since an output schema exists. The tool's scope is fully clarified.

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 0%, so the description must compensate. It does not explicitly describe the owner and repo parameters, but their names are self-explanatory within the GitHub context. The description's mention of 'repository' indirectly anchors the parameters, but it could be more explicit about how owner and repo identify the target. This is adequate but not outstanding.

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 tool generates an onboarding brief for a repository using its README and top-level file tree. The verb 'Generate' is specific, and the resource ('repository') is clearly defined. It differentiates itself from sibling tools like github.get_repo and ai.summarize_pr by focusing on newcomer onboarding.

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 phrase 'newcomer's onboarding brief' provides clear context for when to use this tool—when introducing someone to a repository. While it doesn't explicitly mention alternatives or exclusions, the use case is well-understood and distinct from siblings like code search or PR review.

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

ai.gen_commit_messageA

Generate a conventional commit message from a pull request's commits and changed files.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYes
ownerYes
pull_numberYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 bears full responsibility. It clearly states that the tool consumes a pull request's commits and changed files to generate a message, which implies a read-only analysis and no side effects. However, it does not explicitly mention permissions, rate limits, or that no modifications are made to the PR, leaving some behavioral uncertainty.

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 entire description is a single, front-loaded sentence with no redundant words. It states the action and the source data efficiently.

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 tool's simplicity—3 self-explanatory parameters and an output schema—the description covers the core functionality. It mentions the input (PR commits and changed files) and the output type (conventional commit message). It could benefit from a note on when to use it or prerequisites, but these are already scored in other dimensions.

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 provides only parameter names with zero descriptions. The description connects the parameters to 'a pull request,' implying that owner, repo, and pull_number identify the target PR. This adds some semantic context, but it doesn't explain each parameter's format or constraints beyond what their names suggest.

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 the specific verb 'Generate' and clearly identifies the resource ('a conventional commit message') and the source ('a pull request's commits and changed files'). This distinguishes it from sibling tools like ai.summarize_pr and ai.review_pr, which have different outputs.

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 the intended use case—when a commit message is needed from a PR—but does not explicitly contrast with alternatives like ai.summarize_pr or provide when-not-to-use guidance. The niche is clear, but no explicit usage boundaries are given.

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

ai.review_prB

Run an LLM code review on a pull request (fetches the diff, commits, and description).

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYes
focusNo
ownerYes
max_filesNo
pull_numberYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.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 transparency burden. It does disclose that the tool fetches the diff, commits, and description, which implies data access beyond the provided parameters. However, it does not mention that the operation is read-only, potential latency or cost, or any limitations on review scope.

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 conveys the core purpose and a useful detail about fetched data. No filler or redundant content.

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 five parameters and no schema descriptions, the description is insufficient for an agent to understand parameter semantics, especially 'focus' and 'max_files'. It also lacks guidance on when to use this tool over similar PR-related tools. The presence of an output schema helps but does not make up for these gaps.

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

Parameters1/5

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

The schema has zero descriptions for parameters, and the description does not compensate. While owner, repo, and pull_number are self-explanatory by name, 'focus' and 'max_files' are left undefined. The description only hints at what data is fetched, not how parameters shape the review.

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 tool's function with a specific verb ('Run') and resource ('LLM code review on a pull request'). The parenthetical 'fetches the diff, commits, and description' adds useful scope and distinguishes it from sibling tools like github.get_pr which only fetches PR metadata.

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 context is implied: an agent should use this when an LLM code review is needed. However, there is no explicit comparison to ai.summarize_pr or guidance on when to choose one over the other, nor any stated alternatives or exclusions.

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

ai.summarize_issueA

Summarize an issue and its comment thread so a newcomer can jump in.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYes
ownerYes
issue_numberYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/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 a high-level action ('summarize') but does not mention that the operation is read-only, any permission requirements, output format, or edge cases (e.g., no comments). This is a significant gap for a tool with no annotation safety 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 understanding the tool's purpose and audience, making it highly concise and well-structured.

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 simple 3-parameter tool with an output schema, the description is minimally adequate. However, the lack of annotations and absence of any behavioral nuance (e.g., read-only nature, response type) leaves the agent without a complete picture. The output schema covers return values, but behavior and safety are under-specified.

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

Parameters2/5

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

Schema description coverage is 0%, and the description does not compensate by explaining the parameters. The parameter names (owner, repo, issue_number) are self-explanatory, but the description adds no meaning beyond the schema, leaving the agent to infer how they relate to the summarization task.

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 ('summarize') and a clear resource ('issue and its comment thread'), and the purpose ('so a newcomer can jump in') adds context. It is clearly distinct from siblings like github.get_issue (fetches raw issue) and ai.summarize_pr (summarizes pull requests, not issues).

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 phrase 'so a newcomer can jump in' indicates when the summary is useful, giving a clear usage context. However, it does not explicitly name alternatives or state when not to use this tool (e.g., when raw issue data is needed), though the purpose makes it fairly obvious.

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

ai.summarize_prA

Produce a concise summary of a pull request: what it does, how, and notable changes.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYes
ownerYes
pull_numberYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 only states the output content and does not clarify that this is a read-only AI operation, mention authentication or any side effects, or describe failure modes for missing PRs.

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 action and content scope. No unnecessary words or repetition are present.

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 presence of an output schema, the return format is covered elsewhere. The description clearly states the purpose and summary content, and the required parameters are evident from the schema. It lacks notes on edge cases or prerequisites, but for a simple summarization tool this is adequate.

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

Parameters2/5

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

Schema description coverage is 0%, and the description adds no parameter-related meaning. The names owner, repo, and pull_number are self-explanatory, but the description does not explicitly map them to the target PR or provide any additional format/constraint information.

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 ('Produce a concise summary') and names the resource ('a pull request') plus the content scope ('what it does, how, and notable changes'). This clearly distinguishes it from sibling tools like github.get_pr (raw PR data) and ai.review_pr (evaluation).

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 summarizing a pull request but does not explicitly state when to use this tool instead of alternatives such as github.get_pr or ai.review_pr. No exclusions or alternative context are provided.

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

ai.triage_issueA

Classify an issue (type, priority, suggested labels) and explain why.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYes
ownerYes
issue_numberYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description bears the burden of behavioral disclosure. It reveals the outputs (classification and explanation) but does not mention whether the tool modifies anything, how decisions are made, or confidence levels. This is acceptable for a read-only classifier but lacks depth.

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, front-loaded with the action ('Classify an issue') and concise, covering the main purpose and outputs without unnecessary filler.

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 tool with three simple parameters and an output schema, the description covers the core function and outputs. However, it lacks explicit usage guidance and parameter semantics, which are important for an AI agent to invoke it correctly in all contexts.

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

Parameters2/5

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

Schema description coverage is 0%, and the description adds no parameter details. Although parameter names (owner, repo, issue_number) are self-explanatory, the description does not elaborate on their roles, constraints, or how they relate to the classification task.

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 tool's function: classifying an issue and specifying outputs (type, priority, suggested labels) and explanation. This distinguishes it from sibling tools like ai.summarize_issue, which focus on summarization rather than classification.

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 guidance is implied by the verb 'classify' and the issue context, but the description does not explicitly state when to use it versus alternatives like ai.summarize_issue or github.get_issue. No exclusions or alternative calls are mentioned.

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

github.add_issue_commentA

Post a comment on an issue or PR thread. Set dry_run=true to preview without writing.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
repoYes
ownerYes
dry_runNo
issue_numberYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 carries the full burden of behavioral disclosure. It does reveal the dry_run behavior (preview without writing) which adds transparency. However, it does not explicitly state that posting a comment is a permanent write action, mention authentication requirements, or describe any side effects beyond the write itself.

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 two concise sentences, front-loaded with the primary action and immediately followed by the most relevant behavioral nuance (dry_run). Every word earns its place with no redundancy.

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?

The tool has 5 parameters and an output schema, and no annotations. The description covers the core purpose and dry_run, but lacks explicit usage guidance, alternative distinctions, and deeper behavioral context such as auth or side effects. For a simple mutation tool this is adequate but not exceptionally 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?

Schema coverage is 0% (no parameter descriptions in the schema). The description adds meaning for dry_run ('preview without writing') and clarifies that 'issue_number' can refer to a PR thread. However, it does not explain body, owner, or repo, leaving the agent to infer their roles from standard GitHub knowledge.

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 ('Post') and clearly identifies the resource ('a comment on an issue or PR thread'). It unambiguously distinguishes this tool from siblings like create_issue and get_issue by focusing on commenting on existing threads.

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 provides clear context that this tool is for posting comments on issue or PR threads, and it highlights the dry_run option as a preview mode. It does not explicitly name alternatives or exclusions, but the purpose is so specific that the intended usage is clear.

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

github.ci_statusA

Get CI status (check runs + combined commit status) for a PR or a commit ref.

ParametersJSON Schema
NameRequiredDescriptionDefault
refNo
repoYes
ownerYes
pull_numberNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/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. The verb 'Get' clearly indicates a read-only operation, and the phrase 'check runs + combined commit status' explicitly states what data is returned. It does not mention authentication requirements or edge cases, but for a read-only getter this is adequate.

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 wasted words. It conveys the core purpose, target scope, and included data types in under 20 words.

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?

An output schema exists, so return values are covered by structured data. The description provides the essential context: what the tool does, when to use it, and the target types. It omits edge cases like providing both pull_number and ref, but given the schema coverage, the description is largely 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 description adds semantic meaning by clarifying that the tool works 'for a PR or a commit ref', which maps to the optional pull_number and ref parameters. However, it does not explain that owner/repo are required, nor does it address the relationship between pull_number and ref (e.g., mutual exclusivity). With 0% schema coverage, this is only partial compensation.

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 operation ('Get CI status') and the specific resource ('check runs + combined commit status') with a defined scope ('for a PR or a commit ref'). This sharply distinguishes it from sibling tools like github.get_pr, which fetches PR details, and github.list_issues, which lists issues.

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 provides clear usage context by specifying two target types: PR or commit ref. Although it does not explicitly name alternative tools or say 'use this instead of X', the scope is precise enough for an agent to select this tool when CI status is needed.

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

github.create_issueA

Create an issue. Set dry_run=true to preview the request without writing anything.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNo
repoYes
ownerYes
titleYes
labelsNo
dry_runNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations provided, the description carries the burden of behavioral disclosure. It explicitly states that dry_run=true previews the request without writing anything, revealing that the default action writes. However, it does not disclose authentication needs, side effects, or error handling, leaving some gaps.

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 two sentences long, front-loading the core action and then adding the dry_run caveat. It contains no filler or redundant phrasing, making it highly efficient.

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 simple mutation tool, the description is adequate but minimal. It omits context about required repository parameters, potential failure modes, and the relationship to other issue operations. The output schema covers return values, so this is not a critical gap, but the description alone leaves some context unspecified.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It only explains dry_run, while owner, repo, title, body, and labels receive no added meaning beyond their names. The names are self-explanatory, but the description fails to provide any additional semantic context for these parameters.

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 opens with 'Create an issue,' which is a specific verb+resource statement. It clearly distinguishes this tool from siblings like get_issue and list_issues, which are read operations. The dry_run note is an additional clarification without obscuring the primary purpose.

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 when an issue needs to be created, but it does not explicitly contrast with alternatives (e.g., add_issue_comment for comments). There is no 'when-not' guidance or mention of prerequisite conditions like repository ownership.

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

github.get_issueB

Get an issue (not a PR) by number, with metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYes
ownerYes
issue_numberYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/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 says 'Get ... with metadata,' which vaguely implies a read operation, but does not explicitly state that it is read-only, what metadata is returned, or any error/edge-case behavior. This is a significant gap.

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, front-loaded with the verb and resource, and contains no fluff. Every word earns its place.

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's simplicity and the presence of an output schema, the description is adequate but not complete. It distinguishes from PRs but does not address potential use cases or alternatives further. The 'with metadata' phrase is vague, and the lack of annotations leaves behavioral aspects uncovered.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It only reinforces 'issue_number' via 'by number' but does not explain 'owner' or 'repo' or any parameter constraints or formats. The parameter names are self-explanatory, but the description adds little value beyond the schema.

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 action 'Get' and the resource 'issue', and explicitly distinguishes from PRs by saying 'not a PR', which differentiates it from github.get_pr. This is a specific and unambiguous purpose.

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 that this tool is for issues rather than PRs, but it does not explicitly name alternatives like github.get_pr, github.list_issues, or github.create_issue. The guidance is present but only implicit.

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 full detail on a pull request: title, state, author, stats, head/base refs.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYes
ownerYes
pull_numberYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It discloses exactly which data will be returned (title, state, author, stats, head/base refs), making the read-only behavior clear. It omits details like authentication or error behavior, but those are less critical for a simple GET.

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, front-loaded with the action ('Get full detail'), and every word contributes to conveying the tool's purpose. There is zero filler or redundancy.

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 tool's low complexity, the combination of the description, the self-explanatory parameters, and the presence of an output schema is nearly complete. The description states what is returned, and the output schema defines the structure. It could mention that it returns a single pull request object, but this is not a significant gap.

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

Parameters2/5

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

Schema description coverage is 0%, and the description provides no explanation of owner, repo, or pull_number. Although the parameter names are highly self-explanatory in the GitHub context, the description adds no semantic value beyond the bare schema.

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 the specific verb 'Get' and resource 'pull request', and enumerates the exact fields returned (title, state, author, stats, head/base refs). This clearly differentiates it from sibling tools like list_prs (list) and get_issue (issue).

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 'full detail' implies this tool is for fetching a single pull request in depth, but it does not explicitly contrast with alternatives like github.list_prs or github.get_issue, nor does it state when not to use it. Usage is implied rather than explicit.

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

github.get_repoB

Get repository metadata: description, language, stars, default branch, archived status.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYes
ownerYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the transparency burden. It enumerates the returned metadata fields, giving useful insight into the output scope. However, it omits details on authentication requirements, rate limits, or error behavior (e.g., repository not found).

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, concise sentence with a colon-separated list. It is front-loaded with the action and includes concrete details without any fluff or repetition.

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 simple read operation with an output schema, the description is minimally adequate. It lacks usage guidance and parameter clarity, but the output schema likely covers return details. The description could be improved by adding when-to-use context and clarifying parameter formats.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It does not explain the parameters (owner, repo), leaving ambiguity about expected formats (e.g., whether owner is a username or organization). The parameter names are self-evident, but no additional semantics are provided.

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 'Get repository metadata' and lists specific metadata fields (description, language, stars, default branch, archived status). This distinguishes it from sibling tools like get_pr (pull request metadata) and list_repos (multiple repositories).

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 explicit guidance on when to use this tool versus alternatives. It does not mention when to prefer get_repo over list_repos or get_pr, nor does it provide exclusions or use-case context.

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

github.list_issuesB

List issues in a repository, optionally filtered by state and labels.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
repoYes
sortNocreated
ownerYes
stateNoopen
labelsNo
per_pageNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavior. It mentions filtering by state and labels, but fails to disclose pagination (page, per_page), sorting (sort), default state 'open', or that it returns a list. These are important for an agent to correctly invoke the tool and interpret results.

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 efficiently conveys purpose and key filtering capability. No filler or redundant information.

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 7 parameters, no annotations, and no schema descriptions, a short sentence is insufficient. It omits pagination behavior, sorting options, default states, and label formatting, making it incomplete for reliable use by an agent.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It explains only 'state' and 'labels' (as filters), but leaves page, per_page, sort, owner, and repo without additional semantic context. The schema itself only provides titles and defaults, so many parameters remain underspecified.

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 tool's function: 'List issues in a repository'. The verb 'list' and resource 'issues' distinguish it from sibling tools like github.get_issue (singular) and github.list_prs (pull requests), and the mention of filtering by state and labels adds scope.

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 listing issues with optional filtering, but does not explicitly state when to choose this tool over alternatives such as github.get_issue or github.list_prs. No when-not-to-use or alternative references are provided, so guidance is only implicit.

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, filtered by state.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
repoYes
ownerYes
stateNoopen
per_pageNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/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 accurately states the core behavior but fails to disclose pagination behavior, the default state (open), or that it is a read-only operation. These details are left to the schema, which is minimal, making the transparency adequate but incomplete.

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 concise sentence, front-loaded with the primary action. It contains no filler or redundant information, making it very efficient.

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?

The tool is simple and an output schema exists, but the description leaves gaps about valid state values and pagination parameters (page/per_page). The defaults in the schema partially compensate, yet an agent may still struggle with correct invocation without further guidance.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It only clarifies the 'state' parameter via 'filtered by state,' but leaves owner, repo, page, and per_page without semantic explanation. The description does not meaningfully help an agent understand these parameters.

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 tool's purpose: 'List pull requests in a repository, filtered by state.' It uses a specific verb (List), resource (pull requests), scope (repository), and filter (state), which distinguishes it from sibling tools like get_pr that retrieve a single 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 provides clear context for when to use the tool (listing PRs in a repo) but does not explicitly mention alternatives or exclusions, such as 'use get_pr for a single PR' or 'use list_issues for issues only.' Usage is implied rather than explicitly guided.

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

github.list_reposA

List repositories for an owner (user or org), sorted and paginated.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
sortNofull_name
ownerYes
per_pageNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

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

With no annotations, the description carries full burden. It mentions 'sorted and paginated', which is a behavioral trait, but doesn't disclose details like default sort order, pagination semantics, authentication requirements, or read-only nature. This is minimal transparency for a tool with no 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, concise sentence that front-loads the primary action and scope. No fluff or redundancy, every word earns its place.

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?

The tool is a simple list operation with an output schema (not shown), so the description doesn't need to explain return values. However, it lacks details on authentication, public vs private repos, or pagination limits. It's adequate but with gaps in usage context that could affect correct invocation.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It only references 'owner', 'sorted', and 'paginated' vaguely, without explaining the parameters' meanings, valid sort values, or pagination configuration. The parameter names are self-explanatory, but the description adds little beyond that.

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 tool's function: 'List repositories for an owner (user or org)', using a specific verb and resource. It distinguishes from siblings like get_repo (single repo) and list_prs (pull requests) by specifying the resource type and scope.

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 gives clear context on when to use: listing repositories for a given owner. It doesn't explicitly mention alternatives, but the scope is unambiguous given the sibling tools. It lacks explicit exclusions but provides sufficient context for an agent to select it for repository listing tasks.

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

meta.healthA

Check connectivity: GitHub API rate limit and a live Groq LLM ping.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/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 discloses that the tool performs network checks against GitHub and Groq, which is meaningful behavioral context. However, it does not explicitly state that it is read-only or describe potential error handling if services are unreachable, though the health-check nature implies safety.

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, directly starts with the main purpose, and includes only essential details. Every word earns its place, with no redundancy or fluff.

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 (zero parameters, health check), and the description covers the core functionality. An output schema exists, so return values need not be described. While it could mention that this is a read-only diagnostic, the description is sufficient for the tool's low complexity.

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?

The input schema has zero parameters, so the baseline is 4 per the rubric. The description does not need to explain parameters, as there are none. The description adds no parameter information, but none is required.

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 'Check connectivity' and names specific resources (GitHub API rate limit and live Groq LLM ping). This clearly differentiates from sibling tools that operate on GitHub PRs/issues or AI summaries, so the purpose is unambiguous.

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 connectivity checks but does not explicitly state when to use this tool versus alternatives, nor does it mention exclusions. No guidance is given on when not to use it, so it relies on the agent to infer context from the tool name and sibling group.

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. Dates show when Glama detected each change.

  1. 17 tool updatesv0.1.0
    • First observedai.explain_repo
    • First observedai.gen_commit_message
    • First observedai.review_pr
    • First observedai.summarize_issue
    • First observedai.summarize_pr
    • First observedai.triage_issue
    • First observedgithub.add_issue_comment
    • First observedgithub.ci_status
    • First observedgithub.code_search
    • First observedgithub.create_issue
    • First observedgithub.get_issue
    • First observedgithub.get_pr
    • First observedgithub.get_repo
    • First observedgithub.list_issues
    • First observedgithub.list_prs
    • First observedgithub.list_repos
    • First observedmeta.health

TDQS

A3.6/5.0
Disambiguation5/5

Each tool targets a distinct resource and action—PRs, issues, repos, code search, CI, and AI analysis are cleanly separated. Even overlapping AI tools (summary vs review vs triage) have clearly defined different outputs.

Naming Consistency4/5

Most tools follow a verb_noun pattern (get_pr, create_issue, list_repos, summarize_pr) with domain prefixes. Minor exceptions like ci_status and health are noun phrases, but the overall pattern is consistent and predictable.

Tool Count4/5

17 tools is slightly above the ideal range, but each tool serves a distinct purpose in the GitHub + AI workflow. No redundant tools; the count feels intentional even if a bit heavy.

Completeness3/5

The surface is strong for reading and analyzing (repos, issues, PRs, code, CI) and supports creating issues and comments. However, there are no update/delete/merge operations for issues or PRs, leaving common management workflows incomplete.

Maintenance

ActivityMaintained
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/VINITVINAY-Tech/mcp_project'

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