MCP Server to access filesystem from Claude with dxt
Server has 5 tools with basic schemas and descriptions, but significant quality gaps. All tools have descriptions (10-100 chars), but most are terse and lack actionable context. Input schemas are present but minimal, parameters lack type constraints, enums, ranges, or validation guidance. No output schemas documented. Error handling returns plain strings without recovery guidance. Security concerns: mkdir accepts user paths without visible validation despite claiming 'Safety: disallows absolute paths', the safety checks are commented out in code. No tool annotations (readOnlyHint, destructiveHint). Naming is reasonable (verb_noun style) but descriptions do not explain WHEN to use each tool or what happens on error. This is a typical community filesystem server with functional but under-specified definitions.
Return the username of the user executing commands.
Get meta-information about a file
Returns the list of directories (workspaces) that this server is allowed to access. These should be the only directories available to access/act on files.
List files in a directory with metadata
Create a directory at the given path. If overwrite is True, remove and recreate if it exists. Safety: disallows absolute paths and parent-relative paths.
mkdir safety checks are commented out. Code claims 'disallows absolute paths and parent-relative paths' but the validation logic is disabled (lines with `if path_obj.is_absolute()` are commented). This is a critical security gap, the tool can be tricked into writing outside intended directories.
No output schemas documented. Tools return plain strings (file_info, ls, mkdir, current_user) or newline-separated text (list_workspaces). LLMs cannot parse these reliably. ls returns JSON but no schema is declared. Structured output with typed fields is required for downstream tool chaining.
Error responses are plain strings with no recovery guidance. E.g. 'Path not found: /foo' tells the LLM nothing about what to do next. Should include suggestions: 'Path not found. Call list_workspaces() to see allowed directories.'
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 45 | <=2025-11-25 | v2 |
Parameters lack type constraints and validation guidance. 'path' parameter has no format, length limit, or pattern description. 'overwrite' boolean has no explanation of consequences. LLMs cannot infer valid inputs.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). mkdir is destructive (can delete directories with overwrite=true) but not marked. LLMs cannot reason about side effects or retry safety.