A local MCP server that gives AI agents safe, explicit access to filesystem, git, and test-runner tools during development.
Strong foundation with 15 well-named tools, complete input schemas, and clear descriptions. All tools follow verb_noun naming (read_file, list_dir, git_status). Descriptions average ~120 chars, meeting the 10-1024 char baseline. All parameters have type definitions and descriptions. However, output schemas are not documented in the tool definitions, LLMs cannot predict return structure. Error handling is basic (generic error messages, no recovery guidance). No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk profiles. Safety model is explicit but not surfaced in tool metadata.
Check whether a file or directory exists within the workspace.
Find files by name pattern within the workspace. node_modules, .git, and dist are always excluded.
Run the test suite with coverage enabled and return a coverage summary.
Get metadata for a file without reading its content.
List branches in the repository.
Show changes between commits, the index, or working tree. Returns a unified diff. Output is truncated at maxLines (default 2000).
Show commit history with author, date, and subject.
Output schemas not documented. Tool definitions lack return type specifications. LLMs cannot predict response structure, forcing them to guess at field names and types for downstream tool chaining.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). write_file is destructive but unmarked. git_* tools are read-only but not annotated. Agents cannot distinguish safe from risky operations without reading descriptions.
Error handling lacks recovery guidance. CallTool handler returns generic 'Error: <message>' without categorizing as retryable, user-fixable, or fatal. No suggestions for next steps (e.g., 'File not found. Check path with list_dir().').
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 62 | 2026-07-28+ | v2 |
Show the contents of a specific commit, or a file as it existed at a given ref.
Show the working tree status: branch info, staged changes, unstaged changes, and untracked files.
Search for a pattern across all files in the workspace. Uses ripgrep (rg) for performance, falls back to Node.js if rg is unavailable. node_modules, .git, and dist are always excluded.
List the contents of a directory within the workspace. node_modules, .git, dist, .next, and coverage are always excluded.
List all test files in the workspace without running them.
Read the contents of a file within the workspace. Returns the file content as a string. Large files are truncated at maxBytes (default 500 KB).
Run the project's test suite or a subset of it. Auto-detects Jest, Vitest, or Mocha from package.json. Watch mode is not supported.
Write content to a file within the workspace. Requires ALLOW_WRITES=true and confirm=true. Writing to .git/ or matching blocked patterns is always rejected.
write_file requires confirm=true parameter but lacks dry-run or preview capability. Agents cannot preview changes before committing. No compensation tool to undo writes.
Pagination not implemented for list_dir (recursive) and grep_codebase (maxResults=200). Large results could exhaust context. No next_cursor or offset/limit pattern for continuation.