GitHub repository search, browsing, and file management via MCP
Three tools with basic descriptions and partial schemas. All tools have names starting with action verbs (search_, browse_, pull_), which is good. However, descriptions lack depth on WHEN to use each tool and what distinguishes them. Parameter descriptions exist but are minimal (10-30 chars). Output schemas are not documented, responses are free-text strings, not structured objects. Error handling returns raw exception messages rather than actionable recovery guidance. No tool annotations (readOnlyHint, destructiveHint). The pull_from_repository tool modifies local state but lacks confirmation/dry-run pattern.
Browse a GitHub repository - provides repository info, lists contents, and retrieves file content.
Pull changes from a GitHub repository to a local directory. Creates the local directory if it doesn't exist.
Search for repositories on GitHub based on a query.
Output schemas not documented. All three tools return free-text strings instead of structured JSON objects. LLMs cannot parse results reliably or chain outputs to downstream tools.
Error handling returns raw exception tracebacks (e.g. 'Error searching repositories: {str(e)}\n\nDetails: {error_details}'). LLMs cannot determine if errors are retryable, user-fixable, or fatal. No recovery guidance provided.
pull_from_repository is a destructive write operation (clones repo to local disk) but lacks confirmation/dry-run pattern. No destructiveHint annotation. Agents could accidentally overwrite local directories without safeguards.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 43 | 2026-07-28+ | v2 |
Parameter descriptions are minimal (10-30 chars). E.g., 'Search query to find repositories' lacks guidance on format, length, or examples. 'Path to the directory or file within the repository' does not explain what happens if path is invalid.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). search_repositories and browse_repository are read-only but lack readOnlyHint. pull_from_repository is destructive but lacks destructiveHint.