← Discover MCPs and Agents
f
MCPAI & MLGitHub

filesystem-mcp

ARCHIVED non-primary. Prefer Citra/Iris/Cue/Prism/Spine/Lookout.

Links

README

From the repo.

Filesystem MCP — ARCHIVED

ARCHIVED / NON-PRIMARY
This product is not an active Sylphx agent-instrument.
Prefer independent products: Citra, Iris, Cue, Prism, Spine, Lookout.

Historical source remains for reference only. Do not treat npm/Docker badges or install CTAs below as current install authority.


Historical README (archived product)

Filesystem MCP

filesystem-mcp — Sylphx Mark banner

Your agent touched the repo. Did it stay in the project?

Secure, token-optimized filesystem operations for AI agents — batch reads, surgical edits, and project-root confinement without shell spawn overhead.

npm version Docker Pulls License TypeScript

Batch operations · Project root safety · Zod validation · 13 MCP tools · Docker-ready

⭐ Star this repo if agents should read and edit your codebase safely — not spawn shells per file. · Quick start · See it work · Why not shell commands? · Roadmap

Filesystem MCP Server

The problem

Agents need filesystem access to read code, apply edits, and search across a repo. The default path is shell commands — one spawn per operation, no batching, stderr parsing, and paths that can wander outside the project.

That costs tokens, adds latency, and turns every file touch into a trust exercise.

Filesystem MCP is built for the moment your agent needs fast, bounded, batch-friendly file operations — confined to the project root.

Why not shell commands?

Shell commands per fileFilesystem MCP
One operation per spawnBatch 10+ files in one MCP call
Full shell accessConfined to server cwd at launch
stderr parsingPer-item success/failure in structured JSON
High token round tripsFewer host↔server calls
Path traversal riskRelative paths only; traversal blocked
No schemaZod-validated arguments on every tool

Full benchmark contract: docs/benchmark.md.

See it work

Configure once. Read many files in one call.

claude mcp add filesystem -- npx @sylphx/filesystem-mcp
{
  "paths": ["src/index.ts", "package.json", "README.md"]
}

read_content returns per-file results in one response:

{
  "results": [
    { "path": "src/index.ts", "content": "...", "success": true },
    { "path": "package.json", "content": "...", "success": true },
    { "path": "README.md", "content": "...", "success": true }
  ]
}

Important: launch the MCP server with cwd set to your project root. All paths are relative to that directory.

Why agents use it

NeedWhat you get
Read multiple filesread_content — batch paths, optional line ranges
Write or appendwrite_content — multiple files per call
Surgical editsapply_diff, replace_content — diff output and per-file status
Search the treesearch_files — regex with context
Refactor across filesreplace_content — multi-file search & replace
Explore structurelist_files — recursive listing with optional stats
Move/copy/deletemove_items, copy_items, delete_items
Permissionschmod_items, chown_items
Inspect metadatastat_items, create_directories

Quick Start

Claude Code

claude mcp add filesystem -- npx @sylphx/filesystem-mcp

Run from your project directory so cwd is the repo root.

Claude Desktop / any MCP host

{
  "mcpServers": {
    "filesystem-mcp": {
      "command": "npx",
      "args": ["@sylphx/filesystem-mcp"]
    }
  }
}

Set the host's working directory to your project root.

Docker

{
  "mcpServers": {
    "filesystem-mcp": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm",
        "-v", "/path/to/your/project:/app",
        "sylphx/filesystem-mcp:latest"
      ]
    }
  }
}

Local development

git clone https://github.com/SylphxAI/filesystem-mcp.git
cd filesystem-mcp
bun install
bun run build
bun run test

MCP Tool Surface

ToolUse it when the agent needs to...
read_contentRead one or more files (optional line ranges)
write_contentWrite or append to files
apply_diffApply structured diffs across files
search_filesRegex search with context lines
replace_contentMulti-file search and replace
list_filesList a directory tree (optional stats)
stat_itemsGet detailed file/directory metadata
create_directoriesCreate directories (with parents)
delete_itemsRemove files or directories
move_itemsMove or rename items
copy_itemsCopy files or directories
chmod_itemsChange POSIX permissions
chown_itemsChange ownership

Release proof

Claims are backed by CI benchmark:release-gate, safety fixture corpus, and the shipped-path matrix (Rust-default primary tools).

bun run benchmark:release-gate

Artifact: benchmark-artifacts/filesystem_release_gate.json — must report status: passed before release.

Performance benchmarks

Reproduce local throughput on the shipped Rust CLI path:

bunx vitest bench __tests__/benchmarks/throughput.bench.ts --run

See docs/benchmark.md for scenarios, design goals, and how to interpret results.

Security model

  • All operations confined to the server cwd at launch.
  • Absolute paths rejected; path traversal blocked.
  • Zod schemas validate every tool argument.
  • Batch tools return per-item status — one failure does not hide the rest.

Documentation

TopicLink
Docs sitesylphxai.github.io/filesystem-mcp
Introductiondocs/guide/introduction.md
Benchmarksdocs/benchmark.md

Development

bun run validate    # lint + typecheck + test
bun run docs:build  # VitePress + API docs
bun run benchmark   # vitest bench

Support

Help this reach more builders

If shell-per-file agent workflows have burned your tokens or your trust in path safety, this project is for you.

⭐ Star the repo — it helps more agent builders find secure, batch-friendly filesystem access.

Discovery (in progress)

ChannelStatus
Glama MCP directoryListed — claim server for full discoverability
Official MCP RegistryNot listed yet
mcp.so submitNot listed yet — directory submission
mcpservers.org submitNot listed yet — free web-form submission

Know another MCP directory? Open an issue with the link.

License

MIT © Sylphx

Collected info

  • 8 stars
  • 8 forks
  • Language: TypeScript
  • Source updated: 9/10/2026

Config for your environment

Replace {MCP_ENDPOINT_URL} with this MCP’s endpoint URL (from its repo or docs above). No API key — you connect directly.

Tool

OS

Config file: ~/.cursor/mcp.json

{
  "mcpServers": {
    "mcp-server": {
      "url": "{MCP_ENDPOINT_URL}"
    }
  }
}

Paste into mcpServers in the config file. Restart Cursor after saving.

If this MCP is also published on mcpchannel.ai, you can subscribe from Browse and use the gateway config there instead.