GitHub MCP Agent Server
Provides tools for interacting with GitHub's API, enabling AI agents to search code, manage issues, create pull requests, and perform code reviews on GitHub repositories.
Click on "Install 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 MCP Agent Serverlist open issues in FMorgan-111/github-mcp-server"
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 MCP Agent Server
MCP server giving AI agents controlled GitHub access with policy guard and audit trail.
Architecture
┌───────────────┐ MCP stdio ┌───────────────────┐
│ AI Agent │ ◄──────────────────────► │ GitHub MCP Server │
│ (Claude, Codex│ JSON-RPC 2.0 │ │
│ or any MCP │ ┌─┴───────────────┐ │
│ client) │ │ Policy Guard │ │
└───────────────┘ ├─────────────────┤ │
│ Audit Log │ │
└─────────────────┘ │
┌──────────────────────────────────────────────┐ │
│ github_client.py │ │
│ (httpx) │ │
│ GitHub API │ │
└──────────────────────────────────────────────┘ │
┌──────────────────────────────────────────────┐ │
│ Review Engine (ruff + regex) │ │
└──────────────────────────────────────────────┘ │
└───┘Related MCP server: github-mcp-demo
Features & Tools
Tool | Description | Example Input | Example Output |
| Search GitHub repo code by query |
| List of matching files with paths & URLs |
| List open or closed issues |
| Formatted list of issues |
| Create a new issue (policy-guarded) |
| Confirmation with issue URL |
| Fetch raw diff of a pull request |
| Unified diff as text |
| Create a pull request between branches |
| Confirmation with PR URL |
| Run local automated code review rules |
| List of warnings and errors found |
| Post review findings as PR comments |
| Number of comments posted |
| Read a file from a repository |
| Decoded file content with metadata |
| Create or update a single file (guarded) |
| Commit SHA and URL |
| Push multiple files as a single commit |
| Commit SHA and file list |
| Comment on an issue or pull request |
| Comment URL |
| Merge a pull request |
| Merge status and SHA |
Security Model
Repository Allowlist: Only repositories explicitly allowed by policy can be accessed.
Branch Protection: PRs to protected branches are subject to branch protection rules before merging.
Dry-Run Mode: Execute operations without side effects for safe testing and auditing.
Audit Logging: All actions logged in JSONL format with precise timestamps to maintain traceability.
Policy Configuration: Start from
policy.example.jsonto configure repository allowlists and protected branches.
FAQ
Why not call the GitHub API directly?
Direct API calls lack centralized policy enforcement, audit logging, and uniform tooling support for AI agents. This MCP server adds a controlled, auditable layer for safer automation.
What MCP clients work with this?
Agents like Claude Code, OpenAI Codex, and any client supporting the MCP JSON-RPC 2.0 transport can connect to this server.
How is this different from the official GitHub MCP server?
This project's key differentiator is policy enforcement. Repository allowlists prevent agents from touching unauthorized repos, branch protection blocks accidental PRs to sensitive branches, dry-run mode supports safe validation, and write actions are audit-logged with timestamps.
Quick Start
Prerequisites
Python 3.10+
GitHub personal access token with
reposcope
Install
pip install fastmcp httpx python-dotenvConfigure and Run
git clone https://github.com/FMorgan-111/github-mcp-server.git
cd github-mcp-server
cp .env.example .env && nano .env
python3 -m src.mainConnect with Claude Code
claude mcp add github-agent -- python3 /path/to/github-mcp-server/src/main.pyDevelopment
pip install -e . --break-system-packages
python3 -m pytest tests/ -v
python3 -m src.main106 tests, all passing.
Docker Deployment
docker build -t github-mcp-server .
docker run \
-e GITHUB_TOKEN=ghp_your_token_here \
-i github-mcp-serverThe -e GITHUB_TOKEN=... flag passes the token into the container because
the local .env file is not copied into the image.
License
MIT
Available Tools
12 toolsadd_issue_commentB
Add a comment to a GitHub issue or pull request.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | Yes | Repository in 'owner/repo' format. | |
| issue_number | Yes | Issue or PR number. | |
| body | Yes | Comment text (markdown supported). | |
| dry_run | No | If True, preview without executing. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description alone must convey behavioral traits. It does not disclose important aspects such as idempotency, required permissions, error handling, or side effects like notification triggers.
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?
The description is a single, concise sentence with no extraneous words. However, it is too brief to cover necessary details, sacrificing completeness for brevity.
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?
Despite 100% schema coverage and an output schema, the description lacks essential context: no usage scenarios, no behavioral notes, and no mention of how this tool fits with siblings. The completeness is insufficient for an agent to reliably select and use the tool.
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 each parameter is well-described in the schema. The tool description adds no additional meaning beyond the schema descriptions, meeting the baseline expectation but not exceeding it.
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 clearly specifies the action ('Add a comment') and the target resource ('GitHub issue or pull request'). It distinguishes the tool from siblings like 'comment_pr_review' which deals with PR reviews, and 'create_issue' which creates issues, not comments.
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?
No usage guidance is provided. The description does not mention when to use this tool versus alternatives, nor does it specify any prerequisites or conditions for use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
comment_pr_reviewB
Fetch PR diff, run code review, and post findings as review comments.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | Yes | ||
| pr_number | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses that the tool posts comments (mutating), but lacks details on authentication, rate limits, or what 'run code review' entails. Sufficiently transparent about core behavior.
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?
Single sentence, efficient and front-loaded. However, the phrase 'run code review' is somewhat vague, slightly reducing clarity.
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?
Given the complexity (multi-step) and existence of output schema, the description is minimally adequate. Does not mention write permissions or the nature of the review. Sufficient for a simple tool but leaves gaps for agents.
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 0%, and the description adds no additional meaning for parameters. 'repo' and 'pr_number' are not explained (e.g., repo format expected).
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?
Description clearly states the multi-step action: fetch diff, run code review, and post findings as review comments. It distinguishes from sibling tools like review_pr_diff (which likely only returns review) and add_issue_comment (which adds a single comment).
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?
No guidance on when to use this tool versus alternatives such as add_issue_comment or review_pr_diff. The description does not explain scenarios or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_issueA
Create a new issue in a GitHub repository.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | Yes | Repository in 'owner/repo' format. | |
| title | Yes | Issue title. | |
| body | Yes | Issue body text. | |
| dry_run | No | If True, preview the operation without executing. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility for behavioral disclosure. It only states the action without explaining side effects, required permissions, error handling, or idempotency. A create operation could have implications (e.g., rate limits, notifications) that are not mentioned.
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?
Single sentence with no fluff. Every word is necessary. The structure is front-loaded with action and resource.
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?
Given the tool's simplicity and the existence of an output schema, the description is mostly complete. However, it lacks any usage context or behavioral notes that could help an agent decide when to use it.
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%, meaning all parameters have descriptions in the input schema. The description adds no additional semantic value beyond what the schema already provides. Baseline score of 3 is appropriate.
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?
Description clearly states the action ('Create a new issue') and the resource ('in a GitHub repository'). It is specific and distinguishes from sibling tools like add_issue_comment or create_pr.
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?
No explicit when-to-use or when-not-to-use guidance. While the use case is straightforward, the description does not mention prerequisites, alternatives, or scenarios where this tool is inappropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_or_update_fileB
Create or update a single file in a GitHub repository.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | Yes | Repository in 'owner/repo' format. | |
| path | Yes | File path to create/update. | |
| content | Yes | New file content. | |
| message | No | Commit message (default: auto-generated). | |
| branch | No | Branch to commit to (default: repo default branch). | |
| sha | No | Blob SHA of file being replaced (required for updates). | |
| dry_run | No | If True, preview the operation without executing. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It only states the action without explaining behavior (e.g., requires SHA for updates, defaults branch, auto-generates message). Lacks details on destructive potential or access requirements.
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?
Single sentence is efficient and front-loaded. However, slightly too brief given the tool's complexity and number of siblings; could include a brief usage hint without losing conciseness.
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?
Description is incomplete for a tool with 7 parameters, 12 siblings, and no annotations. Does not explain how create vs update is determined, branch behavior, or commit message defaults. Output schema existence reduces need for return value info, but still lacks usage context.
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 parameters are well-documented. Description adds no extra meaning beyond the schema, meeting baseline expectations.
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?
Description clearly states verb (create or update) and resource (single file in GitHub repository). Distinguishes from siblings like push_files (multiple files) and get_file_contents (read only).
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?
No guidance on when to use this tool versus alternatives like push_files or get_file_contents. No context about prerequisites or typical use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_prC
Create a new pull request.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | Yes | Repository in 'owner/repo' format. | |
| title | Yes | PR title. | |
| body | Yes | PR description. | |
| head | Yes | Source branch name. | |
| base | Yes | Target branch name (e.g. 'main'). | |
| dry_run | No | If True, preview the operation without executing. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description lacks detail on side effects, authentication, rate limits, or other behavioral traits. It does not mention that creating a PR is a write operation, nor does it describe the dry_run parameter's behavior or any constraints. With no annotations, this is insufficient.
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?
The description is a single, concise sentence that is front-loaded with the core action. It is not verbose, but it could benefit from a bit more detail without becoming lengthy.
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?
Despite having a complex input schema and sibling tools, the description is too brief. It does not explain the purpose of parameters like 'dry_run' or the expected output. The presence of an output schema reduces the burden slightly, but the description still lacks necessary context.
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 the schema documents all parameters. The description adds no additional meaning beyond the schema, which is acceptable but does not enhance understanding. Baseline score of 3 is appropriate.
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 'Create a new pull request' clearly states the verb and resource. It is unambiguous and matches the tool name. However, it does not differentiate from sibling tools like 'create_issue' or 'merge_pull_request', which could be clarified for context.
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?
No guidance is provided on when to use this tool versus alternatives. There is no mention of prerequisites, such as needing a branch to exist, or when to choose other tools like 'create_issue' or 'merge_pull_request'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_file_contentsB
Read a file from a GitHub repository.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | Yes | Repository in 'owner/repo' format. | |
| path | Yes | File path (e.g. 'src/main.py'). | |
| ref | No | Branch, tag, or commit SHA (default: default branch). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must carry the full burden. It merely says 'Read a file', failing to disclose whether the tool handles binary files, what happens on non-existent files, or the format of returned content. An output schema exists but is not referenced.
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?
The description is extremely concise (one sentence), but conciseness sacrifices informativeness. It could be more front-loaded with key details without being verbose.
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?
Given the tool's simplicity (3 params, output schema exists), the description is insufficient. It omits details like default branch behavior, error handling, or content representation, which are needed for complete understanding.
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 parameters are already well-defined. The description adds no extra meaning beyond the schema, earning the baseline score of 3.
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 clearly states the verb 'Read' and the resource 'a file from a GitHub repository', making the purpose unambiguous. In the context of sibling tools like create_or_update_file and push_files, this read operation is distinctly identifiable.
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?
No guidance is provided on when to use this tool versus alternatives such as search_code or get_pr_diff. There is no mention of prerequisites, limitations, or appropriate contexts, leaving the agent without decision support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pr_diffC
Get the diff for a pull request.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | Yes | ||
| pr_number | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It only states the action, but does not disclose read-only nature, authentication requirements, error handling (e.g., if PR not found), or what the diff includes (e.g., unified vs. split view).
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?
The description is a single, concise sentence that is front-loaded with the action and resource. Every word adds value, with no redundancy.
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?
Despite having an output schema, which reduces the burden, the description is minimal. For a simple get-diff tool with two parameters, it is adequate but lacks any further context about return values or operational behavior.
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 0%, and the description adds no parameter details beyond the names. 'repo' is ambiguous (owner/repo format?) and 'pr_number' is clear, but the description does not clarify expected format or constraints.
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 clearly states the tool's purpose: 'Get the diff for a pull request.' It uses a specific verb ('Get') and resource ('diff for a pull request'), which distinguishes it from sibling tools like review_pr_diff, though the description does not elaborate on the diff format.
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?
No guidance is provided on when to use this tool versus alternatives (e.g., review_pr_diff might offer similar functionality). There is no mention of prerequisites, context, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_issuesC
List issues in a GitHub repository.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | Yes | ||
| state | No | open |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It does not mention pagination, ordering, side effects, or anything beyond the basic action. Minimal transparency.
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?
The description is concise (one sentence), which is good. However, it lacks structure and could be slightly expanded for clarity.
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?
The tool is simple but the description is incomplete: no mention of output format, pagination, or the effect of the 'state' parameter. With an output schema existing, it could have referenced it.
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 0%, so the description should clarify parameters. It does not explain 'repo' or 'state' values (e.g., valid states, default behavior). Fails to compensate.
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 'List issues in a GitHub repository' uses a specific verb (list) and resource (issues), making the purpose clear. However, it does not differentiate from sibling tools, though no conflicting list tool exists.
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?
No guidance is provided on when to use this tool versus alternatives like search_code or create_issue. The description lacks context for selecting this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merge_pull_requestC
Merge a pull request.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | Yes | Repository in 'owner/repo' format. | |
| pr_number | Yes | Pull request number. | |
| commit_title | No | Custom merge commit title. | |
| merge_method | No | 'merge', 'squash', or 'rebase' (default: 'merge'). | merge |
| dry_run | No | If True, preview without executing. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose any behavioral traits such as destructive side effects, authentication requirements, rate limits, or what happens post-merge. For a mutation tool, this is a critical omission.
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?
The description is one short sentence, which is minimal but lacks substantive information. It does not waste words, but it also fails to provide valuable detail, making it under-specified rather than properly concise.
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?
Given the presence of 5 parameters, an output schema, and related sibling tools, the description is insufficient. It does not explain merge methods, dry run behavior, or how this tool fits into a workflow with sibling tools like create_pr or comment_pr_review.
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?
The input schema has 100% description coverage, so all parameters are documented. The tool description adds no additional meaning beyond the schema, earning the baseline score of 3.
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 'Merge a pull request.' is a clear verb+resource statement that directly conveys the tool's action. However, it does not add any additional scope or differentiation from sibling tools like 'create_pr' or 'review_pr_diff', which limits its clarity slightly.
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 provides no guidance on when to use this tool versus alternatives, such as when a pull request is ready to be merged or prerequisites like required reviews. No context is given for appropriate usage contexts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
push_filesC
Push multiple files as a single commit.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | Yes | Repository in 'owner/repo' format. | |
| branch | Yes | Branch name to commit to. | |
| message | Yes | Commit message. | |
| files_json | Yes | JSON string of [{"path": "...", "content": "..."}, ...]. | |
| dry_run | No | If True, preview without executing. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description lacks behavioral details such as whether it creates a new commit, overwrites, or handles branch creation. No annotations provided to compensate.
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?
Very short single sentence, but for a tool with multiple parameters and complex operation, it is under-specified. Could be more informative without being verbose.
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?
Lacks context on prerequisites (e.g., branch existence), failure modes, or behavior of dry_run. Output schema exists but doesn't excuse missing behavioral context.
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% with descriptions for all parameters, so baseline is 3. Description adds no additional detail beyond 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 clearly states the action 'Push multiple files as a single commit,' but does not explicitly differentiate from sibling tool 'create_or_update_file' which pushes a single file.
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?
No guidance on when to use this tool versus alternatives (e.g., create_or_update_file), nor any exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
review_pr_diffB
Review a PR diff using ruff + legacy regex rules. Returns structured findings.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | Yes | ||
| pr_number | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must fully disclose behavior. It mentions using 'ruff + legacy regex rules' but does not explain side effects, permission requirements, or what constitutes 'structured findings'. This is insufficient for a tool that likely modifies state or accesses code.
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?
The description is two sentences, no unnecessary words. It is efficiently front-loaded with the core purpose.
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?
Given an output schema exists, return values are not needed in the description. However, the description omits important context like required access permissions, the fact that it uses specific static analysis tools, and how the 'structured findings' are structured. It is adequate but not complete.
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 0%, so the description should add meaning beyond parameter names. It does not describe any constraints, formats, or examples for 'repo' or 'pr_number'. The parameter names are self-explanatory at a basic level, but lacking detail hurts usability.
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 clearly states the tool reviews a PR diff using 'ruff + legacy regex rules' and returns structured findings. This distinguishes it from siblings like get_pr_diff (which only retrieves the diff) and comment_pr_review (which adds comments).
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?
No guidance is provided on when to use this tool vs alternatives such as comment_pr_review or create_issue. The description does not mention prerequisites or conditions for use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_codeC
Search for code in GitHub repositories.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| repo | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility. It does not disclose whether the operation is read-only (likely), rate limits, scope (public/private repos), or result form. The minimal description fails to inform the agent of behavioral traits beyond the basic action.
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?
The description is very concise (one sentence), but it is too minimal to be informative. It lacks structure such as front-loading key details, and every sentence (only one) earns its place, but it fails to cover necessary 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?
Given 0% schema coverage, no annotations, and existence of an output schema, the description is incomplete. It does not explain return values, pagination, search behavior (e.g., exact vs. fuzzy), or error modes. The output schema is not documented in the description, assuming the agent infers from open-ended schema.
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 0%, but the description adds no meaning to the parameters 'query' and 'repo.' It does not explain what valid queries look like, how 'repo' filters, or default behavior. The schema already provides types and required flags, so no added value.
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 clearly states 'Search for code in GitHub repositories,' which is a specific verb+resource combination. However, it does not distinguish from sibling tools like 'get_file_contents' or 'create_or_update_file' that also involve code, and it lacks scope details (e.g., all repos vs. owned repos).
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?
No guidance on when to use this tool versus alternatives (e.g., 'list_issues' for issues, 'get_file_contents' for specific files). The description implies usage for code searches but provides no exclusions or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Most tools have distinct purposes, but `review_pr_diff` and `comment_pr_review` both involve PR review, which could cause slight ambiguity. However, their descriptions clarify the different outputs.
All tool names follow a consistent verb_noun pattern in snake_case, making them predictable and easy to understand. No mixing of conventions.
With 12 tools, the server covers core GitHub operations without being bloated or sparse. Each tool serves a clear purpose.
The tool set covers most common GitHub workflows (issues, PRs, files, code search) but lacks update/delete operations for issues and files, which may require workarounds.
Maintenance
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
An MCP server that gives your AI access to the source code and docs of all public github repos
MCP server connecting AI agents to 100+ apps (Gmail, Slack, Notion, GitHub) via one-click OAuth.
AI-native git hosting — repos, PRs, issues, CI gates, and AI code review over MCP (60 tools).
Search GitHub, npm, PyPI, StackOverflow, ArXiv from one MCP — built for coding agents.
Related MCP Servers
- FlicenseNot gradedqualityBmaintenanceMCP server that enables AI agents to perform GitHub operations like creating repositories, issues, and commits through natural language.
- FlicenseAqualityCmaintenanceMCP server that wraps GitHub REST API to allow AI agents to search repositories, get repository details, list issues, and read READMEs.4
- FlicenseCqualityCmaintenanceMCP server that enables LLMs to search GitHub, clone repositories, and perform read-only git/GitHub operations such as listing branches, commits, issues, and pull requests.25
- FlicenseAqualityBmaintenanceMCP server exposing GitHub tools for issues, pull requests, and code browsing via the GitHub REST API. Designed for local LLM clients with flat arguments and streamable HTTP support.15
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/FMorgan-111/github-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server