An MCP server providing tools to interact with GitHub repositories, including fetching issues, pull requests, and their detailed information.
Server has 5 tools with clear verb-noun naming (list_*, get_*) and reasonable descriptions (100-200 chars). All tools have input schemas with typed parameters and descriptions. However, output schemas are not documented in the source code, parameter descriptions lack format constraints and ranges, and there is no error handling guidance. Two tools (list_issues_limited and list_issues_default) are near-duplicates, violating single-responsibility. No tool annotations (readOnlyHint, destructiveHint) despite all being read-only. Pagination support exists but lacks total_count or next_cursor documentation.
Get full details of a GitHub issue including title, description, labels, recent comments, and computed metadata like days open and staleness.
Get full details of a GitHub pull request including title, description, labels, recent comments, and computed metadata like days open and staleness.
Retrieve a list of open issues from a GitHub repository. Useful for understanding current work and pending bugs. This version uses a default limit to ensure manageable LLM context. Returns an empty list if no issues exist
Retrieve a list of open issues from a GitHub repository. Useful for understanding current work and pending bugs. Returns an empty list if no issues exist.
Retrieve a list of pull requests from a GitHub repository. Useful for identifying stale PRs, recently updated PRs, and PRs that may require review. Returns an empty list if no pull requests exist.
Duplicate tools: list_issues_limited and list_issues_default perform nearly identical operations. LLMs waste reasoning cycles deciding between them. Consolidate into a single list_issues tool with optional numberOfIssues parameter (default 30).
Output schemas not documented. Source code shows tool definitions but no return type documentation (Issue, IssueDetail, PullRequestDetail, PullRequestSummary classes are referenced but their fields are not visible). LLMs cannot plan downstream calls without knowing what fields to expect.
Parameter descriptions lack format constraints and ranges. 'numberOfIssues' has no min/max bounds (unbounded integers let LLMs pass absurd values). 'page' and 'perPage' lack documented limits. 'issueNumber' and 'pullRequestNumber' lack format guidance (e.g., 'positive integer').
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | B | 76 | 2026-07-28+ | v2 |
No error handling guidance. Tools do not document what happens on invalid owner/repo, network failures, or rate limits. LLMs receive raw errors with no recovery hints (e.g., 'User not found. Try search_users() first.').
Tool annotations missing. All 5 tools are read-only (no state modification), but none declare readOnlyHint=true. This prevents agents from optimizing retry logic and caching strategies.