Skip to main content
Glama

GitHub PR Control MCP

A focused, production-ready Model Context Protocol server for triaging and reviewing GitHub pull requests. It uses the GitHub REST API directly—there is no gh CLI wrapper and no shell execution.

What it does

The server exposes eight typed tools:

Tool

Purpose

Default permission

list_prs

List and paginate open, closed, or all PRs

Read

get_pr

Fetch PR metadata, branches, labels, merge state, and counts

Read

get_pr_diff

Fetch and page through a raw unified diff

Read

list_pr_comments

Read inline reviews and top-level conversation comments

Read

post_review_comment

Post an inline single- or multi-line diff comment

Write

submit_review

Approve, comment, or request changes

Write

add_labels

Add labels without replacing existing labels

Write

request_changes

Submit a dedicated change-request review

Write

Large repositories and pull requests are first-class:

  • list_prs and list_pr_comments fetch up to 20 GitHub API pages per call.

  • get_pr_diff returns an offset, next_offset, and total_lines, so clients can process a huge diff in bounded chunks.

  • Every response includes the last observed GitHub rate-limit budget.

  • GitHub failures surface the remaining budget and reset time when GitHub provides them.

Related MCP server: tai-mcp-github

Install

Requires Node.js 20 or newer.

npx github-pr-control-mcp

Or install it globally:

npm install --global github-pr-control-mcp
github-pr-control-mcp

Authentication and permission model

Read-only mode is the default. Choose either a personal access token (PAT) or a GitHub App installation.

PAT: read-only

GITHUB_READ_TOKEN=github_pat_read_only npx github-pr-control-mcp

GITHUB_TOKEN is accepted as an alias for GITHUB_READ_TOKEN.

PAT: separate read and write tokens

GITHUB_READ_TOKEN=github_pat_read_only \
GITHUB_WRITE_TOKEN=github_pat_write_scoped \
npx github-pr-control-mcp

The server will not run a write tool unless GITHUB_WRITE_TOKEN is present. For a single-token setup, set GITHUB_WRITE_ENABLED=true; the configured read token will then also handle writes.

Recommended fine-grained PAT permissions:

  • Read tools: Pull requests: Read, Contents: Read, Metadata: Read

  • Review tools: Pull requests: Read and write

  • Label tool: Issues: Read and write

GitHub App

GITHUB_APP_ID=123456 \
GITHUB_INSTALLATION_ID=9876543 \
GITHUB_APP_PRIVATE_KEY_PATH=/secure/path/app-private-key.pem \
npx github-pr-control-mcp

You can pass the key inline through GITHUB_APP_PRIVATE_KEY instead. Escaped \n sequences are normalized automatically.

GitHub App installations are also read-only by default. To enable their write tools:

GITHUB_WRITE_ENABLED=true

This explicit gate prevents an AI client from turning a broadly scoped credential into write access by accident.

Claude Desktop

Add the server to your Claude Desktop configuration:

{
  "mcpServers": {
    "github-pr-control": {
      "command": "npx",
      "args": ["-y", "github-pr-control-mcp"],
      "env": {
        "GITHUB_READ_TOKEN": "github_pat_read_only"
      }
    }
  }
}

Restart Claude Desktop. Try:

List open PRs in owner/repo, inspect the newest one's diff and comments, then summarize the highest-risk changes. Do not write to GitHub.

To enable reviews, add a tightly scoped GITHUB_WRITE_TOKEN to env.

Cursor

Create .cursor/mcp.json in your project:

{
  "mcpServers": {
    "github-pr-control": {
      "command": "npx",
      "args": ["-y", "github-pr-control-mcp"],
      "env": {
        "GITHUB_READ_TOKEN": "${env:GITHUB_READ_TOKEN}"
      }
    }
  }
}

Reload Cursor after saving the file.

Opt-in review prompts

The server exposes two built-in MCP prompts. They appear in clients that support MCP prompts and run only when a user selects them:

  • triage_pull_request gathers metadata, the relevant diff, and existing comments, then returns a read-only risk and next-action summary.

  • review_pull_request performs an evidence-first review and drafts line-specific findings without publishing anything.

Both prompts accept owner, repo, pull_number, and an optional focus. Neither prompt authorizes write tools. Publishing comments, labels, approvals, or change requests always requires a separate explicit instruction and enabled write credentials.

Tool examples

Paginate a repository with more than 50 PRs

{
  "owner": "microsoft",
  "repo": "vscode",
  "state": "open",
  "per_page": 50,
  "max_pages": 3
}

Read a large diff in chunks

First call:

{
  "owner": "owner",
  "repo": "repo",
  "pull_number": 42,
  "offset": 0,
  "limit": 2000
}

Pass the returned next_offset into the next call until it is null.

Post a multi-line inline comment

