Is Filesystem MCP Server official?
Yes. It is a reference server in the `modelcontextprotocol/servers` repository, published on npm as `@modelcontextprotocol/server-filesystem`.

@modelcontextprotocol
Basic information
Model Context Protocol Servers
Add this server to your MCP-compatible client using the configuration below.
{
"mcpServers": {
"filesystem": {
"command": "docker",
"args": [
"build",
"-t",
"mcp/filesystem",
"-f",
"src/filesystem/Dockerfile",
"."
]
}
}
}Read complete contents of a file as text
Read a file and return it as a base64-encoded content block with its MIME type
Read multiple files simultaneously
Create new file or overwrite existing (exercise caution with this)
Make selective edits using advanced pattern matching and formatting
Create new directory or ensure it exists
List directory contents with [FILE] or [DIR] prefixes
List directory contents with [FILE] or [DIR] prefixes, including file sizes
Move or rename files and directories
Recursively search for files/directories that match or do not match patterns
Get recursive JSON tree structure of directory contents
Get detailed file/directory metadata
List all directories the server is allowed to access
Filesystem MCP Server is the reference filesystem MCP server from the Model Context Protocol project: a Node.js server that lets Claude and other MCP clients read, write, edit, move and search files, but only inside directories you allow.
It is published on npm as @modelcontextprotocol/server-filesystem and as the Docker image mcp/filesystem, from the official modelcontextprotocol/servers repository (MIT License). It runs locally over stdio, needs no API key, and every tool is marked as never reaching the internet or other external systems.
Prerequisites: Node.js (for npx) or Docker. No account or API key is needed. The one required input is at least one allowed directory, given either as command-line arguments or by the client through MCP Roots.
Allowed directories as command-line arguments:
mcp-server-filesystem /path/to/dir1 /path/to/dir2
MCP Roots is the recommended method: clients that support Roots send their workspace folders to the server, which replaces the command-line list with them and picks up changes at runtime through roots/list_changed, with no restart.
Add this to claude_desktop_config.json, listing the folders you want to expose:
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/Users/username/Desktop",
"/path/to/other/allowed/dir"
]
}
}
}
On Windows, launch npx through cmd /c:
{
"mcpServers": {
"filesystem": {
"command": "cmd",
"args": [
"/c",
"npx",
"-y",
"@modelcontextprotocol/server-filesystem",
"/Users/username/Desktop",
"/path/to/other/allowed/dir"
]
}
}
}
With Docker, mount each directory under /projects. Adding ro makes a mount read-only for the server:
{
"mcpServers": {
"filesystem": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"--mount", "type=bind,src=/Users/username/Desktop,dst=/projects/Desktop",
"--mount", "type=bind,src=/path/to/other/allowed/dir,dst=/projects/other/allowed/dir,ro",
"mcp/filesystem",
"/projects"
]
}
}
}
Run MCP: Open User Configuration from the Command Palette, or create .vscode/mcp.json in your workspace to share the setup. Note that VS Code uses a servers key:
{
"servers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"${workspaceFolder}"
]
}
}
}
The Docker variant mounts ${workspaceFolder} to /projects/workspace and passes /projects as the argument.
The README does not include steps for these clients, but both run the same stdio command. In Claude Code:
claude mcp add filesystem -- npx -y @modelcontextprotocol/server-filesystem /path/to/allowed/dir
In Cursor, add the same mcpServers block shown for Claude Desktop to Cursor's mcp.json.
list_allowed_directories shows which ones are in force.read_text_file supports head/tail line limits, and read_media_file returns images and audio as base64 content blocks with their MIME type.edit_file makes targeted find-and-replace edits, keeps indentation and LF/CRLF line endings, returns a git-style diff, and supports a dryRun preview.directory_tree, both with exclude patterns.ro) for folders the model may read but must not change.The server exposes 13 tools in three groups:
read_text_file, read_media_file and read_multiple_files (a failed read does not stop the rest of the batch).list_directory, list_directory_with_sizes (sortable by name or size, with totals), directory_tree, search_files, get_file_info (size, times, type, permissions) and list_allowed_directories.write_file creates or overwrites a file, edit_file applies selective edits, create_directory creates nested folders, and move_file moves or renames, failing if the destination already exists.There is no delete tool. The README marks write_file, edit_file and move_file as destructive.
getUser call in src to fetchUser and show me the diff first."args.list_allowed_directories to see the current list, and remember that Roots replace the command-line directories completely./projects (by default), and /projects is passed to the server as its directory argument, as in the README examples.npx not found on Windows: use the cmd /c npx ... form shown above.Yes. It is a reference server in the `modelcontextprotocol/servers` repository, published on npm as `@modelcontextprotocol/server-filesystem`.
Yes. It is open source under the MIT License, runs locally and needs no API key or paid service.
Pass the allowed directories as arguments, or let a Roots-capable client supply them. All operations are restricted to those paths. With Docker, mount only what you need and add `ro` for read-only access.
No delete tool is exposed. However, `write_file` overwrites files, `edit_file` modifies them and `move_file` removes the source, so treat write access with care.
Yes. Set `dryRun` to `true` on `edit_file` to get a diff without changing the file. The README recommends doing this first.
Yes. It is a standard stdio MCP server. The README documents Claude Desktop and VS Code; Claude Code and Cursor can run the same `npx` command.
Local. It runs on your machine over stdio and only touches the local file system within its allowed directories.
`read_media_file` returns images and audio as image or audio content, and any other file type as an embedded base64 resource.
MCP server for working with PDF files

AI tools (Claude, ChatGPT, Gemini, Grok, etc.) generate HTML constantly, from reports to landing pages to prototypes, but there's no easy way to share it or know if anyone looked. HTMLvault turns any HTML into a clean, t
📄 The PDF intelligence layer for AI agents — Agent Document Twin, evidence-first extraction, visual crops, OCR provenance, trust reports, and benchmark-gated releases. MCP server for Claude, Cursor, VS Code, and any MCP client.
Go server implementing Model Context Protocol (MCP) for filesystem operations.
Comments