An MCP server providing stateful Claude access with extended thinking and tool use
Single tool 'git' has a well-structured schema with proper enum constraints, type definitions, and comprehensive parameter descriptions. The tool description clearly states its purpose (read-only git operations) and lists subcommands. However, the description lacks guidance on WHEN to use this tool vs alternatives, and output schema is not formally documented. Input validation is robust (ref blocklist, path traversal checks, 100KB output cap), but error messages could be more actionable for LLM recovery. The tool name 'git' is generic and lacks a verb prefix (e.g., 'explore_git' or 'read_git_history' would be clearer). Overall solid implementation with room for LLM-optimized descriptions.
Read-only git operations for codebase exploration. Subcommands: status, diff, log, show.
Tool name 'git' lacks action verb. Should be 'explore_git', 'read_git_history', or 'get_git_status' to signal intent before LLM reads description.
Output schema not documented. Tool description does not specify what fields are returned (e.g., for 'log' subcommand: commit hash, author, date, message format). LLMs cannot plan downstream operations without knowing response structure.
Tool description lacks WHEN/WHY guidance. It states WHAT (read-only git ops) but not WHEN to call it vs alternatives or what prerequisites exist. Should mention: 'Use to explore commit history, diffs, and file changes. Call this first to understand codebase structure before proposing edits.'
Error messages are technical but not LLM-actionable. 'Error: ref contains blocked sequence' tells the LLM the input failed but not how to fix it. Should return: 'Invalid ref: contains blocked sequence "..", use branch names, tags, or commit SHAs without shell metacharacters.'
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 56 | <=2025-11-25 | v2 |
Parameter 'max_count' default (20) and cap (100) are reasonable, but description does not explain why log results are capped or what happens if the LLM requests more. Should state: 'Capped at 100 to prevent context window exhaustion. If you need older commits, use ref ranges (e.g., ref=main~50..main).'