github-review-queue-mcp
You can manage your GitHub pull request review queue from any MCP client: find PRs awaiting your review, inspect them and their CI, comment, and submit reviews.
List open pull requests where your review is requested, optionally filtered to one repository.
Get a pull request summary: title, author, branches, size, mergeability, reviewers, latest reviews, and description.
List changed files with additions/deletions, optionally including per-file diffs.
Check CI status on the head commit, with overall state, counts, and failing checks.
Post comments on a pull request as you.
Submit a review as APPROVE, REQUEST_CHANGES, or COMMENT.
Run locally over stdio with your GitHub token, or as a remote OAuth 2.1 server with its own authorization server.
Provides tools for interacting with GitHub's pull request review queue: listing pull requests where your review is requested, reading PR details and changed files, checking CI status, posting comments, and submitting reviews (approve/request changes/comment) on your behalf.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@github-review-queue-mcpshow me the pull requests waiting on my review, newest first"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
github-review-queue-mcp
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 |
| Open PRs where your review is requested (optionally one repo) | yes | no | yes | yes |
| Title, author, branches, size, mergeability, latest review per reviewer, description | yes | no | yes | yes |
| Changed files with +/- counts, optional diffs (capped per file) | yes | no | yes | yes |
| CI on the head commit: overall state, counts, each failing check with link and summary | yes | no | yes | yes |
| Posts a comment as you | no | no | no | yes |
| 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-mcpClaude 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)Create a GitHub OAuth App. Set its callback URL to
https://<your-host>/github/callback.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-mcpAdd
https://<your-host>/mcpas a custom connector in Claude or ChatGPT.
Variable | |
| Public origin. The MCP endpoint is |
| From the OAuth App |
| 32 random bytes, base64; encrypts stored GitHub tokens |
| Default |
| For GitHub Enterprise Server |
| Number of proxies in front, for per-IP rate limiting |
| 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 8707resource; 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
statetoward GitHub.A CSRF token on the consent form.
Registration accepts only
httpsor 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 toolscomment_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.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Comment text (Markdown) | |
| repo | Yes | Repository as "owner/name", for example "octocat/hello-world" | |
| number | Yes | Pull request number |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| url | Yes | |
| created_at | Yes |
TDQS
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.
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.
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.
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.
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.
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 requestBRead-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).
| Name | Required | Description | Default |
|---|---|---|---|
| repo | Yes | Repository as "owner/name", for example "octocat/hello-world" | |
| number | Yes | Pull request number |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | |
| base | Yes | |
| body | Yes | |
| head | Yes | |
| repo | Yes | |
| draft | Yes | |
| state | Yes | |
| title | Yes | |
| author | No | |
| merged | Yes | |
| number | Yes | |
| commits | Yes | |
| reviews | Yes | |
| head_sha | Yes | |
| additions | Yes | |
| deletions | Yes | |
| created_at | Yes | |
| updated_at | Yes | |
| changed_files | Yes | |
| body_truncated | Yes | |
| mergeable_state | No | |
| requested_reviewers | Yes |
TDQS
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.
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.
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.
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.
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.
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 statusARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | Yes | Repository as "owner/name", for example "octocat/hello-world" | |
| number | Yes | Pull request number |
Output Schema
| Name | Required | Description |
|---|---|---|
| counts | Yes | |
| failing | Yes | |
| overall | Yes | |
| head_sha | Yes |
TDQS
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.
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.
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.
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.
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.
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 filesARead-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).
| Name | Required | Description | Default |
|---|---|---|---|
| repo | Yes | Repository as "owner/name", for example "octocat/hello-world" | |
| limit | No | How many files to return (1-100, default 50) | |
| number | Yes | Pull request number | |
| include_patch | No | Include each file's diff (default false) |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| files | Yes |
TDQS
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.
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.
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.
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.
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.
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 requestsARead-onlyIdempotent
Lists open pull requests where your review is requested, most recently updated first. Optionally limited to one repository.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | No | Repository as "owner/name", for example "octocat/hello-world" | |
| limit | No | How many pull requests to return (1-50, default 20) |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| pull_requests | Yes |
TDQS
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.
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.
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.
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.
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.
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 reviewADestructive
Submits a review on a pull request, as you: APPROVE, REQUEST_CHANGES, or COMMENT. REQUEST_CHANGES and COMMENT need a body.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | Review text (Markdown); required unless the event is APPROVE | |
| repo | Yes | Repository as "owner/name", for example "octocat/hello-world" | |
| event | Yes | The review verdict | |
| number | Yes | Pull request number |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| url | Yes | |
| state | Yes | |
| submitted_at | No |
TDQS
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.
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.
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.
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.
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.
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.
6 tool updates
v0.1.0- First observed
comment_on_pull_request - First observed
get_pull_request - First observed
get_pull_request_checks - First observed
list_pull_request_files - First observed
list_review_requests - First observed
submit_pull_request_review
TDQS
Scored across 6 tools
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.
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.
Six tools is well-scoped for a focused PR review-queue workflow. Every tool earns its place with no redundancy or filler.
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
Related MCP Connectors
A Model Context Protocol (MCP) application for automated GitHub PR analysis and issue management.…
AI-native git hosting — repos, PRs, issues, CI gates, and AI code review over MCP (60 tools).
AI code review for GitHub PRs with an MCP autofix loop for Claude Code and Cursor
- StytchOAuthdev.stytch.mcp
The Stytch MCP server is a reference implementation that demonstrates remote MCP server authentication and authorization using Stytch Connected Apps. It provides OAuth 2.1-compliant authorization (including PKCE), Dynamic Client Registration, and validates Stytch-issued access tokens to enable AI agents to securely interact with external services through permissioned access, supporting scopes like openid, email, profile, and manage:project_data.
Related MCP Servers
- FlicenseAqualityDmaintenanceA minimal MCP server that exposes a focused set of GitHub PR review tools to AI agents, enabling PR listing, detail retrieval, comment viewing, and thread management.5-
- AlicenseAqualityCmaintenanceA production-ready MCP server for triaging and reviewing GitHub pull requests via the GitHub REST API, providing typed tools to list, inspect, comment, add labels, and submit reviews.89 npmMIT
- AlicenseAqualityCmaintenanceAn MCP server that enables AI assistants to interact with GitHub via a fine-grained personal access token — pushing commits, managing branches, opening and merging PRs, creating issues, and reading repositories. It runs locally with no telemetry and supports a read-only mode.151MIT
- AlicenseNot gradedqualityBmaintenanceA focused Model Context Protocol server for triaging and reviewing GitHub pull requests from Claude Desktop, Cursor, and other stdio-compatible MCP clients.MIT