Menu

AI

Filesystem MCP Server: Tools, Setup and Security

The MCP project's Filesystem reference server lets an AI app read and edit local files inside allowed directories. Its 13 tools, setup and safety notes.

By: Irina ShvayaOctober 28, 2026

Filesystem MCP Server: Tools, Setup and Security

This profile is part of our MCP server directory, within The MCP Guide. Profiles are checked against each vendor's own documentation. Need a server built? See MCP development.

The Filesystem MCP server lets an AI app read, write, edit, move and search files on your computer. It only touches folders you allow when you start it. It is a reference server published by the Model Context Protocol project in the modelcontextprotocol/servers repository.

Checked against: Filesystem MCP Server README on 28 October 2026. eSEOspace did not install or test this server.

The repository describes all its servers this way: "The servers in this repository are intended as reference implementations to demonstrate MCP features and SDK usage. They are meant to serve as educational examples for developers building their own MCP servers, not as production-ready solutions."

Key Takeaways

  • Filesystem is an MCP project reference implementation, not a production-ready file service.
  • It works only inside "allowed directories" you pass on the command line.
  • It has read tools and write tools; write_file, edit_file and move_file are marked destructive.
  • The README warns that hard links can let an edit change a file outside the allowed folders.
  • It runs locally over stdio, needs Node.js 24 or later for npx, and is free under the MIT License.

At a glance

FieldDetail
PublisherModel Context Protocol project (reference servers maintained by the MCP steering group)
Official?Yes, an MCP project reference server
HostingLocal package @modelcontextprotocol/server-filesystem, or Docker image mcp/filesystem
Transportstdio
Sign-inNone
Read or writeBoth
PriceFree and open source (MIT License)
Source codegithub.com/modelcontextprotocol/servers/src/filesystem
StatusReference implementation, "not production-ready" per the repo

What it can do

The README lists these tools.

Read-only tools:

  • read_text_file: reads a file as UTF-8 text, with optional head or tail line limits.
  • read_media_file: returns an image, audio or other file as base64 with its MIME type.
  • read_multiple_files: reads several files in one call.
  • list_directory and list_directory_with_sizes: list folder contents.
  • directory_tree: returns a recursive JSON tree.
  • search_files: glob-style recursive search with exclude patterns.
  • get_file_info: size, dates, permissions and hard-link count.
  • list_allowed_directories: shows which folders the server may touch.

Write tools:

  • create_directory: creates a folder and any parents.
  • write_file: creates or overwrites a file.
  • edit_file: makes pattern-based edits and returns a git-style diff. It has a dryRun option, and the README's best practice is to "Always use dryRun first."
  • move_file: moves or renames files and folders, and fails if the destination exists.

The server sets MCP tool annotations on every tool. Read tools are readOnlyHint: true. write_file, edit_file and move_file carry destructiveHint: true. Our page on MCP tool annotations explains what these hints do and why clients should not trust them blindly.

Large or slow folders have limits. Path lookups wait at most 15 seconds, and search_files and directory_tree stop after 100,000 entries.

How to connect it

Pass every allowed folder as an argument. This is the README's Claude Desktop config using npx:

{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-filesystem",
        "/Users/username/Desktop",
        "/path/to/other/allowed/dir"
      ]
    }
  }
}

On Windows, the README wraps the command as "command": "cmd" with "/c", "npx" at the start of args.

The Docker option mounts folders under /projects. Adding ro to a mount makes that folder read-only to the server, which is a simple way to limit risk. The README also gives VS Code configs that use ${workspaceFolder}.

The MCP project's own guide to connecting local servers uses this server as its worked example.

Security notes

Allowed directories are the main control. Command-line folders are the method the README recommends, and "the only method that works on every protocol version." Older clients could replace them at runtime through Roots, but Roots is deprecated as of the 2026-07-28 spec.

Symlinks are checked. Every path is resolved and checked, so a symlink pointing outside an allowed folder is refused.

Hard links are not. The README says checks are path-based. If a file inside an allowed folder is hard-linked from elsewhere, an edit changes it everywhere. It names pnpm's package store as a common case. A hardLinks count above 1 in get_file_info is the warning sign.

Writes are not crash-safe. The README says an overwrite "is not crash-atomic," so a crash mid-write can leave a partial file.

Practical steps: allow the narrowest folders you can, mount read-only with Docker where possible, and keep approval prompts on for write tools. See excessive permissions in MCP, sandboxing local servers and the MCP security center.

Alternatives

  • Git MCP server: works inside one repository and gives you version history as a safety net.
  • Cloud file servers from Box, Dropbox or Google Drive, if your files live in a shared drive rather than on one laptop.

More profiles are on our MCP server profiles hub.

Next step

Giving an AI app file access is a policy question as much as a technical one. Our MCP readiness audit helps you decide which folders, tools and approval rules make sense for your team.

Frequently asked questions

Can the Filesystem server delete files?

The documented tool list has no delete tool. However, write_file overwrites, edit_file changes content and move_file removes the source after moving. All three are annotated as destructive, so keep approvals on.

What happens if I start it with no folders?

A 2026-07-28 client never sends Roots, so the command-line folders are the whole allow-list. The README says a server started with none answers every tool call on such a connection with an error.

Is it safe to point at my home folder?

The repository calls the server a reference implementation, not production-ready. Pointing it at a broad folder raises the impact of any mistake or prompt injection. Use a narrow project folder instead.

Does it cost anything?

No. It is open source under the MIT License. You need Node.js 24 or later to run it with npx, or Docker.

You Might Also like to Read

Get a FREE Website Audit

Enter your website and get a 20–30 page SEO, GEO, AEO & CRO audit within 24 hours. Completely free.

Don't have a site yet? Get in touch →

Ready to speak with a marketing expert?
Give us a call! (916) 866-7893

Websites Launched
1407
Websites Launched
Marketing Experts
29
Marketing Experts
Hours of Dedicated Work
204533
Hours of Dedicated Work
Irina S.Benjamin G.Jeanette M.David G.