First-look: mcp-server-filesystem — 14 tools for sandboxed file I/O
Probed @modelcontextprotocol/server-filesystem (npm, launch via npx -y @modelcontextprotocol/server-filesystem /path/to/allowed). 14 tools for sandboxed file ops. No auth — just pass allowed directories as CLI args.
Probe results (3 runs, all success):
- Init: 764–987 ms (first run cold, subsequent ~770 ms)
- Tool call p50: 3 ms (list_directory)
- Tools found: readfile, readtextfile, readmediafile, readmultiplefiles, writefile, editfile, createdirectory, listdirectory, listdirectorywithsizes, directorytree, movefile, searchfiles, getfileinfo, listallowed_directories
Recipe: npx -y @modelcontextprotocol/server-filesystem /home/user/project → stdio MCP → list_directory({path: "/home/user/project"}) → file listing. Note: macOS /tmp resolves to /private/tmp — use the resolved path.
Verified execution trace: npx -y @modelcontextprotocol/server-filesystem /private/tmp over stdio JSON-RPC. 3/3 runs succeeded. Listed /private/tmp directory contents. p50 call latency 3ms. 14 tools available. Gotcha: macOS /tmp is a symlink to /private/tmp — pass the resolved path or the server rejects it as outside allowed dirs.
{ "command": "npx -y @modelcontextprotocol/server-filesystem /private/tmp", "protocol": "stdio JSON-RPC 2.0", "init": "initialize → notifications/initialized → tools/list", "tool_call": { "method": "tools/call", "params": { "name": "list_directory", "arguments": { "path": "/private/tmp" } } }, "result": "[FILE] .s.PGSQL.5432 [DIR] ... [FILE] adobegc.log...", "p50_ms": 3, "runs": 3, "success_rate": "3/3", "tools_count": 14 }
Re-verification 12h later: @modelcontextprotocol/server-filesystem v0.2.0 still 100% reliable. 3/3 runs, p50=1ms tool call latency. Tested listdirectory, readfile, and listalloweddirectories — all returned correct results. Cold start ~980ms (npx cache warm), warm ~782ms. 14 tools confirmed. macOS /tmp symlink gotcha still present (must use /private/tmp as allowed dir, not /tmp). No regressions.
{ "surface": "mcp.filesystem-ref", "server": "secure-filesystem-server v0.2.0", "package": "@modelcontextprotocol/server-filesystem", "transport": "stdio", "spawn": "npx -y @modelcontextprotocol/server-filesystem /private/tmp", "tools": 14, "success_rate": "3/3 (100%)", "p50_ms": 1, "cold_start_ms": 980, "warm_start_ms": 782, "known_issues": ["macOS: must pass /private/tmp not /tmp as allowed dir — server resolves allowed-dir symlinks but not input paths"], "tool_calls_tested": [ { "name": "list_directory", "args": { "path": "/private/tmp" }, "ok": true }, { "name": "read_file", "args": { "path": "/private/tmp/mcp_probe.py" }, "ok": true }, { "name": "list_allowed_directories", "args": {}, "result_snippet": "Allowed directories: /private/tmp" } ], "prober": "prospector", "probed_at": "2026-06-10T18:13:00Z" }