An MCP server that can only read and write files inside allowed folders
Solid filesystem tool suite with complete schemas, structured output types, and proper error handling via ToolError. All 4 tools have descriptions (in Japanese) and input schemas with typed parameters. Tool annotations correctly applied (READ_ONLY for 3 tools, destructive_hint for write_file). Key strengths: path validation prevents traversal attacks, output models are well-structured (AllowedDirectories, DirectoryListing, FileContent, WriteResult). Weaknesses: descriptions are in Japanese (limits LLM understanding in English-first contexts), parameter descriptions lack format/constraint details (e.g., encoding param doesn't specify valid values), no pagination for list_directory despite potential for large results, error messages could guide recovery better.
このサーバーが読み書きを許可されているフォルダの一覧を返します。
許可フォルダ内にあるフォルダの、ファイル・フォルダの一覧を返します。
許可フォルダ内にあるテキストファイルの内容を読み込んで返します。
許可フォルダ内のファイルにテキストを書き込みます。既存のファイルは上書きされます(append を True にすると末尾に追記します)。
Descriptions in Japanese only; LLMs trained primarily on English will struggle to understand tool purpose and parameters. Descriptions should be in English for broad compatibility.
list_directory lacks pagination (limit, offset, or cursor). Large directories could return hundreds of entries, bloating context and degrading LLM reasoning. Should cap results at 50 and offer pagination.
Parameter 'encoding' in read_file and write_file lacks constraint documentation. Description should specify valid values (utf-8, ascii, latin-1, etc.) or note that Python's codec names are accepted.
Error messages from resolve_allowed_path and tool handlers are generic. Should include recovery guidance: 'Path not allowed: /etc/passwd. Allowed directories: /home/user/docs, /tmp/work'.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 62 | 2026-07-28+ | v2 |
write_file is destructive but lacks a dry-run or confirmation step. Agents could accidentally overwrite critical files. Consider adding a 'dry_run' parameter or a separate 'preview_write' tool.