{
  "owner": "owner",
  "repo": "repo",
  "pull_number": 42,
  "body": "This branch can return a stale value when the cache is empty.",
  "path": "src/cache.ts",
  "start_line": 18,
  "start_side": "RIGHT",
  "line": 23,
  "side": "RIGHT"
}

If commit_id is omitted, the server resolves the current PR head SHA just before posting.

Development

git clone https://github.com/nexicturbo/github-pr-control-mcp.git
cd github-pr-control-mcp
npm install
npm run ci

The test suite covers multi-page pagination, bounded diff traversal, read/write separation, opt-in prompt registration, review submission, label preservation, configuration validation, and rate-limit error messages.

Security notes

  • Tokens and private keys are read only from environment variables or an explicitly configured private-key path.

  • Credentials are never returned through MCP tool results.

  • No subprocess or shell command is invoked by the server.

  • Write tools are disabled unless the operator explicitly opts in.

  • Use the narrowest repository and permission scope possible.

License

MIT

Available Tools

8 tools
add_labelsAdd pull request labelsA
Idempotent

Add one or more labels to a pull request. Existing labels are preserved.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYesGitHub repository name
ownerYesGitHub repository owner or organization
labelsYesLabel names to add
pull_numberYesPull request number

TDQS

A4/5.0
Behavior4/5

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

Annotations already provide idempotentHint=true and destructiveHint=false, but the description adds a specific non-destructive behavior: 'Existing labels are preserved.' This clarifies that labels are added, not replaced, a key behavioral detail beyond the generic annotations. No contradiction with 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 two sentences, front-loaded with the action, and every sentence earns its place. The second sentence conveys an important behavioral nuance without waste.

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 mutation tool with annotations and a clear description, the information is nearly complete. It lacks details about response format or error handling, but given the straightforward nature and the presence of annotations, it is adequately complete.

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

Parameters3/5

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

The input schema covers 100% of parameters with meaningful descriptions (owner, repo, pull_number, labels). The description does not add parameter-level semantics beyond what the schema already provides, so the baseline of 3 applies.

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

Purpose5/5

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

The description clearly states the action ('Add one or more labels to a pull request') with a specific verb and resource. It distinguishes from sibling tools (which read PRs, comment, review) by focusing on label modification, and adds a behavior note ('Existing labels are preserved') that further clarifies 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 when labels need to be added to a PR, but gives no explicit guidance on when not to use it or alternatives. There are no exclusions or comparisons with sibling tools, so usage context is merely implied rather than stated.

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

get_prGet pull requestA
Read-only

Fetch pull request metadata, merge state, counts, labels, and branch SHAs.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYesGitHub repository name
ownerYesGitHub repository owner or organization
pull_numberYesPull request number

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, and the description adds what data is returned (merge state, labels, SHAs) but does not disclose any additional behavioral traits like error handling, rate limits, or authentication requirements. It adds some value but not rich context.

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, well-structured sentence that leads with the verb, enumerates output categories, and avoids redundancy or excessive detail. Every word contributes value.

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, read-only fetch tool with three fully described parameters and no output schema, the description sufficiently indicates what will be returned. It could be slightly more explicit about single-PR scope, but the sibling list makes this clear.

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

Parameters3/5

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

Schema coverage is 100%, with clear descriptions for owner, repo, and pull_number. The tool description does not add extra parameter-level meaning beyond what the schema already provides, so baseline 3 applies.

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

Purpose5/5

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

