Skip to main content
Glama
alijahak

github-review-queue-mcp

by alijahak

github-review-queue-mcp

ci

An MCP server for your GitHub review queue. From Claude, ChatGPT or any MCP client, you can find the pull requests waiting on you, read them, check CI, comment, and submit reviews.

It runs two ways:

  • Locally over stdio, with your token.

  • As a remote server with its own OAuth 2.1 authorization server: PKCE, dynamic client registration, a consent screen per client, audience-bound tokens and refresh-token rotation. GitHub is used only to sign the user in.

> What's waiting on my review?
  list_review_requests -> 3 pull requests
> Summarize alice-org/app#7 and tell me why CI is red.
  get_pull_request, list_pull_request_files, get_pull_request_checks
  -> "test" failed: 2 failed (test_a, test_b)

Tools

Tool

What it does

readOnly

destructive

idempotent

openWorld

list_review_requests

Open PRs where your review is requested (optionally one repo)

yes

no

yes

yes

get_pull_request

Title, author, branches, size, mergeability, latest review per reviewer, description

yes

no

yes

yes

list_pull_request_files

Changed files with +/- counts, optional diffs (capped per file)

yes

no

yes

yes

get_pull_request_checks

CI on the head commit: overall state, counts, each failing check with link and summary

yes

no

yes

yes

comment_on_pull_request

Posts a comment as you

no

no

no

yes

submit_pull_request_review

APPROVE / REQUEST_CHANGES / COMMENT as you

no

yes

no

yes

  • Reads and writes are separate tools.

  • Every tool has a title, all four hints, validated input and structured output.

  • An approval is marked destructive on purpose: it can satisfy branch protection and start an auto-merge, so clients always ask before submitting one.

  • Errors say what to do next: "GitHub's rate limit for this account is used up. It resets at ...", "Not found: owner/repo#7. Either it doesn't exist or this GitHub account can't see it."

Related MCP server: github-pr-control-mcp

Local use (stdio)

Create a fine-grained token with Pull requests: read and write, Commit statuses: read and Checks: read, or use gh auth token.

Claude Code:

claude mcp add review-queue -e GITHUB_TOKEN=github_pat_... -- npx -y github:alijahak/github-review-queue-mcp

Claude Desktop, Cursor and others (mcpServers config):

{
  "mcpServers": {
    "review-queue": {
      "command": "npx",
      "args": ["-y", "github:alijahak/github-review-queue-mcp"],
      "env": { "GITHUB_TOKEN": "github_pat_..." }
    }
  }
}

Remote server (OAuth)

MCP client ──OAuth 2.1 + PKCE──▶ this server ──"Sign in with GitHub"──▶ github.com
     │                              │ (its own authorization server)
     └── Bearer <this server's token> ──▶ /mcp ──▶ api.github.com (with the user's GitHub token, server-side only)
  1. Create a GitHub OAuth App. Set its callback URL to https://<your-host>/github/callback.

  2. Run the server:

docker build -t review-queue-mcp .
docker run -p 3000:3000 \
  -e PUBLIC_URL=https://<your-host> \
  -e GITHUB_CLIENT_ID=... -e GITHUB_CLIENT_SECRET=... \
  -e TOKEN_ENCRYPTION_KEY="$(openssl rand -base64 32)" \
  -e TRUST_PROXY=1 \
  review-queue-mcp
  1. Add https://<your-host>/mcp as a custom connector in Claude or ChatGPT.

Variable

PUBLIC_URL

Public origin. The MCP endpoint is $PUBLIC_URL/mcp.

GITHUB_CLIENT_ID, GITHUB_CLIENT_SECRET

From the OAuth App

TOKEN_ENCRYPTION_KEY

32 random bytes, base64; encrypts stored GitHub tokens

GITHUB_SCOPE

Default repo (private repos too); public_repo limits it to public ones

GITHUB_OAUTH_URL, GITHUB_API_URL

For GitHub Enterprise Server

TRUST_PROXY

Number of proxies in front, for per-IP rate limiting

PORT

Default 3000

State is in memory: restarting signs everyone out, which fails safe. For several replicas, put the store (src/http/store.ts) in Redis or Postgres.

