
Filesystem MCP Server
github.com/modelcontextprotocol/servers-filesystem- Category
- Developer Tools
- Rank
- No. 324Tools index
- Pricing
- Free
- Type
- TOOL
- Builder
- modelcontextprotocol
- GitHub
- 89.6k stars
- Latest release
- 2026.7.10
- Added
- Jul 4, 2026
About
The official Filesystem MCP reference server gives an agent secure, sandboxed read/write access to a directory — listing, reading, writing, moving, and searching files — with configurable allowed paths, through the Model Context Protocol.
What it does
This TypeScript MCP service turns a chosen local workspace into an agent-operated file console. It supports text and media reads, partial reads, batch access, edits with diff previews, directory inspection, search, and file movement. Clients may supply accessible roots when they support that protocol feature.
Why it's ranked here
This is strongest as an educational baseline with unusually visible access-control mechanics. Path checks reject escapes, inspect symbolic-link targets, and verify parent directories before creating files. Atomic replacement reduces write race exposure. The repository explicitly warns that its reference servers are not production-ready, so deployment still demands a threat-model review.
What's good
The design treats containment as more than a string-prefix check. It normalizes paths, resolves symbolic links, rejects null bytes, and handles Windows drives, network paths, WSL paths, and the macOS temporary-directory alias. Dry-run edits return unified diffs, while head and tail reads avoid loading an entire text file unnecessarily.
Tradeoffs
Its security boundary depends on correctly chosen allowed directories and remains reference code, not a promised production control. Media reads stream input but collect every chunk before Base64 encoding, so large binaries still consume memory. Flexible whitespace matching during edits can replace text even when indentation differs from the requested source.
How to use it well
Use it for local coding assistants, document workflows, and prototypes where an MCP client needs controlled workspace access. Start with the narrowest directories, inspect dry-run diffs before edits, and evaluate the safeguards against your own threat model. It does not provide Git operations, remote storage access, browser automation, or production security assurance.
Technical notes+
src/filesystem/index.ts creates an McpServer over StdioServerTransport, accepts allowed directories from CLI arguments or MCP roots, validates accessible directories, and defines Zod schemas plus structured tool outputs. src/filesystem/lib.ts centralizes path validation, atomic writes through temporary-file rename, unified diffs, flexible edit matching, searches, and chunked head or tail reads. src/filesystem/path-validation.ts performs normalized containment checks and rejects null bytes. src/filesystem/path-utils.ts covers tilde expansion, WSL preservation, Windows drive conversion, and UNC normalization. src/filesystem/roots-utils.ts resolves file URIs, realpaths roots, and excludes invalid or non-directory entries. src/filesystem/vitest.config.ts configures Node-based Vitest discovery and V8 coverage.
Observed
- License
- Apache License 2.0 for new contributions, with existing code under MIT.
- Primary language
- TypeScript on Node.js, using ECMAScript modules.
- Packaging
- Published as the npm package @modelcontextprotocol/server-filesystem and runnable through npx.
- Interface
- MCP server using standard input and output transport, configured by CLI arguments or MCP roots.
- Platform handling
- Contains explicit normalization logic for Unix, Windows drive, UNC, WSL, and macOS symlinked temporary paths.
- Validation
- Uses Zod schemas for tool inputs and structured outputs.
- Testing surface
- Vitest is configured for Node execution with V8 coverage and test discovery under dedicated test directories.
Read from README.md, package.json, src/memory/index.ts, src/filesystem/lib.ts, src/everything/index.ts, src/filesystem/index.ts, src/memory/vitest.config.ts, src/filesystem/path-utils.ts, src/sequentialthinking/lib.ts, src/filesystem/roots-utils.ts, src/sequentialthinking/index.ts, src/everything/vitest.config.ts, src/filesystem/vitest.config.ts, src/filesystem/path-validation.ts, src/sequentialthinking/vitest.config.ts.
Tags
Tech Stack
Comments (0)
No comments yet
Indexed by a proprietary survey. Corrections welcome.