MCP server for GitHub via Fine-Grained Personal Access Token. Works locally without OAuth.
32 tools with consistent naming (verb_noun pattern: get_, list_, create_, update_, delete_) and complete input schemas. All parameters have type definitions and descriptions. However, tool descriptions are uniformly terse (15-45 chars), falling below the 50-200 char baseline for LLM-optimized descriptions. No output schemas documented. Error handling and recovery guidance absent. Missing tool annotations (readOnlyHint, destructiveHint). Risk categorization present in metadata but not surfaced in descriptions.
Get the authenticated user's profile information
Get a GitHub user's public profile information
Create a new branch
Delete a branch
Get information about a specific branch
List branches in a repository
Create a new file in a repository
Delete a file from a repository
Tool descriptions are uniformly terse (15-45 chars), well below the 50-200 char LLM-optimized baseline. Descriptions lack context on WHEN to use each tool, dependencies, and prerequisites. Example: 'Get repository information' does not explain what fields are returned or how it differs from list_user_repos.
No output schemas documented. LLMs cannot infer what fields each tool returns, forcing them to guess at response structure and plan downstream tool calls blindly. Critical for chaining tools (e.g., create_repo returns repo_id, which update_repo needs).
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk categorization in metadata. Destructive tools (delete_repo, delete_file, delete_branch) should be marked to enable agent safety checks and confirmation workflows.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 53 | 2026-07-28+ | v2 |
Get file contents from a repository
Update a file in a repository
Add a comment to an issue
Create a new issue
Get a specific issue
List issues in a repository
Update an issue
Create a new milestone
Get a specific milestone
List milestones in a repository
Update a milestone
Create a new pull request
Get a specific pull request
List pull requests in a repository
Update a pull request
Create a new release
Get a specific release
List releases in a repository
Update a release
Create a new repository
Delete a repository
Get repository information
List repositories for the authenticated user or a specified user
Update repository settings
No error handling or recovery guidance. Tools lack descriptions of failure modes, retryability, and next steps. Example: 'Create a new repository' does not mention what happens if the name already exists or if the user lacks permissions.
Parameter descriptions lack format constraints and examples. Pagination params (page, per_page) have no documented ranges or defaults. State params (state: open|closed|all) lack enum constraints in schema. LLMs will guess at valid values.