MCP server for GitHub API integration with repository search, issue management, and repository information retrieval
Four tools with complete schemas and basic descriptions. Naming follows verb_noun convention (search-repos, get-repo-info, list-issues, create-issue). All tools have input schemas with required fields and enums where appropriate. However, descriptions are generic (10-50 chars), lack context on WHEN to use each tool, and omit guidance on prerequisites or dependencies. Parameter descriptions are minimal. Output schemas are not documented, LLMs cannot predict response structure. Error handling returns plain text without recovery guidance. No tool annotations (readOnlyHint/destructiveHint). Missing idempotency guidance for create-issue.
Create a new issue in a GitHub repository
Get information about a specific GitHub repository
List issues in a GitHub repository
Search for GitHub repositories
Output schemas not documented. LLMs cannot predict response structure or plan downstream tool calls. searchRepos returns mapped repo objects, but this is not declared in the tool definition.
Descriptions are too generic (10-50 chars). 'Search for GitHub repositories' lacks context on WHEN to use this vs get-repo-info, what query syntax is accepted, or what fields are returned. Baseline: 194 chars average for A+ tools.
No tool annotations. create-issue is destructive (modifies state) but lacks destructiveHint. search-repos, get-repo-info, list-issues are read-only but lack readOnlyHint. Agents cannot distinguish safe from unsafe tools.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | 2026-07-28+ | v2 |
Error handling returns plain text ('Error searching repositories: <message>') without recovery guidance. Per pattern:recovery-guide, errors should tell LLM what to do next (e.g., 'Invalid query syntax. Try: owner:microsoft language:typescript').
list-issues and search-repos accept 'limit' but do not document pagination or total count. Per pattern:paginated-result, tools returning lists should return total_count and support offset/cursor for large result sets.