Security model

  • No token passthrough.

    • Clients get this server's own tokens: random, stored only as SHA-256 hashes, valid for 1 hour, and bound to $PUBLIC_URL/mcp (RFC 8707 resource; any other audience is refused).

    • The user's GitHub token never leaves the server, and it is stored encrypted (AES-256-GCM).

  • Consent per client. Any client can register itself (that's how MCP clients connect), and every one of them gets this server's consent screen before the user is sent to GitHub. Without it, a malicious client could ride on an earlier GitHub approval of this server's single OAuth App: the confused-deputy problem in the MCP security best practices.

  • The OAuth details:

    • PKCE S256 between client and server, and again between server and GitHub.

    • Exact redirect-URI matching.

    • Authorization codes that work once.

    • A one-time state toward GitHub.

    • A CSRF token on the consent form.

    • Registration accepts only https or loopback redirect URIs.

  • Refresh rotation with reuse detection. Each refresh issues a new pair. Presenting a used refresh token revokes everything issued from that sign-in.

  • Tenant isolation by construction. A tool can only get a GitHub client from the user ID inside the verified access token. Tests sign in two users and check that every GitHub call carries the right user's token.

  • Bounded calls.

    • Explicit timeouts.

    • One retry for reads on 502/503/504, and none for writes, since a timed-out POST may have succeeded.

    • Capped output sizes.

    • Rate limits on the OAuth endpoints.

Directory readiness

It passes mcp-readiness with no findings, both for its tool definitions and for its OAuth discovery (401 with resource_metadata, RFC 9728 and RFC 8414 metadata, S256, DCR, refresh):

$ npm run readiness
Verdict
  Claude Connectors Directory  ready (0 errors, 0 warnings)
  ChatGPT app directory        ready (0 errors, 0 warnings)
  MCP spec and hygiene         ready (0 errors, 0 warnings)

The test suite runs the same checks. A directory listing still needs things outside the code: a hosted instance, a privacy policy, a support contact, and a reviewer test account.

Tests

npm test runs 27 tests against a fake GitHub (OAuth with PKCE verification, plus REST) and two users:

  • the whole sign-in: discovery, registration, consent, GitHub, callback, token, tools;

  • tenant isolation;

  • no passthrough, and encryption at rest;

  • wrong PKCE verifier, code reuse, a token for another resource;

  • refresh rotation and reuse revocation;

  • revocation and expiry;

  • consent denial, a forged CSRF value, HTML escaping of a hostile client name, insecure redirect URIs;

  • GitHub error mapping, and the retry policy.

scripts/smoke.mjs is a read-only check against the real GitHub API:

$ GITHUB_TOKEN=$(gh auth token) node scripts/smoke.mjs modelcontextprotocol/typescript-sdk 2943
list_review_requests: N open review request(s)
get_pull_request: [v1.x] fix(stdio): release consumed ReadBuffer storage | +50/-1 in 2 files | reviews: 0
list_pull_request_files: src/shared/stdio.ts, test/shared/stdio.test.ts
get_pull_request_checks: success {"success":9,"failure":0,"pending":0,"skipped":1,"neutral":0}
error path: Not found: octocat/this-repo-does-not-exist#1. Either it doesn't exist or this GitHub account can't see it.

License

MIT

Available Tools

6 tools
comment_on_pull_requestComment on a pull requestA

Posts a comment on a pull request's conversation, as you. Everyone with access to the repository can see it.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesComment text (Markdown)
repoYesRepository as "owner/name", for example "octocat/hello-world"
numberYesPull request number

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
urlYes
created_atYes

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false and openWorldHint=true. The description adds real context beyond those flags: the comment is attributed "as you" (it uses the caller's identity) and is visible to everyone with repository access, which matters for a public write.

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

Conciseness5/5

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

A single front-loaded sentence with no filler; the identity and visibility facts are the two most decision-relevant details and both 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?

An output schema exists, so return values need no explanation, and annotations cover the mutation safety profile. The description covers authorship and audience but omits practical constraints an agent might want, such as whether the comment can be edited or retracted.

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

Parameters3/5

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

Schema description coverage is 100%, with body, repo format, and PR number all documented in the schema itself. The description adds no format, length, or Markdown guidance, so the baseline of 3 applies.

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

Purpose4/5

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

States a specific verb and resource ("Posts a comment on a pull request") and narrows it to the "conversation", which implicitly separates it from submit_pull_request_review. It stops short of naming that sibling explicitly, so an agent must infer the distinction.

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?

There is no when-to-use guidance, no condition that selects this over submit_pull_request_review, and no note about prerequisites such as write access. Usage is only implied by the verb.

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

get_pull_requestGet a pull requestB
Read-onlyIdempotent

Returns a pull request's summary: title, author, branches, size, mergeability, requested reviewers, each reviewer's latest review, and the description (first 4,000 characters).

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYesRepository as "owner/name", for example "octocat/hello-world"
numberYesPull request number

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
baseYes
bodyYes
headYes
repoYes
draftYes
stateYes
titleYes
authorNo
mergedYes
numberYes
commitsYes
reviewsYes
head_shaYes
additionsYes
deletionsYes
created_atYes
updated_atYes
changed_filesYes
body_truncatedYes
mergeable_stateNo
requested_reviewersYes

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is fully covered. The description adds one genuinely useful behavioral note not in the annotations: the PR description is truncated to the first 4,000 characters. It says nothing about behavior for a missing/inaccessible PR or permission requirements, so this is additive but thin.

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?

A single front-loaded sentence that opens with the action and then lists returned fields in a scannable way; no filler and no repetition of the title. The comma-enumerated field list is long but every item carries information.

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

Completeness4/5

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

With an output schema present, return values need not be re-explained, and the annotations cover the read-only safety profile, so the remaining load is light. The one meaningful omission is sibling routing guidance for an agent choosing among several pull-request readers.

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

Parameters3/5

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

Schema description coverage is 100%, with both 'repo' (owner/name format) and 'number' documented in the schema itself. The description adds no additional parameter meaning, so the baseline of 3 applies.

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

Purpose4/5

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

The verb 'Returns' plus the resource 'a pull request's summary' is specific, and the enumerated fields (title, author, branches, size, mergeability, reviewers, description) clearly scope what 'summary' means. It does not explicitly contrast itself with sibling readers like get_pull_request_checks or list_pull_request_files, so it stays just short of 5.

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?

There is no statement of when to use this tool versus the siblings that also read pull-request data (checks, files, review requests). The agent must infer routing from names alone, which is exactly the gap usage guidance is supposed to close.

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

get_pull_request_checksGet CI statusA
Read-onlyIdempotent

Returns the CI result for a pull request's latest commit: an overall state, counts per outcome, and every failing check with its link and summary.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYesRepository as "owner/name", for example "octocat/hello-world"
numberYesPull request number

Output Schema

ParametersJSON Schema
NameRequiredDescription
countsYes
failingYes
overallYes
head_shaYes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint, so the safety profile is fully covered by structured data. The description adds the useful scoping fact that results are for the latest commit (not historical runs), but says nothing about auth requirements, rate limits, or behavior for PRs with no checks. With annotations carrying the safety burden, this is adequate but not rich.

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

Conciseness5/5

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

A single sentence that front-loads the resource and scope ('CI result for a pull request's latest commit') before enumerating outputs. No filler, no repetition of the title, and every clause carries information.

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

Completeness4/5

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

For a simple two-parameter read tool with an output schema, rich annotations, and full schema coverage, the description is nearly complete — return values need not be spelled out since an output schema exists, yet it summarizes them anyway. The only gap is the absence of routing guidance against sibling tools, which is a minor omission for this complexity level.

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% and both parameters (repo, number) are fully documented with pattern and range constraints, so the baseline of 3 applies. The description's mention of 'a pull request' only loosely implies the number parameter and adds no syntax or format detail 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 states a specific verb (Returns) and a precisely scoped resource (the CI result for a pull request's latest commit). It enumerates the returned content — overall state, per-outcome counts, failing checks with link and summary — which cleanly distinguishes it from siblings like get_pull_request or list_pull_request_files.

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?

There is no explicit when-to-use or when-not-to-use guidance, and no alternative tool is named. An agent can infer that this retrieves CI status for a PR, but nothing tells it to prefer this over get_pull_request for status questions or how it relates to the review-related siblings.

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

list_pull_request_filesList changed filesA
Read-onlyIdempotent

Lists the files a pull request changes, with additions and deletions per file. Set include_patch to also get each file's diff (first 3,000 characters per file).

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYesRepository as "owner/name", for example "octocat/hello-world"
limitNoHow many files to return (1-100, default 50)
numberYesPull request number
include_patchNoInclude each file's diff (default false)

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYes
filesYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the bar is lower, and the description adds a genuinely useful behavioral fact the annotations cannot carry: patches are truncated to the first 3,000 characters per file. It does not discuss rate limits or pagination semantics, but the truncation caveat is real added value.

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 tight sentences with the core behavior front-loaded and the optional patch detail second. No filler, no redundancy with the schema.

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?

An output schema exists, so return-value documentation is unnecessary, and annotations cover the safety profile. The description supplies what remains missing: what the list contains (files with per-file add/delete counts) and the patch truncation caveat.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description goes beyond the schema by explaining what include_patch actually yields (each file's diff) and the truncation behavior the schema does not mention. It does not clarify 'limit' beyond the schema's own description, so it is not a full 5.

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 states a specific verb and resource ('Lists the files a pull request changes') and adds the returned detail ('additions and deletions per file'), which is more than the name alone conveys. It does not explicitly distinguish itself from siblings like get_pull_request, but the file-level scope is concrete enough for an agent to select it.

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?

There is no explicit when-to-use guidance, no prerequisites, and no mention of alternatives such as get_pull_request for PR metadata. The only conditional advice concerns include_patch, which is parameter usage rather than tool-selection guidance.

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

list_review_requestsList my review requestsA
Read-onlyIdempotent

Lists open pull requests where your review is requested, most recently updated first. Optionally limited to one repository.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoNoRepository as "owner/name", for example "octocat/hello-world"
limitNoHow many pull requests to return (1-50, default 20)

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYes
pull_requestsYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, openWorld, so safety is covered. The description adds genuinely new behavioral context not in structured fields: results are filtered to OPEN PRs only and returned 'most recently updated first', which tells the agent about state filtering and ordering.

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 tight sentences, zero filler. The primary behavior (what is listed and how it is ordered) is front-loaded, with the optional narrowing trailing.

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

Completeness4/5

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

With a full output schema, complete annotations, and fully documented parameters, the description gives enough to call the tool correctly and correctly interpret the open-state/sort semantics. Only minor details such as pagination behavior are absent.

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

Parameters3/5

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

Schema description coverage is 100%, with repo format and limit range/default fully documented in the schema. The description only restates that the search can be limited to one repository, adding no format or semantic detail beyond the schema, so the baseline of 3 applies.

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

Purpose5/5

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

States a specific verb (lists), a precisely scoped resource (open PRs where your review is requested), and the sort order. This is clearly distinguishable from siblings like list_pull_request_files or get_pull_request, which do not list review-request queues.

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 purpose implies when to use it (when you need your review queue), and the optional repo narrowing is noted, but no alternatives or exclusions are named. An agent must infer that this is the review-inbox tool rather than one of the other PR listers.

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

submit_pull_request_reviewSubmit a reviewA
Destructive

Submits a review on a pull request, as you: APPROVE, REQUEST_CHANGES, or COMMENT. REQUEST_CHANGES and COMMENT need a body.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNoReview text (Markdown); required unless the event is APPROVE
repoYesRepository as "owner/name", for example "octocat/hello-world"
eventYesThe review verdict
numberYesPull request number

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
urlYes
stateYes
submitted_atNo

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false, idempotentHint=false and openWorldHint=true, so the mutation and irreversibility profile is covered structurally. The description adds the conditional body rule tied to the event, which is useful, but nothing beyond the schema and annotations about auth needs, rate limits, or what happens on re-submission.

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?

A single compact sentence with the enumerable actions front-loaded, no filler. The phrasing "as you:" is slightly awkward, but it costs nothing in length and the requirement note is appended 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?

With an output schema present and rich annotations, the description need not explain return values or safety, and it covers the core requirement rule. It is adequate for correct invocation, missing only alternative-tool routing detail.

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

Parameters3/5

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

Schema description coverage is 100%, so all four parameters (repo, number, event, body) are already documented in the schema, including the body's conditionality. The description restates the body requirement without adding syntax or format detail the schema lacks, so baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource ("Submits a review on a pull request") and enumerates the three possible verdicts, so the agent understands the operation precisely. It doesn't explicitly contrast itself with the sibling comment_on_pull_request, so sibling differentiation is left to inference.

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

Usage Guidelines3/5

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

The description implies when each event applies through the enum values and notes that REQUEST_CHANGES and COMMENT need a body, which is actionable context. However, it gives no explicit guidance on choosing this tool over comment_on_pull_request or the preconditions (permissions, whether a review already exists).

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

Tool Schema Changelog

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

  1. 6 tool updatesv0.1.0
    • First observedcomment_on_pull_request
    • First observedget_pull_request
    • First observedget_pull_request_checks
    • First observedlist_pull_request_files
    • First observedlist_review_requests
    • First observedsubmit_pull_request_review

TDQS

A3.8/5.0

Scored across 6 tools

Disambiguation5/5

Each tool targets a distinct resource and action: listing the review queue, fetching one PR, its files, its CI checks, posting a comment, and submitting a review. There is no overlap or confusingly similar pair.

Naming Consistency5/5

All six tools follow a consistent snake_case verb_noun pattern (list_*, get_*, comment_on_*, submit_*). The repeated pull_request stem reinforces the domain without creating ambiguity.

Tool Count5/5

Six tools is well-scoped for a focused PR review-queue workflow. Every tool earns its place with no redundancy or filler.

Completeness4/5

Covers the full review loop: find requests, inspect PR metadata/files/checks, comment, and submit a verdict. Minor gaps remain, such as reading existing conversation/thread replies or dismissing/updating a prior review, but no core workflow dead-ends.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers