MCP Filesystem Server
Anthropic's reference MCP server for filesystem access. Read, write, search, move, and list files inside a configured allowlist of directories. The canonical example for understanding how MCP tool exposure works in practice — most third-party MCP servers borrow its argument-validation patterns.
Overview
What it is and how it works
The MCP Filesystem Server is Anthropic's reference implementation of a Model Context Protocol server that exposes local file operations — read, write, edit, move, search, list, and get metadata — as callable tools an LLM client can invoke. It lives in the modelcontextprotocol/servers monorepo alongside the other reference servers (fetch, memory, git, and so on), and it is the server most people run first when they set up MCP, because "let the model touch files on my machine" is the most immediately useful and most immediately dangerous thing you can wire into an agent.
Architecturally it is deliberately simple. The server is a small Node.js process that speaks the MCP protocol — JSON-RPC-style messages describing available tools, their JSON-schema argument shapes, and their results — over either stdio (the default for local desktop use, e.g. spawned as a child process by Claude Desktop or another MCP host) or a remote transport for networked deployments. On startup, it takes a list of allowlisted root directories as arguments. Every tool call is checked against that allowlist before touching disk: path arguments are resolved and normalized, then verified to fall inside one of the permitted roots, which is what stops an agent from being tricked into reading ../../.ssh/id_rsa or writing outside the sandbox via .. traversal or symlink tricks. This allowlist-plus-path-validation pattern is the single most copied piece of code in the MCP ecosystem — a large share of third-party servers that touch any kind of resource (databases, cloud storage, local repos) lift this exact validation approach almost verbatim, which is part of why the project is described as "canonical" rather than just "popular."
The tool surface itself is intentionally narrow and unopinionated: read_file, write_file, edit_file (line-based or diff-style patch application depending on version), create_directory, list_directory, move_file, search_files, and get_file_info. There's no built-in understanding of file types — a call to read a 50MB video file behaves the same as a call to read a 2KB config file, because the server does not inspect content, only enforce path boundaries and hand bytes back to the model. That's a conscious minimalism: it's a reference implementation meant to demonstrate the protocol correctly, not a hardened production file-management API.
Deployment patterns
The overwhelmingly common deployment is solo and local: a developer adds the server to their MCP host's config (Claude Desktop's claude_desktop_config.json, or an equivalent config in Cursor, Windsurf, Cline, or another MCP-aware client), pointing it at one or two project directories via npx -y @modelcontextprotocol/server-filesystem /path/to/project. The host spawns the server as a stdio subprocess per session — no daemon, no persistent listener, no network exposure. This is the "let Claude read and edit my repo" pattern, and it's low-risk precisely because the allowlist is scoped to a single project folder and the process dies with the session.
The second pattern is per-project configuration in a team or homelab setting: each repository or workspace gets its own MCP server config with its own allowlisted roots, checked into .mcp.json or similar so teammates get consistent tool access when they open the project. This is where the "requires per-directory configuration for each project" con in the source data actually bites — there's no global "trust this whole machine" mode by design, so multi-project setups mean repeating the config per workspace, which is friction but also the actual safety mechanism.
Remote/server deployment is rarer and more deliberate: running the filesystem server behind a remote MCP transport so multiple clients or a hosted agent can reach a shared filesystem (e.g., a CI runner's workspace, a shared NAS-backed directory). This shows up in more sophisticated internal tooling setups, not consumer usage, and it raises the stakes on the allowlist configuration since now it's gatekeeping access for potentially multiple untrusted callers rather than a single local user's own files.
How it compares
Within the MCP server ecosystem, the closest comparisons are the other Anthropic reference servers — mcp-server-git (structured git operations instead of raw file I/O) and mcp-server-fetch (HTTP retrieval) — which share the same minimalist, single-responsibility philosophy and the same stdio-first transport story. Filesystem is the one people reach for most because raw file access is a prerequisite for almost any coding-agent workflow, whereas git and fetch are more specialized.
Outside the reference set, third-party filesystem-adjacent servers (various community-built "smart" filesystem or codebase-indexing MCP servers) typically add things this one deliberately omits: semantic search over file contents, chunking/embedding for large codebases, gitignore-aware traversal, or content-type-aware previews for binaries and images. Those tools trade the reference server's auditability and small surface area for more capability — reasonable if you need RAG-style code search, but it's more code to trust and more attack surface to validate. Compared to giving an agent raw shell access (e.g., via a general-purpose exec/terminal MCP server), the filesystem server is far more constrained: shell access can do anything the OS user can do, while this server can only do the specific file operations it exposes, inside the specific directories it was configured with. That narrower blast radius is the main reason to prefer it over a shell-based workaround for pure file-editing tasks.
Best use cases and honest limitations
This is the right tool whenever an agent needs to read or edit files in a known, bounded set of directories — coding assistants working in a repo, documentation generators, local note-taking or knowledge-base agents. The Anthropic-maintained reference status and strict allowlisting mean it's a reasonable default to trust more than a random community server, and the stdio/remote transport flexibility covers both the desktop and the networked-service case.
It is a poor fit if you need content-awareness: because it has no content-type heuristics, pointing it at a directory containing large binaries, images, or media files means those bytes come through raw to the model, wasting context and potentially failing outright on very large files — you'll want a purpose-built ingestion or chunking layer in front of it for that. It's also not a fit for "just let the agent access whatever it needs" convenience, since every new project or directory means another explicit config entry; there's no discovery mechanism, and that's by design, not an oversight. Teams wanting fine-grained per-tool permissions (read but not write, for instance) will find the tool set is all-or-nothing per configured root — you allowlist a directory, and read/write/move/search all become available there. For anyone building or auditing their own MCP server, though, this remains the right place to start reading source, precisely because its patterns are what the rest of the ecosystem imitates.
Stack & relationships
How MCP Filesystem Server relates to other entries in the catalog — recommended pairings, alternatives, dependencies, and edges to avoid. Each edge carries a one-line operator note from our editorial team.
Recommended stack
- Commonly deployed withClaude Desktop
The reference deployment example for MCP. Configure filesystem allowlists in Claude Desktop's MCP config; the server starts on app launch.
- Commonly deployed withClaude Code
Same wiring as Claude Desktop. Most agent workflows that need local-file access pull this server in.
- Pairs withMCP Git Server
Together they give an agent full local-repo awareness — filesystem reads files, git reads metadata (status / diff / log / blame).
Works with
- Integrates withOpenHands
Filesystem MCP is non-optional for OpenHands — it's how the agent reads and writes project files. Allowlist limits blast radius.
Featured in these stacks
The L3 execution stacks that pick this tool as a recommended component, with the one-line note explaining the role it plays in each.
- Stack · L3·Workstation tier·Role: File access (the agent's hands on the codebase)Build a local coding-agent stack (May 2026)
The Anthropic reference filesystem MCP server with strict directory allowlisting. Required for OpenHands to read and write project files; allowlist limits blast radius when the agent goes off the rails.
- Stack · L3·Workstation tier·Role: MCP filesystem (file access with allowlisting)Build a memory-enabled local agent stack (May 2026)
Strict directory allowlist limits the agent's blast radius. Required for any agent that edits files; non-optional for a memory-enabled agent that may take destructive actions based on remembered context.
- Stack · L3·Workstation tier·Role: MCP filesystem (strict allowlist)Build a fully offline coding stack (May 2026)
Reference Anthropic filesystem MCP. Strict directory allowlisting limits the agent's blast radius — non-optional for offline deployments where the network can't catch a destructive mistake.
Pros
- Anthropic-maintained reference implementation
- Strict directory allowlisting prevents path-escape attacks
- Stdio + remote transport support
Cons
- No content-type heuristics — large binary files come through raw
- Requires per-directory configuration for each project
Compatibility
| Operating systems | macOS Linux Windows |
| GPU backends | n/a |
| License | Open source · free (OSS, MIT) |
Runtime health
Operator-grade signals on how actively MCP Filesystem Server is being maintained, how fresh its measurements are, and what failure classes operators have flagged. Every label below is anchored to a real date or count — we never infer maintainer activity we can't show.
Release cadence
Derived from the most recent editorial signal on this row.
32 days since last refresh · source: enrichedAt
Benchmark freshness
How recent the editorial measurements on this runtime are.
No editorial benchmarks for this runtime yet.
Community reproduction
Submissions that match an editorial measurement on similar hardware.
No community reproductions on file yet.
Get MCP Filesystem Server
Frequently asked
Is MCP Filesystem Server free?
What operating systems does MCP Filesystem Server support?
Does MCP Filesystem Server need a GPU?
Reviewed by RunLocalAI Editorial. See our editorial policy for how we evaluate tools.
Related — keep moving
Verify MCP Filesystem Server runs on your specific hardware before committing money.