.FAF Context faf-mcp
v4.0.1The Always33 Edition · One engine, one number

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.

your-repo
1
2
3
4
5
6
7
8
9
10
project: name: your-app goal: Invoices that pay themselves stack: frontend: SvelteKit database: Postgres human_context: who: Freelancers billing in three currencies why: Chasing late payments by hand # the facts, in one place
<!-- faf:start --> # your-app Invoices that pay themselves. Stack: SvelteKit · Postgres For: Freelancers billing in three currencies <!-- faf:end --> ## Our rules Your own instructions live here, untouched.
# faf:start your-app: Invoices that pay themselves. Stack: SvelteKit · Postgres For: Freelancers billing in three currencies # faf:end # Your own Cursor rules below, untouched.
<!-- faf:start --> # your-app Invoices that pay themselves. Stack: SvelteKit · Postgres For: Freelancers billing in three currencies <!-- faf:end --> Your own Gemini notes below, untouched.
<!-- faf:start --> # your-app Invoices that pay themselves. Stack: SvelteKit · Postgres For: Freelancers billing in three currencies <!-- faf:end --> Your own Claude notes below, untouched.
faf_claude { all: true } · writes all fourproject.faf · application/vnd.faf+yaml

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.

project.faf

Facts in one file

The stack, the goal and who it's for. Derived from your repo; the human slots are approved by you.

AGENTS.md · .cursorrules · GEMINI.md · CLAUDE.md

Written, not copied

faf-cli's own renderers write a managed block in each. Your own rules outside it stay byte for byte.

faf_score

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.

// add to your MCP config {"mcpServers": {"faf": { "command": "bunx", "args": ["faf-mcp"] }}}

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
ClineCline's MCP settings
VS Code.vscode/mcp.json, with "servers" in place of "mcpServers"
Claude DesktopUse 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.

29
MCP Tools
15
Shown by default
12
Read-only
4
Marked destructive
faf_autoSet up in one call: init, stack detection, CLAUDE.md, score
faf_scoreThe always-33 score, slot by slot
faf_goA guided interview to 100%
faf_claudeWrite CLAUDE.md, or all four files at once
faf_agentsImport or write AGENTS.md
faf_cursorImport or write .cursorrules
faf_geminiImport or write GEMINI.md
faf_gitAuthor a project.faf from any public GitHub repo
faf_syncPreview what changed in your manifests, then apply it
faf_doctorFind what's missing and why

Set FAF_TOOLS=all to show all 29. Every tool stays callable by name, whichever set is shown.

IANA-registered · application/vnd.faf+yaml Local stdio Runs on faf-cli v8 MCP Registry · one.faf/faf-mcp MIT