A full-featured MCP filesystem server with 18 tools for reading, writing, editing, searching, and managing files and directories securely.
This filesystem server demonstrates solid foundation with 18 well-named, verb-leading tools and comprehensive descriptions. Most tools have clear, actionable docstrings (100-250 chars) and structured parameter schemas. However, several critical gaps prevent a higher score: (1) output schemas are not explicitly documented in the source, the response format for tools like 'analyze_project', 'search', and 'plan_task' is inferred rather than declared; (2) some parameter descriptions lack format/constraint details (e.g., 'depth' accepts 1-10 per docs but this range is not visible in schema definitions); (3) error recovery guidance is missing, there are no 'what to do if this fails' prompts in descriptions; (4) some tools accept very generic parameters ('query' in search) without enum constraints or format hints. The server does well on naming consistency (read_file, write_file, edit_file follow clear verb_noun patterns), composition (tools are single-responsibility), and audit/security (audit logging present). The comprehensive server instructions partially compensate for individual tool gaps by explaining the 'why' upfront.
Full project structure analysis with language detection and metrics.
Multiple file operations (rename, delete, copy) in one call.
Diff two files (unified, context, or side-by-side format).
Copy files or directories to a new location. Supports recursive directory copy.
Create new directories (recursive).
Delete files or directories. Use recursive:true for non-empty directories. Cannot delete allowed root directories.
Modify existing files by replacing specific text (search → replace). Use dry_run:true to preview changes as a unified diff before applying. ALWAYS prefer this over write_file for existing files.
Output schemas not explicitly documented. Tools like 'analyze_project', 'search', 'plan_task', 'batch_operations' lack visible response schema definitions in the source code. LLMs cannot plan downstream tool calls or extract required fields without knowing what the response contains.
Generic parameter descriptions lacking constraints. 'query' in search, 'mode' in search (accepts 'files', 'content', 'duplicates' but only mentioned in description, not as enum), 'format' in compare_files lack explicit enum/pattern definitions in schema. Rely on description text alone.
Missing error recovery guidance. Descriptions do not explain what to do if a tool fails. E.g., 'search' does not mention 'if no results, try broadening the pattern or using a simpler query'. Error responses lack actionable next steps.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | <=2025-11-25 | v2 |
File metadata (size, permissions, dates).
Show which directories the server can access.
List directory contents with optional recursive depth control.
Move or rename files and directories. Works as both move and rename. Cannot move allowed root directories.
Create step-by-step plans for complex file operations.
Read file contents. Use start_line/end_line for reading specific ranges. Use outline=true to get a symbol index (functions, classes, types with line numbers) — ideal for navigating large files before reading specific sections. To MODIFY files use edit_file.
Read images/binary files (returns base64 or ImageContent).
Read several files in one call.
Unified search — modes: files, content, duplicates. Supports regex patterns and include_content.
Hierarchical JSON tree with configurable depth.
Create NEW files or full overwrite. Supports chunked streaming for large files (set chunk_index + total_chunks). Use create_backup:true to save a .backup copy before overwriting. For modifying existing files ALWAYS use edit_file instead.
Incomplete parameter descriptions for complex operations. 'batch_operations' accepts an 'operations' array but does not document the structure of operation objects (required fields, valid types). 'plan_task' accepts a generic 'task' string with no format hints.
Shallow descriptions for utility tools. 'tree', 'get_file_info', 'copy_file', 'move_file', 'create_directory' have descriptions under 100 chars with no context on WHEN to use them vs alternatives. E.g., 'tree' vs 'list_directory' distinction not explained.
No pagination guidance for result-returning tools. 'search' with 'include_content=true' could return thousands of items. 'analyze_project' could return a massive tree. No mention of result limits, pagination cursors, or truncation behavior.
Missing idempotency notes on destructive operations. 'delete_file', 'move_file', 'batch_operations' should document whether retrying with the same parameters is safe (idempotent) or will cause cascading failures. Agents retry on ambiguous failures.