mcpcheck · demo

@modelcontextprotocol/server-filesystem passing

npx -y @modelcontextprotocol/server-filesystem <allowed-dir>
free preview run · last run 5 d ago (2026-09-02 17:57 UTC)
mcpcheck badge
Clean install pass
1/1 hosts
Clients pass
Claude, Cursor, VS Code, Python SDK
OAuth n/a
n/a (stdio)
Tool catalog pass
14 tools
Error ergonomics pass
54/100
Protocol n/a
n/a

Clean install pass

Fresh npm/uv cache, start over stdio (or connect for remote URLs), initialize + tools/list, on GitHub-hosted Linux, macOS and Windows runners.

HostStatusNodeServerToolsTimeResult
local macOS (local probe)passv22.23.2secure-filesystem-server 0.2.0147.0 s14 tools in 7.0 s

Client compatibility pass

ClaudeCursor inferredVS Code inferredPython SDK

Cursor and VS Code embed the official TypeScript SDK client; their chips are inferred from the TypeScript SDK rows (no GUI automation). Claude Code is verified with a claude mcp list health check — a real handshake over its own transport.

Clientlocal macOS
TypeScript SDK client (current)
v1.30.0
embedded by Cursor, VS Code, Claude Desktop, Windsurf
pass
14 tools via ts-sdk 1.30.0
TypeScript SDK client (previous minor)
v1.29.0
embedded by Cursor, VS Code
pass
14 tools via ts-sdk 1.29.0
Python SDK client (current)
v2.1.1
pass
14 tools via mcp 2.1.1
Python SDK client (previous minor)
v2.0.1
pass
14 tools via mcp 2.0.1
Claude Code (`claude mcp list`)
v2.1.196
embedded by Claude Code
pass
Claude Code 2.1.196 connected (14 tools in the catalog)

OAuth conformance n/a

Package specs run over stdio; there is no HTTP endpoint to authorize.

Tool catalog pass

14 tools · hash 48dc3bea5068887a · captured 6 d ago · secure-filesystem-server 0.2.0

