
Node.js server implementing Model Context Protocol (MCP) for filesystem operations.
Node.js server implementing Model Context Protocol (MCP) for filesystem operations.
·
Node.js server implementing Model Context Protocol (MCP) for filesystem operations.
Published on npm as @modelcontextprotocol/server-filesystem.
The server uses a flexible directory access control system. Directories can be specified via command-line arguments or dynamically via Roots.
Specify Allowed directories when starting the server:
mcp-server-filesystem /path/to/dir1 /path/to/dir2MCP clients that support Roots can dynamically update the Allowed directories.
Roots notified by Client to Server, completely replace any server-side Allowed directories when provided.
Important: If server starts without command-line arguments AND client doesn't support roots protocol (or provides empty roots), the server will throw an error during initialization.
This is the recommended method, as this enables runtime directory updates via roots/list_changed notifications without server restart, providing a more flexible and modern integration experience.
The server's directory access control follows this flow:
Server Startup
Client Connection & Initialization
initialize request with capabilitiescapabilities.roots)Roots Protocol Handling (if client supports roots)
roots/listnotifications/roots/list_changedFallback Behavior (if client doesn't support roots)
Access Control
list_allowed_directories tool to see current directoriesNote: The server will only allow operations within directories specified either via args or via Roots.
read_text_file
path (string)head (number, optional): First N linestail (number, optional): Last N lineshead and tail simultaneouslyread_media_file
path (string)image/audio content; any other file type is returned as
an embedded resource (a valid MCP content block for arbitrary binary data)read_multiple_files
paths (string[])write_file
path (string): File locationcontent (string): File contentedit_file
path (string): File to editedits (array): List of edit operations
oldText (string): Text to search for (can be substring)newText (string): Text to replace withdryRun (boolean): Preview changes without applying (default: false)create_directory
path (string)list_directory
path (string)list_directory_with_sizes
path (string): Directory path to listsortBy (string, optional): Sort entries by "name" or "size" (default: "name")move_file
source (string)destination (string)search_files
path (string): Starting directorypattern (string): Search patternexcludePatterns (string[]): Exclude any patterns.directory_tree
path (string): Starting directoryexcludePatterns (string[]): Exclude any patterns. Glob formats are supported.name (string): File/directory nametype ('file'|'directory'): Entry typechildren (array): Present only for directories
get_file_info
path (string)list_allowed_directories
This server sets MCP ToolAnnotations on each tool so clients can:
openWorldHint: false).The mapping for filesystem tools is:
| Tool | readOnlyHint | idempotentHint | destructiveHint | Notes |
|---|---|---|---|---|
read_text_file | true | – | – | Pure read |
read_media_file | true | – | – | Pure read |
read_multiple_files | true | – | – | Pure read |
list_directory | true | – | – | Pure read |
list_directory_with_sizes | true | – | – | Pure read |
directory_tree | true | – | – | Pure read |
search_files | true | – | – | Pure read |
get_file_info | true | – | – | Pure read |
list_allowed_directories | true | – | – | Pure read |
create_directory | false | true | false | Re‑creating the same dir is a no‑op |
write_file | false | true | true | Overwrites existing files |
edit_file | false | false | true | Re‑applying edits can fail or double‑apply |
move_file | false | false | true | Deletes source file |
Note:
idempotentHintanddestructiveHintare meaningful only whenreadOnlyHintisfalse, as defined by the MCP spec. Every tool also setsopenWorldHint: false— this server only accesses the local filesystem within its allowed directories, never an open or external world.
Add this to your claude_desktop_config.json:
Note: you can provide sandboxed directories to the server by mounting them to /projects. Adding the ro flag will make the directory readonly by the server.
Note: all directories must be mounted to /projects by default.
{
"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",
"--mount", "type=bind,src=/path/to/file.txt,dst=/projects/path/to/file.txt",
"mcp/filesystem",
"/projects"
]
}
}
}{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/Users/username/Desktop",
"/path/to/other/allowed/dir"
]
}
}
}On Windows, use cmd /c to launch npx:
{
"mcpServers": {
"filesystem": {
"command": "cmd",
"args": [
"/c",
"npx",
"-y",
"@modelcontextprotocol/server-filesystem",
"/Users/username/Desktop",
"/path/to/other/allowed/dir"
]
}
}
}For quick installation, click the installation buttons below...
For manual installation, you can configure the MCP server using one of these methods:
Method 1: User Configuration (Recommended)
Add the configuration to your user-level MCP configuration file. Open the Command Palette (Ctrl + Shift + P) and run MCP: Open User Configuration. This will open your user mcp.json file where you can add the server configuration.
Method 2: Workspace Configuration
Alternatively, you can add the configuration to a file called .vscode/mcp.json in your workspace. This will allow you to share the configuration with others.
For more details about MCP configuration in VS Code, see the official VS Code MCP documentation.
You can provide sandboxed directories to the server by mounting them to /projects. Adding the ro flag will make the directory readonly by the server.
Note: all directories must be mounted to /projects by default.
{
"servers": {
"filesystem": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"--mount", "type=bind,src=${workspaceFolder},dst=/projects/workspace",
"mcp/filesystem",
"/projects"
]
}
}
}{
"servers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"${workspaceFolder}"
]
}
}
}On Windows, use:
{
"servers": {
"filesystem": {
"command": "cmd",
"args": [
"/c",
"npx",
"-y",
"@modelcontextprotocol/server-filesystem",
"${workspaceFolder}"
]
}
}
}Docker build:
docker build -t mcp/filesystem -f src/filesystem/Dockerfile .This MCP server is licensed under the MIT License. This means you are free to use, modify, and distribute the software, subject to the terms and conditions of the MIT License. For more details, please see the LICENSE file in the project repository.
Pick your client and paste the snippet. Each one is the same server, written the way that client expects it.
claude mcp add filesystem -- docker 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 --mount type=bind,src=/path/to/file.txt,dst=/projects/path/to/file.txt mcp/filesystem /projects{
"mcpServers": {
"filesystem": {
"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",
"--mount",
"type=bind,src=/path/to/file.txt,dst=/projects/path/to/file.txt",
"mcp/filesystem",
"/projects"
],
"command": "docker"
}
}
}code --add-mcp '{"name":"filesystem","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","--mount","type=bind,src=/path/to/file.txt,dst=/projects/path/to/file.txt","mcp/filesystem","/projects"],"command":"docker"}'[mcp_servers.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", "--mount", "type=bind,src=/path/to/file.txt,dst=/projects/path/to/file.txt", "mcp/filesystem", "/projects"]Runs locally on your device. Your client starts the server itself, so nothing has to be hosted.
Paste this prompt into your agent. It reads this page and does the setup for you.
Read https://aiagentslisting.com/mcp/filesystem-mcp-server to learn what the "Filesystem MCP Server" MCP server does and how to install it. Add it to my coding agent's MCP configuration as documented on that page, then confirm the server connects and list the tools it exposes.Agents can also browse this directory over MCP at https://aiagentslisting.com/api/mcp
This server runs locally, so we can't read its tool list over the web yet.
The markitdown-mcp package provides a lightweight STDIO, Streamable HTTP, and SSE MCP server for cal
MCP server that interacts with Obsidian via the Obsidian rest API community plugin
2026.8.31Release 2026.8.31Release notes2026.8.18Release 2026.8.18Release notes2026.7.10Release 2026.7.10Release notes2026.7.4Release 2026.7.4Release notes2026.1.26Release 2026.1.26Release notes2026.1.14Release 2026.1.14Release notes2025.12.18Release 2025.12.18Release notes2025.11.25Release 2025.11.25Release notes2025.9.25Release 2025.9.25Release notes2025.8.4Release 2025.8.4Release notes2025.7.1Release 2025.7.1Release notes2025.4.24Release 2025.4.24Release notes2025.4.6Release 2025.4.6Release notes2025.1.17Release 2025.1.17Release notes2025.1.14Release 2025.1.14Release notestypescript-servers-0.6.2Release notespython-servers-0.6.2Release notestypescript-servers-0.6.1Release notestypescript-servers-0.6.0Release notespython-servers-0.6.1Release notesConnect to the AI Agents Listing MCP server at https://aiagentslisting.com/api/mcp using the HTTP transport and complete the sign-in when it asks. Then call the submit_review tool for the listing "filesystem-mcp-server" with a rating from 1 to 5 and a short note on what worked and what did not.No reviews yet
Be the first to share your experience with this tool.
The markitdown-mcp package provides a lightweight STDIO, Streamable HTTP, and SSE MCP server for cal
AI & ML Services
MCP server that interacts with Obsidian via the Obsidian rest API community plugin
Files & Storage
One email a week. New agents, MCP servers and skills, and what is actually getting traction.