The description uses the specific verb 'Fetch' with the resource 'pull request' and enumerates distinct contents (metadata, merge state, counts, labels, branch SHAs), clearly differentiating it from siblings like list_prs or get_pr_diff.

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 to use this tool (fetching a specific PR's data) but provides no explicit alternatives, exclusions, or context about when to prefer sibling tools. The guidance is implied by the tool name and sibling list rather than stated.

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

get_pr_diffGet pull request diffA
Read-only

Fetch a raw unified diff. Use offset and limit to page through very large pull requests.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYesGitHub repository name
limitNoMaximum diff lines to return (default 4000)
ownerYesGitHub repository owner or organization
offsetNoFirst diff line to return
pull_numberYesPull request number

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the read-only nature is covered. The description adds valuable behavioral context by explaining pagination via offset/limit and noting that the diff is 'raw', which goes beyond the 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 two short sentences with the core action front-loaded. Every word contributes to understanding the tool's function and usage. No redundancy or filler.

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 read-only tool with no output schema, the description specifies the output ('raw unified diff') and covers the main usage nuance (pagination). It is complete enough for the agent to select and use the tool correctly, though it could mention defaults or return format more explicitly.

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 schema already documents all parameters. The description adds meaning to offset and limit by explicitly describing their role in paging through large pull requests, which is more specific than the schema's basic descriptions.

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 'Fetch' and resource 'raw unified diff', clearly distinguishing it from sibling tools like get_pr (which would retrieve pull request metadata). The purpose is immediately obvious.

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 guidance on using offset and limit for large pull requests, but it does not explicitly state when to use this tool versus alternatives such as get_pr or other sibling tools. The usage context is implied but lacks formal exclusions or alternative recommendations.

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

list_pr_commentsList pull request commentsA
Read-only

List both inline review comments and top-level PR conversation comments with pagination.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoFirst GitHub API page (default 1)
repoYesGitHub repository name
ownerYesGitHub repository owner or organization
per_pageNoItems per page (default 100)
max_pagesNoMaximum pages to fetch (default 10)
pull_numberYesPull request number

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, covering the safety profile. The description adds meaningful behavioral context beyond the annotations: it explicitly states that both inline review comments and top-level PR conversation comments are included, and that pagination is supported. This adds value without contradicting the 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, well-structured sentence that immediately states what the tool does and its key scope. Every part is informative, with no filler or redundant repetition.

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 read-only list tool with good schema coverage and annotations, the description sufficiently conveys the tool's purpose, scope, and pagination behavior. It does not detail output fields, but the absence of an output schema and the straightforward 'list comments' pattern make this acceptable for the tool's complexity.

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

Parameters3/5

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

Schema description coverage is 100%: all six parameters (owner, repo, pull_number, page, per_page, max_pages) have descriptions in the schema. The description does not add additional parameter semantics, 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?

The description uses a specific verb ('List') and clarifies the resource (pull request comments) and scope (both inline review comments and top-level PR conversation comments), which distinguishes it from sibling tools like list_prs and get_pr_diff.

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 clearly identifies what the tool is for (listing both comment types with pagination), giving clear context for when to use it. However, it does not explicitly mention when not to use it or name alternatives like get_pr or post_review_comment, so it misses the full 'when-not/alternatives' guidance.

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

list_prsList pull requestsA
Read-only

List pull requests with multi-page pagination and a compact triage-oriented response.

ParametersJSON Schema
NameRequiredDescriptionDefault
baseNoFilter by base branch
headNoFilter by head owner:branch
pageNoFirst GitHub API page (default 1)
repoYesGitHub repository name
ownerYesGitHub repository owner or organization
stateNoPull request state
per_pageNoItems per page (default 100)
max_pagesNoMaximum pages to fetch (default 10)

TDQS

A4.2/5.0
Behavior4/5

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

The description adds behavioral context beyond the readOnlyHint/openWorldHint annotations by specifying 'multi-page pagination' and 'compact triage-oriented response', which informs the agent about the tool's scope and output style. This is useful for setting expectations about fetching many items and the response format. No contradictions with 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 sentence, front-loaded with the core function, and includes two high-value behavioral hints without fluff. It earns a 5 for structure and efficiency.

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 rich schema with 100% parameter coverage and annotations indicating a safe read operation, the description covers the essential use case. The phrase 'compact triage-oriented response' gives a general sense of output, but without an output schema, a bit more detail on response fields could be helpful. Still, it is adequately 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?

All 8 parameters have schema descriptions, so the schema carries the full semantic weight. The description mentions pagination behavior but not parameter specifics, so it adds no additional meaning to individual parameters. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly identifies the tool as 'List pull requests' with a specific verb+resource. It distinguishes from sibling get_pr by focusing on listing multiple PRs and mentions pagination and response style, which sets it apart from other PR-related tools.

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

Usage Guidelines4/5

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

The description implies a use case for triage-oriented overviews (compact response) and multi-page pagination, which helps an agent know when to use this tool over get_pr (which fetches a single PR). However, it does not explicitly state when not to use it or name alternatives, so it misses the full exclusion criteria for a 5.

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

post_review_commentPost inline review commentA

Post a single inline comment at a diff line. Write access must be explicitly enabled.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesReview comment body
lineYesDiff line number
pathYesRepository-relative file path
repoYesGitHub repository name
sideNoDiff side (default RIGHT)
ownerYesGitHub repository owner or organization
commit_idNoPR head SHA; omitted to resolve the current head automatically
start_lineNoStart line for a multi-line comment
start_sideNoStart side for a multi-line comment
pull_numberYesPull request number

TDQS

A4/5.0
Behavior4/5

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

Annotations already indicate a write operation (readOnlyHint=false). The description adds the operational context that write access must be explicitly enabled, which is beyond the annotations and useful for the agent. It does not elaborate on side effects or return behavior, but with annotations present this is a reasonable level.

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: the first states the core purpose, the second adds a necessary prerequisite. Every word earns its place, and important information is front-loaded.

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 10 parameters and no output schema, the description covers the essential action and the write-access requirement. However, it would benefit from mentioning when to prefer this over submit_review for multi-comment scenarios. The schema carries the rest of the parameter detail, so overall it is mostly 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 description coverage is 100%, so all 10 parameters are already described in the input schema. The description adds no parameter-specific information beyond what the schema provides, so it meets the baseline of 3.

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 and resource: 'Post a single inline comment at a diff line.' This clearly states the action, scope, and distinguishes it from siblings like list_pr_comments or submit_review.

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 gives a prerequisite ('Write access must be explicitly enabled') but does not explicitly state when to use this tool versus alternatives like submit_review. It implies the niche (single inline comment) but lacks comparative guidance.

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

request_changesRequest pull request changesA

Submit a REQUEST_CHANGES review with a required explanation. Write access must be explicitly enabled.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesRequired explanation of the requested changes
repoYesGitHub repository name
ownerYesGitHub repository owner or organization
pull_numberYesPull request number

TDQS

A4/5.0
Behavior4/5

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

Annotations already indicate a non-read-only, non-idempotent operation. The description adds the prerequisite about write access and emphasizes the required explanation, providing context beyond the schema. It does not contradict annotations and offers useful operational detail, though it does not describe broader side effects on the PR.

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 core action. The second sentence adds a necessary prerequisite without redundancy. Every word contributes value, making it highly efficient.

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, 4 required parameters, no output schema, and existing annotations, the description covers the essential purpose and prerequisite. It does not elaborate on effects or return values, but these are not critical for this straightforward action. A brief note distinguishing from submit_review would have made it more complete.

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

Parameters3/5

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

The input schema has 100% description coverage for all four parameters. The description adds no new parameter-level details beyond what the schema already states (e.g., body is required explanation). With full schema coverage, a baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the action: 'Submit a REQUEST_CHANGES review' with a specific verb and resource. It distinguishes this from sibling tools like post_review_comment or submit_review by naming the exact review type. The title reinforces the 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 offers a prerequisite: 'Write access must be explicitly enabled.' However, it does not explicitly state when to prefer this tool over alternatives like submit_review, though the name and description imply specialized use for requesting changes. No exclusions or alternative guidance is provided.

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

submit_reviewSubmit pull request reviewA

Submit an APPROVE, REQUEST_CHANGES, or COMMENT review. Write access must be explicitly enabled.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNoReview summary
repoYesGitHub repository name
eventYes
ownerYesGitHub repository owner or organization
pull_numberYesPull request number

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already mark this as a non-read-only, non-idempotent operation. The description adds the requirement that write access must be explicitly enabled, which is a useful behavioral constraint, but it does not clarify consequences of repeated submissions or the meaning of the permission requirement. It is minimal but not contradictory.

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 short sentences, front-loaded with the primary purpose, and contains no redundant words. Every clause adds information.

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

Completeness3/5

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

Given the tool has five parameters, no output schema, and sparse annotations, the description leaves out key details: what the response will be, whether a body is required for certain events, and how this relates to sibling tools like request_changes. It provides a basic purpose and permission note but is not fully self-contained.

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 80% and the schema already describes each parameter. The description repeats the event enum values (APPROVE, REQUEST_CHANGES, COMMENT), which adds little beyond the schema's enum. It does not explain when the optional body parameter is needed or the impact of the pull_number.

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 (submit) and the resource (pull request review), and enumerates the three possible event types (APPROVE, REQUEST_CHANGES, COMMENT). This distinguishes it from sibling tools like request_changes or post_review_comment, which target narrower actions.

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

Usage Guidelines2/5

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

The description only mentions a permission prerequisite ('Write access must be explicitly enabled') but does not explain when to use this tool versus alternatives like request_changes or post_review_comment. No exclusions or alternative scenarios are provided.

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. 8 tool updatesv1.0.1
    • First observedadd_labels
    • First observedget_pr
    • First observedget_pr_diff
    • First observedlist_pr_comments
    • First observedlist_prs
    • First observedpost_review_comment
    • First observedrequest_changes
    • First observedsubmit_review

TDQS

A3.9/5.0
Disambiguation3/5

Most tools are clearly distinct, but submit_review and request_changes overlap significantly since request_changes is just a specific review type. Similarly, post_review_comment vs. submit_review with COMMENT type could cause confusion. Descriptions help, but these boundary areas could lead to misselection.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern with snake_case (list_prs, get_pr_diff, submit_review, add_labels). No mixed conventions or stylistic deviations appear.

Tool Count5/5

8 tools is well-scoped for a pull-request control server, covering list, get, diff, comments, reviews, and labels without unnecessary bloat.

Completeness4/5

The set thoroughly covers review workflows (comments, reviews, labels) and basic read operations, but lacks PR update, merge, or close operations, which are minor gaps for a 'control' server.

Maintenance

ActivitySlowing
ResponsivenessSyncing

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/nexicturbo/github-pr-control-mcp'

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