ToolDescriptionArguments
create_directoryCreate a new directory or ensure a directory exists. Can create multiple nested directories in one operation. If the directory already exist…1 (1 required)
directory_treeGet a recursive tree view of files and directories as a JSON structure. Each entry includes 'name', 'type' (file/directory), and 'children' …2 (1 required)
edit_fileMake line-based edits to a text file. Each edit replaces exact line sequences with new content. Returns a git-style diff showing the changes…3 (2 required)
get_file_infoRetrieve detailed metadata about a file or directory. Returns comprehensive information including size, creation time, last modified time, p…1 (1 required)
list_allowed_directoriesReturns the list of directories that this server is allowed to access. Subdirectories within these allowed directories are also accessible. …0
list_directoryGet a detailed listing of all files and directories in a specified path. Results clearly distinguish between files and directories with [FIL…1 (1 required)
list_directory_with_sizesGet a detailed listing of all files and directories in a specified path, including sizes. Results clearly distinguish between files and dire…2 (1 required)
move_fileMove or rename files and directories. Can move files between directories and rename them in a single operation. If the destination exists, t…2 (2 required)
read_fileRead the complete contents of a file as text. DEPRECATED: Use read_text_file instead.3 (1 required)
read_media_fileRead a file and return it as a base64-encoded content block with its MIME type. Image and audio files are returned as image/audio content; a…1 (1 required)
read_multiple_filesRead the contents of multiple files simultaneously. This is more efficient than reading files one by one when you need to analyze or compare…1 (1 required)
read_text_fileRead the complete contents of a file from the file system as text. Handles various text encodings and provides detailed error messages if th…3 (1 required)
search_filesRecursively search for files and directories matching a pattern. The patterns should be glob-style patterns that match paths relative to the…3 (2 required)
write_fileCreate a new file or completely overwrite an existing file with new content. Use with caution as it will overwrite existing files without wa…2 (2 required)

Error ergonomics pass 54/100

10 malformed inputs per tool (missing/mistyped/null/out-of-range/unknown fields …). Each error response is graded on code · cause · fix · retryable; 24 distinct error shapes graded by the judge ($0.0000), cached.

ToolScoreErrorsAcceptedCases
create_directory53/1009110
directory_tree53/1009110
edit_file48/10010010
get_file_info54/1007310
list_allowed_directories60/1005510
list_directory53/1009110
list_directory_with_sizes58/1009110
move_file45/10010010
read_file60/10010010
read_media_file57/10010010
read_multiple_files64/1007310
read_text_file60/10010010
search_files50/1009110
write_file44/1009110

Weakest errors

Tool · caseGradeResponse
read_file
`path` contains NUL and control characters
✗ code · ✓ cause · ✗ fix · ✗ retryable
llm
Access denied - path outside allowed directories: /private/tmp/claude-501/-Users-admin-Library-Application-Support-Claude-scratch-workspaces-bd294301-74cd-4252-a662-5bde89535ede-775db1f4-0139-439d-a811-1a8f63b77023-scratch-2026-09-02-fed499/4f7244e4-d740-457c-8686-a5dd02bf0943/scratchpad/fs-root/￾…
write_file
`path` is an empty string
✓ code · ✗ cause · ✗ fix · ✗ retryable
heuristic
EISDIR: illegal operation on a directory, rename '/private/tmp/claude-501/-Users-admin-Library-Application-Support-Claude-scratch-workspaces-bd294301-74cd-4252-a662-5bde89535ede-775db1f4-0139-439d-a811-1a8f63b77023-scratch-2026-09-02-fed499/4f7244e4-d740-457c-8686-a5dd02bf0943/scratchpad/fs-root.851…
move_file
`destination` is an empty string
✓ code · ✗ cause · ✗ fix · ✗ retryable
heuristic
Destination already exists: /private/tmp/claude-501/-Users-admin-Library-Application-Support-Claude-scratch-workspaces-bd294301-74cd-4252-a662-5bde89535ede-775db1f4-0139-439d-a811-1a8f63b77023-scratch-2026-09-02-fed499/4f7244e4-d740-457c-8686-a5dd02bf0943/scratchpad/fs-root
read_file
`path` is an empty string
✗ code · ✓ cause · ✓ fix · ✗ retryable
llm
Cannot specify both head and tail parameters simultaneously
read_file
`path` is a 20000-character string
✓ code · ✓ cause · ✗ fix · ✗ retryable
llm
ENAMETOOLONG: name too long, realpath '/private/tmp/claude-501/-Users-admin-Library-Application-Support-Claude-scratch-workspaces-bd294301-74cd-4252-a662-5bde89535ede-775db1f4-0139-439d-a811-1a8f63b77023-scratch-2026-09-02-fed499/4f7244e4-d740-457c-8686-a5dd02bf0943/scratchpad/fs-root/xxxxxxxxxxxxxx…
read_media_file
required field `path` is null
✓ code · ✓ cause · ✗ fix · ✗ retryable
heuristic
MCP error -32602: Input validation error: Invalid arguments for tool read_media_file: Invalid input: expected string, received null at path
read_media_file
`path` is an empty string
✓ code · ✓ cause · ✗ fix · ✗ retryable
llm
EISDIR: illegal operation on a directory, read
read_media_file
an unexpected extra property
✓ code · ✓ cause · ✗ fix · ✗ retryable
llm
ENOENT: no such file or directory, open '/private/tmp/claude-501/-Users-admin-Library-Application-Support-Claude-scratch-workspaces-bd294301-74cd-4252-a662-5bde89535ede-775db1f4-0139-439d-a811-1a8f63b77023-scratch-2026-09-02-fed499/4f7244e4-d740-457c-8686-a5dd02bf0943/scratchpad/fs-root/example'

Protocol conformance n/a

Not applicable to stdio package specs.

Badge

mcpcheck badge

[![mcpcheck](https://agentwares-agentcheck.vercel.app/mcpcheck/demo/badge/filesystem.svg)](https://agentwares-agentcheck.vercel.app/mcpcheck/demo/filesystem)

Machine-readable: report.json · trust.json