Production-grade MCP file system server with secure, token-efficient file system access. Provides read-only and read-write tools for file navigation, search, editing, git operations, and test execution.
Server has 15 well-named tools with comprehensive descriptions (avg 180 chars, within baseline 194). All tools have input schemas with type definitions and parameter descriptions. Naming follows verb_noun convention (list_directory, read_file, grep_search, edit_block). However, output schemas are not explicitly documented in the source code provided, only input schemas are visible. Error handling is present but lacks recovery guidance in descriptions. Tool composition is strong: tools chain well (git_status → git_diff → export_swebench_patch). Security-sensitive tools (write_file, delete_entry, run_command) are properly gated. Missing: tool annotations (readOnlyHint, destructiveHint, idempotentHint), explicit output schema documentation, and actionable error messages in descriptions.
Apply a unified diff patch to one or more files. Validates syntax before committing. Requires read-write mode.
Safely delete a file or directory by moving it to a .trash/ folder instead of permanent deletion. Requires read-write mode.
Perform a surgical, atomic string replacement in a file. Finds the exact target content and replaces it with new content. Validates Python syntax before committing writes. Requires read-write mode.
Export the current working directory changes as a unified diff patch suitable for SWE-bench submission. Generates a submission-ready patch from git diff.
Find files matching a glob pattern under an allowed directory. Searches recursively up to depth 8, skipping hidden dirs and __pycache__. Returns relative paths, names, and sizes.
Get a unified diff of changes in a git repository. Shows differences between HEAD and working directory, or between two commits. Token-limited to prevent context overflow.
Output schemas not documented. Tool descriptions state what is returned (e.g., 'Returns structured status information' for git_status) but do not specify field names, types, or structure. LLMs cannot plan downstream tool calls without knowing response fields.
Tool annotations missing. No readOnlyHint, destructiveHint, or idempotentHint declared in tool definitions. This prevents clients from rendering UI hints (e.g., 'This will delete data') and agents from reasoning about side effects.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | <=2025-11-25 | v2 |
Get the current git status of a repository, including branch name, staged/unstaged changes, and untracked files. Returns structured status information.
Search for text patterns in files using ripgrep (fast, regex-capable code search). Searches recursively under an allowed directory, respecting .gitignore and skipping binary files.
List the files and folders inside a directory on the host. The directory must live inside one of the server's allowed roots; otherwise an error with error_code "path_not_allowed" is returned. Relative paths resolve against the server's current directory, so prefer absolute paths inside an allowed root.
Read a slice of a file with line-number prefixes (e.g. "L42: code"). This tool is designed for minimal token usage: it returns a bounded window of lines instead of the entire file. Use offset and limit to navigate large files. Binary files are detected and refused.
Revert a file to its HEAD version in git, discarding all local changes. Instant rollback. Requires read-write mode.
Run a shell command on the host operating system and return its output. The command is executed by your default system shell: macOS/Linux: /bin/sh (macOS: bash in sh-mode; many Linuxes: dash), Windows: cmd.exe. Handy for anything you would type in a real terminal: checking versions (git --version), listing files (ls / dir), running tests or builds, checking network (ping), etc.
Run a test command (e.g. pytest, npm test) with bounded execution time and failure distillation. Captures output and returns pass/fail status with distilled error details. Requires read-write mode.
Extract the structural outline (AST map) of a source file, showing classes, functions, methods, and their line numbers. Supports Python, JavaScript, TypeScript, and other languages with AST parsers.
Write or overwrite a file atomically with new content. Validates Python syntax before committing. Requires read-write mode.
Error handling lacks recovery guidance. Descriptions mention errors (e.g., 'error_code path_not_allowed') but do not guide the LLM on next steps. Should include: 'If path_not_allowed, verify the path is within an allowed root (see instructions).'
Parameter constraints not fully specified. 'max_results' defaults to 100 but no min/max bounds stated. 'limit' in read_file defaults to 200 and is 'capped by config' but the cap value is not documented in the description.
Destructive operations lack confirmation step. delete_entry, revert_file, and run_command (arbitrary shell execution) are high-risk but have no dry-run or confirmation mechanism documented.