Filesystem MCP
The official reference MCP server for giving AI agents controlled read and write access to local files. Its strongest property is the allowed-directory boundary: modern releases perform real-path and symlink checks well, but everything inside an allowed root—including hidden files—can still become reachable, and write or move operations can cause real data loss.
Start with Decision, Access Boundary, Safety, Token Cost and Fit. Setup is intentionally later: for this server, choosing the right directory scope matters more than copying the install command.
Should you use Filesystem MCP?
Coding agents and assistants that need controlled access to one or a few project, document or content directories—especially when the client does not already expose equivalent file tools.
You plan to expose a home directory, secrets folder, production data tree or any broad writable path. The server's sandbox can be technically correct while the permission you chose is still far too broad.
Current releases perform strong real-path and symlink containment against an explicit directory allowlist, with a small 13-tool surface and no external API dependency.
Directory scoping is coarse. Dotfiles and other sensitive files inside an allowed root are still in scope, and write_file, edit_file and move_file can change real data.
/project is a sensible permission. /Users/you usually is not. The most important Filesystem MCP security decision happens before the server starts.
Why Filesystem MCP scores 82/100
The 82/100 score is carried by the filesystem boundary rather than by feature count. For this category, a server that reads and writes files is only useful if path containment remains dependable under traversal, symlinks and recursive operations.
Modern Filesystem MCP performs that core job well. The score is held below the high-80s by write-loss risk, hidden-file exposure, scope surprises from Roots, cross-platform reliability issues and incomplete migration to MCPVerdict's current 2026-07-28 compatibility criteria.
Why it scores well
- explicit allowed-directory model;
- modern real-path and symlink containment;
- local stdio operation with no third-party MCP host;
- clear tool annotations for read-only, destructive and open-world behavior;
- only 13 tools, keeping definition overhead relatively low;
edit_filesupports dry-run diff previews;- Docker makes a second OS-level boundary practical.
Why it does not score higher
- dotfiles are not excluded by default;
write_fileoverwrites existing files;move_filehas a recent reproduced destination-overwrite bug on an affected release;- MCP Roots can replace CLI-provided directories rather than merge with them;
- recursive trees/searches can dump large, irrelevant or sensitive context;
- Windows and schema/client compatibility issues are still present in the 2026 evidence set;
- MCPVerdict marks MCP 2026-07-28 compatibility as incomplete.
What is Filesystem MCP?
Filesystem MCP is the official reference Model Context Protocol server for letting an MCP-compatible AI client read, search, inspect, create, edit and move files inside explicitly allowed local directories.
The canonical package is @modelcontextprotocol/server-filesystem. It runs locally as a Node.js process over stdio, requires no API key or OAuth token, and inherits the operating-system permissions of the process that launches it.
The crucial distinction is that it is not intended to grant unrestricted machine access. The server combines the process's own OS permissions with an MCP-level allowed-directory list, so its effective authority is:
Operating-system process permissions ∩ Filesystem MCP allowed roots.
What can Filesystem MCP do?
The current server documents 13 tools. Nine are read/inspection operations and four can mutate the filesystem. The capability set is intentionally narrow: it handles files and directories rather than shell execution, web browsing, Git hosting or databases.
| Tool | Type | What it does | Risk to watch |
|---|---|---|---|
read_text_file | Read | Reads text content. | Sensitive text can enter model context. |
read_media_file | Read | Reads media/binary content. | Base64-style payloads can become expensive. |
read_multiple_files | Read | Reads several files in one request. | Large batches increase context quickly. |
list_directory | Inspect | Lists directory contents. | Can reveal hidden/sensitive names. |
list_directory_with_sizes | Inspect | Lists contents and sizes. | Broad roots expose more inventory than needed. |
search_files | Inspect | Recursively searches names/patterns. | Can traverse huge repositories and hidden trees. |
directory_tree | Inspect | Returns a recursive tree. | High token risk on large roots. |
get_file_info | Inspect | Returns file metadata. | Low direct risk; still reveals existence/metadata. |
list_allowed_directories | Inspect | Shows the active access boundary. | Useful verification tool. |
write_file | Mutate | Creates or overwrites a file. | Destructive-capable. |
edit_file | Mutate | Applies targeted text edits; supports dry-run. | Dry-run is not enforced by default. |
create_directory | Mutate | Creates a directory. | Lower destructive risk. |
move_file | Mutate | Moves or renames files/directories. | Destructive; affected versions could overwrite destination. |
Current documentation publishes readOnlyHint, idempotentHint, destructiveHint and openWorldHint. The write, edit and move tools are explicitly marked destructive-capable, giving clients a basis for confirmation UX.
How the Filesystem MCP access boundary works
This is the most important technical section of the profile. A correct sandbox with an over-broad root is still an over-broad permission.
Directories can be supplied when the server starts or, in clients that support it, supplied dynamically through MCP Roots. Filesystem operations are validated against the currently allowed roots.
Real-path and symlink containment
The current implementation does more than compare raw path strings. It resolves/canonicalizes targets and checks real paths against the allowed directories. Independent September 2026 testing of filesystem MCP implementations found the official reference server revalidating resolved entries during recursive traversal, which materially improves resistance to symlink escape.
/Users/me/project/src✓/Users/me/project/docs✓/Users/me/project/.env✓ if it exists here/Users/me/project/.git✓ if it exists here
/Users/me/.ssh✕/etc✕/Users/me/other-project✕- symlink target outside allowed root ✕
Roots can change the active boundary
A subtle operational behavior matters here: when a connected client supplies MCP Roots, the current design can replace the CLI-provided allowed-directory set rather than merge with it. That often narrows access, but it can make scope less predictable—directories may disappear and the operator may believe one policy is active while another is actually in effect.
Use list_allowed_directories after setup changes or client switches. For a security-sensitive server, knowing the actual active boundary matters almost as much as choosing a narrow one.
Is Filesystem MCP safe?
Filesystem MCP has strong current directory-containment mechanics, but granting an AI filesystem access remains a high-authority action. The server can be configured safely; it cannot make a poor permission choice safe.
What the server protects well
- operations are constrained to allowed roots;
- current path validation uses canonical/real paths rather than trusting raw strings;
- modern recursive operations re-check entries against the allowlist;
- current tools advertise
openWorldHint: false, reflecting local filesystem scope rather than open-network access; - no API key, OAuth token or third-party MCP host is required.
What directory scoping does not solve
- hidden files inside the root remain accessible;
- an allowed project can still contain
.env,.npmrc, credentials or private exports; - write authority can modify valid files;
- malicious instructions inside local files can still become model input;
- a home-directory allowlist can expose far more data than the task requires while still staying inside the sandbox.
Grade C reflects meaningful local mutation authority. It is not a claim that the server is inherently unsafe; it means the capability surface deserves deliberate scoping, version hygiene and review of destructive actions.
Historical symlink vulnerability
Older releases had a high-severity symlink/path-validation advisory. That history matters because the entire security claim depends on resolving something like /allowed/project/link → /outside/secret before approving access. Modern releases are not the same design as those vulnerable versions, and current independent testing is materially more positive.
../ is not proof of a current sandbox escape
Path schemas can accept strings containing traversal syntax, but schema permissiveness and runtime containment are different layers. The evidence set supports the more precise conclusion: schema-level defense could be stronger, while current real-path validation is considerably stronger than a raw ../ string check.
Write, edit and move safety
Filesystem MCP is not a read-only connector. Its value comes partly from modifying local work, which is also why it deserves stronger safeguards than a documentation-only MCP.
write_file
write_file creates a file or overwrites an existing file. The tool is correctly marked destructive-capable. Use it only where replacement is acceptable or version control/backups make recovery easy.
edit_file
edit_file is the strongest mutation design in the server because it supports dryRun: true and can return a diff before an edit is applied. The limitation is that dry-run is guidance rather than enforced policy—the default is not automatically safe-preview-first.
move_file
A reproduced August 2026 report against version 2026.7.10 found move_file silently overwriting an existing destination even though the documentation said it should fail. That is a real data-loss class behavior. Until the exact deployed release is verified against the fix, treat moves onto potentially occupied destinations as high risk.
| Operation | Main failure mode | Safer default |
|---|---|---|
| Read | Sensitive content enters model context | Expose only task-specific roots |
| Search / tree | Irrelevant secrets + context explosion | Use excludes and narrow roots |
| Write | Existing file replacement | Write to disposable or version-controlled paths |
| Edit | Incorrect targeted change | Use dryRun=true, review diff, then apply |
| Move | Path breakage / destination overwrite | Verify destination does not exist; test on disposable data |
How much context does Filesystem MCP use?
Filesystem MCP has a relatively small fixed tool surface: 13 tools. MCPVerdict estimates the complete tool-schema footprint at roughly 3K–6K tokens per session, depending on the client, schema serialization and target tokenizer.
The bigger variable is usually the tool result, not the schema. A tiny metadata call is cheap. A recursive directory tree, multi-file read, large search result or media payload can dwarf the fixed 3K–6K definition cost.
| Operation | Typical context pressure | Why |
|---|---|---|
get_file_info | Low | Small metadata response. |
list_directory | Low–medium | Depends on folder size. |
read_text_file | Variable | Directly proportional to file size. |
search_files | Medium–high | Can return many paths recursively. |
directory_tree | High | Recursive JSON can become enormous. |
read_multiple_files | High | Can inject whole document/source sets. |
read_media_file | Very high | Binary/base64 representations can be expensive. |
What 3K–6K of schema means on current model windows
| Current model | Documented context | 3K schema | 6K schema |
|---|---|---|---|
| GPT-6 Astra OpenAI | 1,050,000 | 0.29% | 0.57% |
| GPT-5.6 Sol OpenAI | 1,050,000 | 0.29% | 0.57% |
| GPT-5.6 Terra OpenAI | 1,050,000 | 0.29% | 0.57% |
| GPT-5.6 Luna OpenAI | 1,050,000 | 0.29% | 0.57% |
| Claude Fable 5 Anthropic | 1,000,000 | 0.30% | 0.60% |
| Claude Opus 5 Anthropic | 1,000,000 | 0.30% | 0.60% |
| Claude Sonnet 5 Anthropic | 1,000,000 | 0.30% | 0.60% |
| Claude Haiku 4.5 Anthropic | 200,000 | 1.50% | 3.00% |
| Gemini 3.8 Flash | 1,048,576 | 0.29% | 0.57% |
| Grok 4.6 xAI | 500,000 | 0.60% | 1.20% |
| Mistral Medium 3.5 Mistral | 256,000 | 1.17% | 2.34% |
| Mistral Small 4 Mistral | 256,000 | 1.17% | 2.34% |
| Mistral Large 3 Mistral | 256,000 | 1.17% | 2.34% |
| GLM 5.3 Z.ai / Mistral API | 1,000,000 | 0.30% | 0.60% |
Model-window sources checked Sep 27, 2026: OpenAI current model/API pages; Anthropic model and Bedrock context documentation; Google Gemini 3.8 Flash docs; xAI Grok 4.6 docs; Mistral model docs. Percentages are arithmetic reference shares, not tokenizer-specific measurements of the actual Filesystem MCP schema.
The practical rule
Do not optimize only for tool-definition count. A 6K fixed schema is modest on a 1M-token model, but one badly scoped directory_tree over node_modules, .git, build output and caches can cost more than the entire schema many times over.
What does a realistic Filesystem MCP evaluation cost?
The MCP server itself costs $0: there is no subscription and no third-party API requirement. Model usage is the variable cost.
A realistic evaluator run would test normal reads, outside-root refusal, traversal, symlink escape, recursive search, dry-run editing, actual edits, overwrites, move collisions and hidden-file exposure. The working budget used here is approximately 30K input + 8K output tokens.
| Current model | Input / output price used | Approx. 30K + 8K run |
|---|---|---|
| GPT-6 Astra | $10 / $50 / 1M | $0.70 |
| GPT-5.6 Sol | $4 / $20 / 1M | $0.28 |
| GPT-5.6 Terra | $2 / $12 / 1M | $0.16 |
| GPT-5.6 Luna | $0.20 / $1.20 / 1M | $0.02 |
| Claude Fable 5.1 | $10 / $50 / 1M | $0.70 |
| Claude Opus 5.5 | $4 / $20 / 1M | $0.28 |
| Claude Sonnet 5 | $2 / $10 / 1M | $0.14 |
| Claude Haiku 4.5 | $1 / $5 / 1M | $0.07 |
| Gemini 3.8 Flash | $0.75 / $3.75 / 1M | $0.05 |
| Grok 4.6 | $2 / $6 / 1M | $0.11 |
| Mistral Medium 3.5 | $1.50 / $7.50 / 1M | $0.10 |
| Mistral Small 4 | $0.15 / $0.60 / 1M | $0.01 |
| Mistral Large 3 | $0.50 / $1.50 / 1M | $0.03 |
Prices were checked against current vendor pages on Sep 27, 2026 where available. They are examples for the stated token budget, not a permanent price promise; caching, long-context tiers, regional processing and promotions can change the bill.
Wall-clock test budget
- install and configure: about 2–5 minutes;
- 12-task safety/function gauntlet: about 20–30 minutes;
- review: about 10 minutes;
- total: roughly 30–45 minutes.
The hidden costs matter more
- accidental file loss from write/move operations;
- secret exposure when broad roots include sensitive files;
- token explosion from recursive trees/searches;
- operator confusion when Roots change the active allowlist;
- duplicating native filesystem tools already provided by the AI client.
MCP 2026-07-28 compatibility is incomplete
MCPVerdict currently marks compatibility as not yet complete. The repository's current source metadata still uses @modelcontextprotocol/sdk ^1.30.0, while the Filesystem README continues to recommend MCP Roots for dynamic directory control.
That combination is the basis for the compatibility score of 72: the server is broadly usable across stdio clients, but its lifecycle and Roots model still reflects the earlier protocol generation rather than a clean current-spec migration.
Interoperability can remain good while a reference server still carries older lifecycle assumptions.
Which AI clients work with Filesystem MCP?
The canonical server is a local stdio MCP process, so any client that can launch a local stdio server can potentially use it. The important distinction is evidence strength: some clients document the local stdio path clearly, while others should be verified against their current MCP configuration before you rely on them.
| Client | Evidence status | Practical note |
|---|---|---|
| Claude Desktop | Documented path | The official MCP quickstart uses the canonical Filesystem package as the standard local-file example. |
| Claude Code | Compatible | Can launch stdio MCP servers; Roots behavior deserves attention because client-provided roots can change the active allowlist. |
| VS Code | Compatible | Use the client's current MCP server configuration shape and verify tools appear after reload/restart. |
| Cursor | Compatible | Cursor officially supports local stdio MCP servers via mcp.json; project-scoped configuration is a natural fit for Filesystem MCP. |
| Codex | Verify current config | Treat the Filesystem server as a standard local stdio MCP and verify current client syntax before publishing a dedicated guide. |
| OpenCode | Verify current config | Local stdio MCP support may make it compatible; verify the current OpenCode configuration and tool behavior before relying on it. |
| Antigravity | Verify current config | Treat this as standard local MCP compatibility rather than a first-party Filesystem-specific integration claim. |
| LM Studio | Package ambiguity | LM Studio supports MCP, but search results often surface third-party filesystem packages. Use the canonical package name explicitly. |
“Filesystem MCP Python” is not a mode of the official reference server. The canonical implementation evaluated here is Node.js. Python results refer to alternative implementations or servers built with a Python MCP SDK; they are not this canonical Node.js package.
How to install Filesystem MCP
The install is simple. The permission choice is not. Start with one disposable or version-controlled project directory; verify the active boundary; only then widen access if the workflow actually needs it.
NPX / standard stdio configuration
For JSON-based clients that use the common mcpServers shape, the canonical package can be launched with one or more allowed-directory arguments:
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/absolute/path/to/project"
]
}
}
}
The final path is not decorative configuration—it is the security boundary. Prefer an absolute project path over a home directory.
Cursor project configuration
Cursor supports project-level .cursor/mcp.json. That is a strong match for Filesystem MCP because the configuration can live beside the project whose files you intend to expose.
Docker for stronger isolation
Docker can create a second independent boundary: the container can only see mounted paths, and Filesystem MCP then applies its own allowlist inside that view. For read-only evaluation, mount the project read-only first.
docker run -i --rm -v /absolute/path/to/project:/workspace:ro mcp/filesystem /workspace
After confirming reads, use a separate disposable writable directory for edit/move tests rather than turning the whole project writable immediately.
Create one disposable project directory, expose only that directory, run the MCP with a read-only container mount first, deliberately test traversal and symlink escape, then enable a writable disposable subdirectory and test edits/moves separately.
Why Filesystem MCP is not working
The 2026 issue history shows that not every Filesystem MCP failure is user configuration. Start with the simplest boundary/runtime checks before blaming the client or server.
| Symptom | Likely cause | What to check |
|---|---|---|
| Server never starts | Node/NPX unavailable or GUI PATH mismatch | Run node --version and npx --version in the same environment; use an absolute executable path if needed. |
| Allowed folder disappears | Client-provided Roots replaced CLI directories | Call list_allowed_directories and inspect the active root set. |
| “Outside allowed directories” | Path is not under active root or resolves outside via symlink | Check canonical path and the active allowlist rather than only the text path. |
| Reads work; writes hang/fail | Version/client compatibility issue | Pin/check current package version and review recent write/schema issues. |
| Tool appears connected but calls fail | Schema/client incompatibility | Verify a real tool call; do not treat a green connection indicator as proof. |
| Windows spawn error | Spaces/path handling in GUI launcher | Use a command wrapper or absolute executable path; inspect client logs. |
| Unexpected file created on POSIX | Windows-style path interpreted literally | Use native absolute paths for the host OS and test on disposable data. |
| Context blows up | Recursive tree/search over broad root | Narrow root; use exclude patterns; target search before reading files. |
Restart and verify
Many local MCP clients load server definitions at startup or on explicit reload. After changing the config, restart/reload the MCP host and confirm both the tool list and list_allowed_directories rather than assuming the edited file was picked up.
What is Filesystem MCP actually useful for?
Filesystem MCP is most useful when an agent needs repeatable directory access rather than a one-off file upload. The value comes from persistent, scoped access; the risk comes from the same persistence when the root is too broad.
Let an agent inspect source files, configs, docs and assets inside one controlled root.
Find files and paths recursively without granting a full terminal or arbitrary command execution.
Create/update source, configuration, documentation and templates; use dry-run previews for targeted edits.
Useful when a coding agent already has its repo workspace but needs a separate notes, docs or content directory.
Do you actually need Filesystem MCP?
Use it when it adds a controlled filesystem capability your client does not already provide, or when you need a standardized MCP interface to a directory outside the client's native workspace.
It can be redundant in coding agents that already have strong native read/search/patch/create tools scoped to the current project. In that case the adoption question is not “Can Filesystem MCP edit files?” but “Does it add useful scope or portability without duplicating tools, increasing context and creating another permission surface?”
| Situation | Filesystem MCP fit | Reason |
|---|---|---|
| General AI client has no local file tools | Strong | Adds the missing capability directly. |
| Coding agent needs a second docs/content directory | Strong | Useful controlled access outside native workspace. |
| Coding agent already has equivalent workspace tools | Conditional | May duplicate native functionality and tool schemas. |
| Need terminal execution | Poor | This is not a shell or code-execution MCP. |
| Need cloud-drive collaboration | Poor | Use the provider's cloud/storage integration instead. |
| Need broad unattended write access to production data | Poor | Permission surface and recovery risk are too high for the default setup. |
For remote repository operations rather than local directory access, compare GitHub MCP.
MCPVerdict assessment
Filesystem MCP is a simple server with an unusually important security boundary. Unlike cloud MCPs, it needs no token and does not send filesystem requests to a third-party MCP host. Modern releases also appear to handle real-path and symlink containment well, including recursive operations—the single most important technical requirement for an allowed-directory sandbox.
The danger is mostly configuration and mutation authority rather than product complexity. Once a directory is allowed, hidden files and sensitive project artifacts are generally fair game, while write/edit/move tools can change real local data. The safest default is one project directory, preferably container-mounted, read-only until write capability is actually needed.
Its remaining strategic weakness is protocol age: the current implementation still leans on the earlier Roots/SDK v1 model, and the 2026 evidence set contains enough client, path and destructive-write bugs to justify Moderate rather than High verdict confidence.
Recommended when the root is narrow. The same server becomes a bad default when the root is broad.
Filesystem MCP technical details
Show the full technical profile
| Attribute | Evaluated value |
|---|---|
| Canonical | github.com/modelcontextprotocol/servers/tree/main/src/filesystem |
| Publisher | Model Context Protocol / Linux Foundation project |
| npm package | @modelcontextprotocol/server-filesystem |
| Evaluated distribution version | 2026.8.31 |
| License | MIT |
| Runtime | Node.js |
| Transport | stdio |
| Hosted reference endpoint | No |
| Authentication | None |
| Effective authority | OS process permissions ∩ MCP allowed roots |
| Declared tools | 13 |
| Read/inspection tools | 9 |
| Write/mutation tools | 4 |
| Open network requirement | No for filesystem operations |
Tool openWorldHint | false |
| Dynamic directory control | MCP Roots |
| Hidden files excluded by default | No |
| Dry-run edit | Yes |
| Telemetry | None found |
| Estimated schema overhead | ~3K–6K tokens/session |
| Scan grade | C |
| Overall score | 82/100 |
| Confidence | Moderate |
| MCP 2026-07-28 | Evaluator: incomplete / not yet |
Derived decision parameters
| Parameter | Score | Why it matters |
|---|---|---|
| Sandbox escape resistance | 91 | Current realpath/symlink containment is strong; historical CVE prevents a perfect score. |
| Scope predictability | 73 | Roots can dynamically replace startup directories. |
| Write-loss containment | 69 | Dry-run editing helps; overwrite-capable tools and move bug reduce confidence. |
| Sensitive-file minimization | 62 | Directory scoping does not exclude dotfiles or secret types. |
| Search/context efficiency | 71 | Excludes help, but broad recursive results can become expensive. |
| Edit precision | 86 | Targeted edits plus diff/dry-run are strong. |
| Platform path correctness | 68 | Recent Windows/POSIX path issues remain in the evidence set. |
| Native filesystem differentiation | 72 | Very useful where native file tools are absent; redundant for some coding agents. |
Recent Filesystem MCP evidence
The verdict uses current package data, recent security research and issue evidence rather than treating the README as the complete truth. Positive findings and negative reports are separated so one bug does not erase the underlying architecture—and one good security audit does not erase real operational failures.
Evidence confidence: strong corpus; overall verdict confidence Moderate because the current 2026.8.31 package was not independently run through the full live gauntlet in this profile.
Show the evidence set
- Current package: npm publishes
2026.8.31as the current distribution. - Sandbox design: current implementation performs canonical/real-path checks against allowed directories.
- Independent Sep 2026 survey: official reference implementation was reported as defended by design against recursive symlink escape.
- Historical advisory: older symlink/path-validation releases had a high-severity vulnerability and were patched.
- Roots behavior: client Roots can replace CLI-provided directories, creating scope surprises.
- Hidden files: dot directories are not automatically excluded, increasing secret and context risk.
- Write annotations: write, edit and move operations are declared destructive-capable.
move_fileAug 2026: version 2026.7.10 could silently overwrite an existing destination.- Write reliability: 2026 reports documented write hangs in some NPX/client combinations.
- Schema compatibility: strict clients have hit parameter/output-schema incompatibilities in affected releases.
- Windows startup: GUI launch paths with spaces have caused spawn/startup failures.
- Cross-platform path handling: a Windows-style path could be interpreted as a literal filename on POSIX in a reported edge case.
- Release lag: repository fixes have at times taken time to reach the published latest package.
- Current direct vulnerabilities: the review found no current direct known vulnerability listing for 2026.8.31 at review time.
- Open source / telemetry: no telemetry or analytics endpoint was found in the local implementation.
Primary/recent sources: canonical source · npm package · move overwrite issue · Roots replacement issue · historical advisory · Sep 2026 filesystem MCP security survey.
Filesystem MCP questions
What is an MCP filesystem?
In this context, it means an MCP server that exposes filesystem operations as tools an AI client can call. The official reference Filesystem MCP limits those operations to explicitly allowed local directories.
Does Filesystem MCP give an AI access to my whole computer?
No—not by design. It operates inside allowed roots and the OS permissions of the process. But if you configure your whole home directory or disk root as allowed, you have effectively made the permitted scope very broad.
Is Filesystem MCP a JSON file?
No. MCP is the protocol and Filesystem MCP is a server implementation. JSON files are commonly used by MCP clients to configure the command, arguments and paths used to launch local servers.
Is Filesystem MCP free?
Yes. The server itself requires no paid API or subscription. Your AI model usage still consumes tokens, and the practical hidden costs are context, operational mistakes and review time.
Can Filesystem MCP edit files?
Yes. edit_file supports targeted edits and a dry-run diff mode. write_file can overwrite files, and move_file is destructive-capable.
Does Filesystem MCP exclude .env or .git automatically?
No. Hidden files and directories inside an allowed root are not automatically outside scope. Keep sensitive files outside the allowed root or explicitly exclude irrelevant paths where the tool supports it.
Is the official Filesystem MCP written in Python?
No. The canonical server evaluated on this page is the Node.js package @modelcontextprotocol/server-filesystem. Python filesystem MCPs are separate implementations and should not be conflated with the official reference server.
Why does Filesystem MCP stop seeing a directory I added at launch?
If the connected client supplies MCP Roots, those client roots can replace the CLI-provided directory list. Check list_allowed_directories to see the active boundary.
Is a local Filesystem MCP private?
The MCP process itself operates locally and does not require a third-party MCP host. File contents returned by tools can still be sent into the AI model's context, so privacy also depends on the client/model path you use.