Borrowing it
Nothing to install: this file belongs to j0hanz/filesystem-mcp. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/j0hanz/filesystem-mcp/main/AGENTS.mdgit clone --depth 1 https://github.com/j0hanz/filesystem-mcpWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/instructions/j0hanz/filesystem-mcp/agents-md)<a href="https://agentmods.dev/instructions/j0hanz/filesystem-mcp/agents-md"><img src="https://agentmods.dev/badge/instructions/j0hanz/filesystem-mcp/agents-md/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/instructions/j0hanz/filesystem-mcp/agents-md"><img src="https://agentmods.dev/badge/instructions/j0hanz/filesystem-mcp/agents-md.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00807 | $0.00807 |
| Opus 5.5 | $0.00323 | $0.00323 |
| Sonnet 5.5 | $0.00161 | $0.00161 |
| Haiku 4.5 | $0.00081 | $0.00081 |
Grade A, and why
filesystem-mcp AGENTS.md scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 3d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 66 lines — stays where its author put it; the contents beside it link to each section on GitHub.
filesystem-mcp
MCP server exposing guarded filesystem tools (read, write, search, diff, patch) over stdio and Streamable HTTP.
Commands
npm run check # full repository check (static + tests)
npm run fix # format and lint-fix, then run the full check
npm run check:static # static checks only, no tests
npm test # Node test runner; pass native flags after --
npm run test:coverage # tests + src coverage floor (CI enforces it on ubuntu)
Tests run on Node's built-in test runner; npm test -- --test-name-pattern="resources" filters like the old wrapper did.
__tests__/dist-smoke.test.ts boots dist/index.js; it skips when dist/
is absent, so run npm run build (or npm run check) first to exercise it.
__tests__/contract.test.ts snapshots the advertised MCP surface (tools,
prompts, resource templates, capabilities, instructions, get-help text). When a contract
change is intended, run node --test --test-update-snapshots __tests__/contract.test.ts
with no FS_* variables set, and commit the .snapshot diff with the change.
__tests__/tool-harness.ts drives one tool's run with a minimal ToolCtx,
no MCP pair (runToolBodyResult(STAT, args, { roots })). Test payload assembly
through it in the tool's own file (__tests__/stat.test.ts) and keep the wire
(in-memory client) for what the executor adds.
Architecture
index.ts ──cli──► transport.ts (facade)
├─► transport/stdio.ts one pinned server per connection
└─► transport/http.ts fresh server per request, shared runtime state
└─► server.ts createServer() ──► tools/ prompts/ resources/
core/ PathGuard, stores, undo, errors, config
src/server.tscreateServer()builds theMcpServerand registers tools/prompts/resources. ItsextraDepslet the HTTP leg share onePathGuard/ResourceStore/PageSnapshotStore/UndoJournal/watcher registry across per-request instances; when omitted (stdio) the instance owns them and clears them on close.- Two protocol eras:
legacy(initialize handshake, pinned connection) andmodern(stateless per-request HTTP).ToolDeps.eracarries it; sunset plan indocs/adr/002-legacy-protocol-paths-sunset.md. Other decisions indocs/adr/. - Every tool is a
ToolDef(src/tools/define.ts);ToolExecutorwraps every call with relative-path resolution, the access-grantinput_requiredround-trip, undo capture, progress, and the stdio 10 MiB oversize refusal.src/tools/index.tsowns the tool inventory and the--read-onlygate. src/core/path.tsPathGuardowns allowed-roots assembly and per-path validation (symlink resolution, Windows path spellings); the sensitive-file denylist issrc/core/sensitive.ts.- No tool publishes an
outputSchema; tools that author text ship metadata under_meta, the rest usestructuredContent(seebuildSuccessResponse).
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 3d ago Changed · +5 lines · +75 tokens per session 39c397597ad6
- 13d ago Changed · +29 lines · +410 tokens per session 792344d97eb2
- 21d ago Changed · +12 tokens per session 7c612d5c38a8
- 24d ago Changed · +6 lines · +95 tokens per session b8170f921d09
- 1mo ago Changed · +3 lines · +45 tokens per session d6326bbbf8a8
- 1mo ago Changed · +1 lines · +11 tokens per session 5f2213076647
- 1mo ago Changed · -2 lines · -11 tokens per session e3aa377d7b42
- 2mo ago First seen · 24 lines · 170 tokens per session scan A 443b76d68241
filesystem-mcp AGENTS.md is an instructions file published in the GitHub repository j0hanz/filesystem-mcp (32 stars, last pushed yesterday), licensed MIT. It adds 807 tokens to every session, about $0.0032 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
filesystem-mcp AGENTS.md compared with instructions from other repositories
| Mod | Type | Stars | Last push | Licence | Scan | Tokens | Works with |
|---|---|---|---|---|---|---|---|
| filesystem-mcp AGENTS.mdj0hanz/filesystem-mcp | Instructions file | 32 | yesterday | MIT | A | 807 | Codex, OpenCode |
| vscode buildNext.instructions.mdmicrosoft/vscode | Instructions file | 195k | yesterday | MIT | A | 9,719 | GitHub Copilot |
| next.js AGENTS.mdvercel/next.js | Instructions file | 143k | yesterday | MIT | A | 7,461 | Codex, OpenCode |
| langchain AGENTS.mdlangchain-ai/langchain | Instructions file | 149k | yesterday | MIT | A | 4,680 | Codex, OpenCode |
| vscode oss-third-party-notices.instructions.mdmicrosoft/vscode | Instructions file | 195k | yesterday | MIT | A | 5,516 | GitHub Copilot |
| vscode copilot-instructions.mdmicrosoft/vscode | Instructions file | 195k | yesterday | MIT | A | 3,093 | GitHub Copilot |
| deepseek-harness AGENTS.mddeepseek-ai/deepseek-harness | Instructions file | 274k | 2d ago | MIT | A | 4,313 | Codex, OpenCode |