TL;DR: Compose, don't port: faf-mcp 3.0 runs on faf-cli 7.12 in-process — one scorer, one set of renderers, one injector — and every number, file and claim this package makes is true. Local stdio, 29 tools, Node 22+.

In Plain English

Old state. The IDE MCP server carried its own copies of scoring, writing AGENTS.md / .cursorrules / GEMINI.md / CLAUDE.md, and injecting the managed block. Those copies drifted. Some tools shelled out to whatever faf was on PATH. Docs talked about a hosted endpoint this package does not run.

Fix. Every tool composes faf-cli 7.12 in-process. Same scorer, same renderers, same injector. Nothing ported. Nothing shelled out.

New state. One number on disk, the same bytes the CLI writes, and every claim on the box is true. Local stdio. Node 22 or newer.

bunx faf-mcp

Install: npm install -g faf-mcp@3.0.0 · pin in scripts — @latest drifts. Needs Node 22+.

What happened since .FAF Context

One blog, one arc. Last write-up was faf-mcp v2.3.1 — cwd resolution, so the server scores the project you have open. This is the major: stop carrying copies of faf-cli.

Same-day sibling: faf-cli 7.12 The Open Renderers Edition opened the renderers. This package is the first consumer.

What 3.0.0 is

Lesson: compose, don't port. If faf-cli is the writer, the MCP server should call it — not ship a second writer that drifts.

  • One score. faf_auto, faf_go, faf_dna, faf_doctor, faf_bi_sync all report faf-cli's scoreFafYaml on the bytes on disk. The local heuristics are gone.
  • Same files as the CLI. AGENTS.md, GEMINI.md, .cursorrules and CLAUDE.md come from faf-cli's renderers and injector — the same bytes faf export writes.
  • Nothing shells out. No which faf, no exec fallback, no "install faf-cli first" banner. The CLI is bundled. An unrelated faf on PATH is not a problem.
  • Docs match the binary. Local stdio. No hosted endpoint, no Deploy to Vercel, no Streamable HTTP claim on this package.

Breaking, on purpose

  • Node 22 or newer. 18 and 20 are end of life. CI runs 22 and 24.
  • faf-cli ^7.12.0 — was 6.x. The compose floor is the Open Renderers cut.
  • Resource URIs are faf://context and faf://status. claude-faf:// stays readable as an alias for this release.

Try it

Run (no install):

bunx faf-mcp

Install:

npm install -g faf-mcp@3.0.0

Cursor / VS Code / Windsurf / Cline — MCP config:

{"mcpServers": {"faf": {"command": "bunx", "args": ["faf-mcp"]}}}

More: The Open Renderers Edition (faf-cli 7.12) · .FAF Context (v2.3.1) · v3.0.0 release · repo.

Technical details

  • Version: 3.0.0 (September 10, 2026)
  • Identity: one.faf/faf-mcp · npm faf-mcp
  • Compose floor: faf-cli ^7.12.0 (The Open Renderers Edition)
  • Tools: 29 (15 Core by default · full set via FAF_TOOLS=all)
  • Tests: 334/334 (1 todo)
  • Transport: local stdio
  • Runtime: Node 22+
  • Score: ✪ Trophy 100%