secure-filesystem-server
[ tools: 14 ][ checks: 11 ][ latency: 43ms ]
82/100(B)
npx -y @modelcontextprotocol/server-filesystem <dir>
check breakdown
✓Tools exposed — Server exposed 14 tools.
• read_file
• read_text_file
• read_media_file
• read_multiple_files
• write_file
• edit_file
• create_directory
• list_directory
• list_directory_with_sizes
• directory_tree
• move_file
• search_files
• get_file_info
• list_allowed_directories
✓Input schemas valid — All tools have a valid JSON-Schema input definition.
!Input schema quality — 18 schema-quality issue(s) across 14 tool(s).
read_file.path: parameter has no description
read_text_file.path: parameter has no description
read_media_file.path: parameter has no description
write_file.path: parameter has no description
write_file.content: parameter has no description
edit_file.path: parameter has no description
edit_file.edits: parameter has no description
create_directory.path: parameter has no description
list_directory.path: parameter has no description
list_directory_with_sizes.path: parameter has no description
directory_tree.path: parameter has no description
directory_tree.excludePatterns: parameter has no description
move_file.source: parameter has no description
move_file.destination: parameter has no description
search_files.path: parameter has no description
search_files.pattern: parameter has no description
search_files.excludePatterns: parameter has no description
get_file_info.path: parameter has no description
→ Declare `required` for every schema that has properties, so agents know which params are mandatory.
→ Give every property a `description` and a concrete `type` (avoid bare `{}` placeholders).
✓Output schemas — All tools declare a valid outputSchema.
✓Duplicate tool names — All tool names are unique.
✓Tool naming — All tool names use spec-legal characters.
!Descriptions — 18 description issue(s) found.
read_file.path: parameter has no description
read_text_file.path: parameter has no description
read_media_file.path: parameter has no description
write_file.path: parameter has no description
write_file.content: parameter has no description
edit_file.path: parameter has no description
edit_file.edits: parameter has no description
create_directory.path: parameter has no description
list_directory.path: parameter has no description
list_directory_with_sizes.path: parameter has no description
directory_tree.path: parameter has no description
directory_tree.excludePatterns: parameter has no description
move_file.source: parameter has no description
move_file.destination: parameter has no description
search_files.path: parameter has no description
search_files.pattern: parameter has no description
search_files.excludePatterns: parameter has no description
get_file_info.path: parameter has no description
→ Descriptions are the model's only guide to when/how to call a tool — treat them as prompt engineering.
→ Describe every tool and every parameter, including units, formats, and constraints.
→ Each tool's description should say something the name doesn't, and should be unique to that tool.
!Tool annotations — Annotation coverage 51% (36/70 hint fields set).
Some tools set a few hints but not all of title/readOnlyHint/destructiveHint/idempotentHint/openWorldHint.
→ Add annotations: title, readOnlyHint, destructiveHint, idempotentHint, openWorldHint.
→ These let clients gate risky calls and give agents/users a friendly display name — optional but valuable.
✓Tool titles — All tools declare a human-readable title.
!Server instructions — No top-level instructions declared.
→ Declare instructions to guide agents on when/how to use this server.
→ Return a non-empty `instructions` string in your InitializeResult — most SDKs let you set this alongside serverInfo.
✓Handshake + list latency — tools/list responded in 43ms.
add the badge
Paste into your README:
[](https://scoremcp.dev/servers/server-filesystem)