Model Context Protocol server for GitHub repository access and file management
Three tools with complete schemas and descriptions, but significant gaps in error guidance and parameter constraints. All tools have verb-noun naming (file_get, file_create_or_update, file_delete) and descriptions (avg 150 chars). Schemas use Zod with type definitions and descriptions for all parameters. However, descriptions lack actionable error recovery guidance, parameter constraints (e.g., file size limits, path validation rules), and dependency hints. No enum constraints for message parameters. Error handling returns generic JSON stringification without structured guidance on what went wrong or how to recover. Missing output schema documentation and pagination support for directory listings.
Create a new file or update an existing file on the default branch. Commits directly to the default branch. If the file already exists, its SHA is auto-detected for update.
Delete a file from the default branch. Commits the deletion directly to the default branch. The file SHA is auto-detected.
Get file content or directory listing from a GitHub repository. For files, returns decoded text content. For directories, returns an entry list. Only supports files up to 1 MB.
Error responses lack actionable recovery guidance. handleError() returns generic 'Error: <message>' without categorizing as retryable, user-fixable, or fatal. LLM cannot determine next action.
Parameter descriptions lack format constraints and validation rules. 'path' parameter has no guidance on valid formats, length limits, or character restrictions. 'message' parameter has no length or content constraints.
No output schema documentation. Responses are JSON.stringify() of internal types (FileContent, FileEntry, DirectoryListing, MutationResult) but LLM has no visibility into field names, types, or structure for downstream tool chaining.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 57 | 2026-07-28+ | v2 |
Destructive operations (file_delete, file_create_or_update) lack confirmation or dry-run support. No pattern to prevent accidental data loss when agent makes mistakes.
file_get description mentions '1 MB' limit but provides no guidance on what happens when limit is exceeded or how to handle large files. No pagination support for directory listings.