A secure MCP filesystem server with AI-powered capabilities for file operations and semantic content analysis
This server has 16 tools with inconsistent quality. Most tools have basic descriptions (10-200 chars) and visible JSON schemas via mcp-go builder functions, but lack depth and LLM-optimization. Critical issues: (1) Two AI tools ('semantic_search', 'analyze_content') are declared but NOT IMPLEMENTED, they return placeholder strings instead of actual functionality. (2) Parameter descriptions are minimal and lack actionable constraints. (3) No output schemas are documented. (4) Error handling is absent or generic. (5) Tool descriptions rarely explain WHEN to use a tool vs similar alternatives. The server is essentially a standard filesystem tool set with two unfinished 'enhanced' tools bolted on. Naming is clear (verb-first), but descriptions lack the LLM-optimization depth required for good scores.
Perform AI analysis of file content
Copy files and directories.
Create a new directory or ensure a directory exists.
Delete a file or directory from the file system.
Retrieve detailed metadata about a file or directory.
Returns the list of directories that this server is allowed to access.
Get a detailed listing of all files and directories in a specified path.
semantic_search and analyze_content are not implemented, they return placeholder text ('not yet fully implemented') instead of actual functionality. These tools are declared but non-functional, making them useless to agents.
No output schemas are documented for any tool. Descriptions do not explain what the tool returns, its fields, or structure. LLMs cannot plan downstream calls or extract the right data without knowing the response shape.
Parameter descriptions lack actionable constraints. E.g., 'depth' in tree has no min/max bounds; 'pattern' in search_files does not say if it accepts wildcards or regex; 'recursive' in delete_file lacks warning about its destructive implications.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 53 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 42 | - | v1 |
Update file by finding and replacing text. Provides a simple pattern matching interface without needing exact character positions.
Move or rename files and directories.
Read the complete contents of a file from the file system.
Read the contents of multiple files in a single operation.
Recursively search for files and directories matching a pattern.
Search for text within file contents. Unlike search_files which only searches file names, this tool scans the actual contents of text files for matching substrings. Binary files are automatically excluded from the search. Reports file paths and line numbers where matches are found.
Search files using AI-powered semantic understanding
Returns a hierarchical JSON representation of a directory structure.
Create a new file or overwrite an existing file with new content.
No error handling guidance. Tools do not explain what to do if a file is not found, if permissions are denied, if path traversal is blocked, or if a regex is invalid. LLMs receive raw errors and cannot self-correct.
Tool descriptions do not explain when to use one tool vs a similar alternative. E.g., search_files vs search_within_files, the distinction is only clear from long descriptions; search_files operates on filenames, search_within_files on content, but this should be prominent in the description.
delete_file is destructive but descriptions do not call out this risk or suggest a dry-run/confirmation pattern. Agents could accidentally delete important files without any safeguard.
Parameters like 'path' appear in many tools but descriptions vary in detail. Some say 'path to the file', others just 'path'. This inconsistency makes it harder for LLMs to reason about what paths are valid across tools.
read_multiple_files accepts a 'paths' array but does not document pagination, max items, or partial failure behavior. If one file fails, does the entire operation fail, or are results per-file?
modify_file supports 'regex' mode but does not warn about regex complexity, backref injection, or performance on large files. LLMs may pass malformed regexes without understanding the implications.