MCP server for GitHub repository and user management operations
GitHub MCP has 13 tools with basic schemas and descriptions, but significant quality gaps. All tools have Zod schemas with type definitions and descriptions present, meeting minimum viability. However, descriptions are often generic (10-50 chars), parameter descriptions lack actionable constraints, and output schemas are undocumented. No error handling guidance, no pagination support for list operations, and destructive operations (delete-a-repo) lack confirmation patterns. Tool naming is reasonable (verb-noun style) but some names are ambiguous ('update-repo' vs 'update-user-profile'). The server follows a consistent pattern but lacks production-grade polish expected for A/B tier.
Add topics to a GitHub repository
Create a new GitHub repository
Delete a GitHub repository
Fork a GitHub repository
Get information about the authenticated GitHub user
Get detailed information about a specific repository
Get GitHub user information by username
No output schema documentation. Tools return text responses without documenting field structure, forcing LLMs to parse unstructured output. E.g., get-repo-details returns JSON.stringify(details) with no schema definition.
Destructive operations lack confirmation/dry-run pattern. delete-a-repo and update-repo can modify state irreversibly without agent confirmation, risking accidental data loss.
List operations lack pagination. list-repos, list-followers, list-user-repos have no limit/offset/page parameters, risking context window exhaustion with large result sets.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 48 | 2026-07-28+ | v2 |
List followers of the authenticated user
List all repositories for the authenticated user
List repositories of the authenticated user
Star a GitHub repository
Update repository settings and metadata
Update the authenticated user's profile information
Generic descriptions under 50 chars. 'List all repositories for the authenticated user' (48 chars) and 'List followers of the authenticated user' (41 chars) lack actionable context for LLM selection. Baseline is 194 chars average.
No error handling guidance. Handlers return success text only; no recovery hints for common failures (auth, rate limits, not found). E.g., getUserByUsername returns bare text without handling 404 case.