An MCP server that provides tools for interacting with GitHub repositories, pull requests, issues, and other GitHub resources. Includes an access-control filter for restricting tool usage and org/repo access.
38 tools with minimal schema documentation and sparse parameter descriptions. Most tools show only owner/repo parameters with basic type info; no output schemas documented. Descriptions are present but generic (avg ~60 chars, well below 194-char baseline). No error handling guidance, no parameter constraints (enums, ranges), no idempotency hints. Tool names follow verb_noun convention (good), but parameter descriptions lack actionable detail (e.g., 'The owner of the repository' repeated 38 times). No evidence of pagination support, result limits, or chaining IDs in responses. Security-sensitive tools (delete_file, create_repository) lack confirmation/dry-run patterns. Schemas visible in filter.py but incomplete, most tools show only 2 params with no output schema.
Add a comment to a pending pull request review
Add a comment to a GitHub issue
Create a new branch in a GitHub repository
Create or update a file in a GitHub repository
Create a pull request in a GitHub repository
Create a new GitHub repository
Delete a file from a GitHub repository
Fork a GitHub repository
Output schemas completely undocumented. No tool specifies what fields are returned, forcing LLMs to guess structure and plan downstream calls blindly. Violates pattern:tool and mxe:response-field-naming.
Parameter descriptions are generic and repetitive ('The owner of the repository' appears 38 times). No actionable constraints: no enums for status/state fields, no ranges for numeric params, no format hints for IDs. Violates pattern:constrained-input and pattern:tool-description.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 41 | 2026-07-28+ | v2 |
Returns the active MCP access-control policy: tool allowlist, permanently blocked tools, and org/repo restrictions.
Get details of a specific commit from a GitHub repository
Retrieve the contents of a file from a GitHub repository
Get information about a GitHub label
Get the latest release of a GitHub repository
Get information about the authenticated user
Get a release by tag from a GitHub repository
Get the status of a GitHub user or organization
Get a specific tag from a GitHub repository
Read details of a GitHub issue
Write or update a GitHub issue
List branches in a GitHub repository
List commits in a GitHub repository
List issue types in a GitHub repository
List issues in a GitHub repository
List pull requests in a GitHub repository
List releases in a GitHub repository
List tags in a GitHub repository
Read details of a pull request
Write a review on a pull request
Push files to a GitHub repository
Request a Copilot review on a pull request
Search for code in GitHub repositories
Search for issues on GitHub
Search for pull requests on GitHub
Search for repositories on GitHub
Search for users on GitHub
Write or update a sub-issue in GitHub
Update a pull request
Update the branch of a pull request
Destructive tools (delete_file, create_repository, fork_repository) lack confirmation/dry-run patterns and no error recovery guidance. LLMs cannot distinguish retryable from fatal errors. Violates pattern:confirmation-request and pattern:recovery-guide.
List tools (list_branches, list_commits, list_pull_requests, list_issues, list_releases, list_tags) show no pagination support (no limit, offset, page_size params visible). Large result sets will blow context windows. Violates pattern:paginated-result.
Tool descriptions are too short (avg ~60 chars vs 194-char baseline). Generic phrasing ('Retrieve', 'List', 'Get') does not explain WHEN to use each tool or distinguish similar tools (e.g., pull_request_read vs pull_request_review_write). Violates pattern:tool-description.