One project.faf. Every IDE's context file.
A local MCP server for Cursor, VS Code, Windsurf and Cline. It reads your IANA-registered project.faf and writes the facts into AGENTS.md, .cursorrules, GEMINI.md and CLAUDE.md, scored always-33, the same number faf-cli gives.
2
3
4
5
6
7
8
9
10
FAF defines. AGENTS.md instructs. AI codes.
Define once. Sync everywhere.
You keep .cursorrules. A teammate keeps AGENTS.md. Someone just moved to Gemini. Every tool wants its own file, and they drift apart. With faf-mcp, the facts come from one place.
Facts in one file
The stack, the goal and who it's for. Derived from your repo; the human slots are approved by you.
Written, not copied
faf-cli's own renderers write a managed block in each. Your own rules outside it stay byte for byte.
Scored, not guessed
The always-33 score from faf-cli's kernel, the same number in the terminal and in your IDE. 100% is Trophy ✪.
Install in your IDE
It runs locally over stdio, so your files stay on your machine. No API key, no env vars required.
No Bun? Use npx with ["-y", "faf-mcp"]. Node 22 or newer.
| Cursor | ~/.cursor/mcp.json or the one-click button above |
| Windsurf | ~/.codeium/windsurf/mcp_config.json |
| Cline | Cline's MCP settings |
| VS Code | .vscode/mcp.json, with "servers" in place of "mcpServers" |
| Claude Desktop | Use claude-faf-mcp |
Every tool says what it does
All 29 tools carry MCP annotations, so your IDE can tell which ones only read and which ones write.
faf_autoSet up in one call: init, stack detection, CLAUDE.md, scorefaf_scoreThe always-33 score, slot by slotfaf_goA guided interview to 100%faf_claudeWrite CLAUDE.md, or all four files at oncefaf_agentsImport or write AGENTS.mdfaf_cursorImport or write .cursorrulesfaf_geminiImport or write GEMINI.mdfaf_gitAuthor a project.faf from any public GitHub repofaf_syncPreview what changed in your manifests, then apply itfaf_doctorFind what's missing and whySet FAF_TOOLS=all to show all 29. Every tool stays callable by name, whichever set is shown.