
This is a persistent context manager for IDEs and editors outside Claude Desktop. It maintains a single project.faf file and syncs it bidirectionally with format-specific files like .cursorrules for Cursor, AGENTS.md for Codex, and GEMINI.md for Gemini. The 25 MCP tools handle initialization, scoring (0-100% AI readiness), enhancement, and cross-platform sync operations. You can run it locally via stdio, self-host on Vercel, or point to the hosted version at mcpaas.live. The cloud tools let you publish, fetch, and share context globally. It also includes faf_git for generating context from any GitHub repo URL without cloning. Built on the FAF ecosystem with 62,000+ downloads and ships with 309 tests across 9 suites.
Public tool metadata for what this MCP can expose to an agent.
faf_aboutLearn what .faf format isLearn what .faf format is
No parameter schema in public metadata yet.
faf_whatQuick explanation of .faf formatQuick explanation of .faf format
No parameter schema in public metadata yet.
faf_statusCheck if project has project.faf1 paramsCheck if project has project.faf
pathstringfaf_scoreCalculate AI-readiness score (0-100%)1 paramsCalculate AI-readiness score (0-100%)
pathstringfaf_initCreate project.faf for a project1 paramsCreate project.faf for a project
pathstringfaf_trustValidate project.faf integrity1 paramsValidate project.faf integrity
pathstringfaf_syncSync .faf with CLAUDE.md1 paramsSync .faf with CLAUDE.md
pathstringfaf_enhanceEnhance .faf with AI optimization1 paramsEnhance .faf with AI optimization
pathstringfaf_bi_syncBi-directional sync to CLAUDE.md, AGENTS.md, .cursorrules, GEMINI.md1 paramsBi-directional sync to CLAUDE.md, AGENTS.md, .cursorrules, GEMINI.md
pathstringfaf_clearClear caches and reset stateClear caches and reset state
No parameter schema in public metadata yet.
faf_debugDebug MCP environment infoDebug MCP environment info
No parameter schema in public metadata yet.
faf_readRead file content1 paramsRead file content
pathstringfaf_writeWrite file content2 paramsWrite file content
contentstringpathstringfaf_listList and discover .faf projects1 paramsList and discover .faf projects
pathstringfaf_chatNatural language .faf generation via 6W questions1 paramsNatural language .faf generation via 6W questions
messagestringfaf_fridayFun features and fuzzy matchingFun features and fuzzy matching
No parameter schema in public metadata yet.
faf_guideFAF MCP usage guideFAF MCP usage guide
No parameter schema in public metadata yet.
faf_readmeExtract context from README.md1 paramsExtract context from README.md
pathstringfaf_human_addAdd human context (6Ws)3 paramsAdd human context (6Ws)
fieldstringpathstringvaluestringfaf_checkQuality inspection for .faf fields1 paramsQuality inspection for .faf fields
pathstringfaf_contextSet or view active project context1 paramsSet or view active project context
pathstringfaf_goGuided interview to Gold Code (100%)1 paramsGuided interview to Gold Code (100%)
pathstringfaf_autoZero to AI context in one command1 paramsZero to AI context in one command
pathstringfaf_dnaShow project DNA evolution journey1 paramsShow project DNA evolution journey
pathstringfaf_formatsDiscover all formats in your project1 paramsDiscover all formats in your project
pathstringfaf_quickLightning-fast .faf creation1 paramsLightning-fast .faf creation
inputstringfaf_doctorDiagnose and fix .faf issues1 paramsDiagnose and fix .faf issues
pathstringfaf_agentsSync AGENTS.md (OpenAI/Codex)1 paramsSync AGENTS.md (OpenAI/Codex)
pathstringfaf_cursorSync .cursorrules (Cursor IDE)1 paramsSync .cursorrules (Cursor IDE)
pathstringfaf_geminiSync GEMINI.md (Google Gemini)1 paramsSync GEMINI.md (Google Gemini)
pathstringfaf_conductorSync Conductor directory1 paramsSync Conductor directory
pathstringfaf_gitGenerate .faf from GitHub repo URL1 paramsGenerate .faf from GitHub repo URL
urlstringfaf_tri_syncSync project.faf to Claude MEMORY.md (Pro)1 paramsSync project.faf to Claude MEMORY.md (Pro)
pathstringPersistent Project Context for Cursor, IDEs and VS Code. Define once. Sync everywhere. npm: faf-mcp
Home: wolfe-jam.github.io/faf-mcp
.FAF Context is the MCP server for the IDE side of FAF. One project.faf in your repo, and every AI tool's context file is authored from it — AGENTS.md, .cursorrules, GEMINI.md, CLAUDE.md — and scored, so you know exactly where to focus. It runs locally over stdio on the same faf-cli the terminal uses. The FAF ecosystem it belongs to has comfortably passed 100k downloads across npm and PyPI (live count).
⭐ Bookmarks it for you, helps other devs find it too.
faf-mcp --version and --help answer and exit. Before, both started the server.
--version (-v) prints the version; --help (-h) prints usage and a client config. Anything else starts the server as before, so your client config doesn't change.One engine, one number: faf-mcp 4 scores with faf-cli 8's always-33 kernel — the same score faf-cli, claude-faf-mcp 7 and faf-kernel give.
slotignored unless your app-type uses them. faf_score scores against all 33; slotignored slots drop out of the denominator..faf without the 12 markers now scores against 33. Run faf_auto — it writes them and your score returns.Tools that say what they do: faf_git scores with faf-cli and asks before overwriting, faf_sync previews each change, and imports say when nothing was written.
faf_git has one scorer. It reports faf-cli's score of the file it authored, writes the slots faf-cli scores, and asks before replacing an existing project.faf.faf_sync previews each change. The dry run lists every field it would update and names apply: true.merge: true with no project.faf fails clearly.3.0.1 renamed faf_bi_sync to faf_claude and made faf_init write what faf init writes. The full history is in the CHANGELOG.
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+.
faf export and faf sync write. faf_auto runs faf-cli's own update chain. The hand-ported renderers, the pre-v3 CLAUDE.md template and the local injector are gone.faf_auto, faf_go, faf_dna, faf_doctor and faf_claude all report faf-cli's scorer on the bytes on disk — no local heuristics, no frozen birth score, no "0%".which faf detector, the exec fallback and the "install faf-cli first" banner are gone; nothing under src/ imports child_process. A machine with an unrelated faf on PATH is no longer a problem.prebuild clears dist/ so nothing deleted ever ships again.faf://context and faf://status; claude-faf:// remains readable as an alias for this release.You maintain .cursorrules. Your teammate uses AGENTS.md. Someone on the team just switched to Gemini. Every AI tool wants its own context file — and they all say the same thing in different formats.
faf-mcp is the dedicated MCP server for Cursor, Windsurf, Cline, VS Code, and every non-Claude platform. One .faf file in your repo, synced to every format your team needs.
Context for Cursor & IDE agents: faf-cli (v7.12) authors the files this server syncs — bunx faf export --agents, zero-install and git-native. See FAF-CLI for Cursor & IDE agents 👀.
project.faf
│
┌────────┬───────┴───────┬────────────┐
▼ ▼ ▼ ▼
CLAUDE.md AGENTS.md .cursorrules GEMINI.md
(Claude) (Codex) (Cursor) (Gemini)
Everywhere else:
bunx faf-mcp
Add to your MCP config:
{"mcpServers": {"faf": {"command": "bunx", "args": ["faf-mcp"]}}}
| Platform | Config File |
|---|---|
| Cursor | ~/.cursor/mcp.json |
| Windsurf | ~/.codeium/windsurf/mcp_config.json |
| Cline | Cline MCP settings |
| VS Code | MCP extension config |
| Claude Desktop | Use claude-faf-mcp |
faf-mcp runs locally over stdio. Point your IDE at one of these commands.
| Method | Command |
|---|---|
| npm | npx faf-mcp |
| Bun | bunx faf-mcp |
| Tool | Platform | Action |
|---|---|---|
faf_agents | OpenAI Codex | Import/export/sync AGENTS.md |
faf_cursor | Cursor IDE | Import/export/sync .cursorrules |
faf_gemini | Google Gemini | Import/export/sync GEMINI.md |
faf_conductor | Conductor | Import/export directory structure |
faf_git | GitHub | Author .faf from any repo URL |
# MCP tool calls — ask your IDE's AI
# Write all four formats from project.faf
faf_claude { all: true }
# Author .faf from any GitHub repo
faf_git { url: "https://github.com/facebook/react" }
Core tier: 15 essential tools shown by default; set FAF_TOOLS=all for the full 29 (every tool stays callable by name either way) · 26 test suites · 7 bundled parsers
project.faf is the source. faf-mcp writes every tool's context file from it in milliseconds.
project.faf ──── 8ms ───→ CLAUDE.md / AGENTS.md / .cursorrules / GEMINI.md
Single source of truth
faf_claude { all: true } writes all four formats at oncefaf_agents, faf_cursor and faf_gemini can also import an existing file: merge: true merges it into project.fafAI assistants forget. They drift. Every new session, AI starts guessing again. One source means context never goes stale.
| Tier | Score | Status |
|---|---|---|
| ✪ TROPHY | 100% | AI never has to guess |
| ★ GOLD | 99%+ | 1 slot from Trophy |
| ◆ SILVER | 95%+ | Close — keep going |
| ◇ BRONZE | 85%+ | Interim — keep going |
| ● GREEN | 70%+ | Interim — keep going |
| ● YELLOW | 55%+ | AI flipping coins |
| ○ RED | <55% | AI working blind |
| ♡ WHITE | 0% | No context at all |
At 55%, AI is guessing half the time. At 100%, AI is optimized.
Start every prompt with "Use FAF" to invoke MCP tools:
Use FAF to initialize my project
Use FAF to score my AI-readiness
Use FAF to sync my context
Use FAF to enhance my project
Works on all platforms — stops web search, forces tool usage.
The 15 Core tools, shown by default:
| Tool | Purpose |
|---|---|
faf_init | Create a new project.faf (use faf_auto to enhance an existing one) |
faf_auto | One-call setup: init or merge, stack detection, CLAUDE.md, score |
faf_go | Guided interview that fills the missing human-context and goal fields toward 100% |
faf_score | AI-readiness score (0-100%) and tier; details:true adds a slot-by-slot breakdown |
faf_doctor | Diagnose a low score: missing files, slot counts, config issues, each with a fix |
faf_check | Rate each human_context field empty / generic / good |
faf_trust | Validate the required fields and about.* block with faf-cli's validator |
faf_sync | Reconcile project.faf with package.json (dry-run; apply:true writes) |
faf_context | Set or show the active project path |
faf_about | What the IANA-registered .faf format is, in plain language |
| Interop Tools | |
faf_claude | Write CLAUDE.md from project.faf (all:true also writes AGENTS.md, .cursorrules, GEMINI.md) |
faf_agents | Import AGENTS.md into project.faf, or write it from project.faf |
faf_cursor | Import .cursorrules into project.faf, or write it from project.faf |
faf_gemini | Import GEMINI.md into project.faf, or write it from project.faf |
faf_git | Author a project.faf from a public GitHub repo URL |
+14 more with FAF_TOOLS=all: faf_status · faf_what · faf_guide · faf_debug · faf_clear · faf_list · faf_read (read a file within the allowed roots: cwd, the OS temp dir, or FAF_ALLOWED_ROOTS) · faf_write (write a file within the same roots) · faf_readme · faf_human_add · faf_quick · faf_formats · faf_dna · faf_conductor
Built on faf-cli. Every tool composes the bundled faf-cli in-process — the same scorer, the same renderers, the same block injector the CLI uses. Nothing shells out to a faf on your PATH.
project.faf authoring engine, browser/edge (faf-wasm's authoring sibling)faf-ide (stdio · skills/list · digests)If faf-mcp has been useful, consider starring the repo — it helps others find it.
If you use faf-mcp or the .faf / .fafa formats in research or production, please cite the format papers:
Wolfe, J. (2025). Format-Driven AI Context Architecture: The .faf Standard for Persistent Project Understanding. Zenodo. https://doi.org/10.5281/zenodo.18251362
Wolfe, J. (2026). Why Agents Need a Passport: .fafa — Portable Identity for the Agentic Era. Zenodo. https://doi.org/10.5281/zenodo.21951641
@article{wolfe2025faf,
title = {Format-Driven AI Context Architecture: The .faf Standard for Persistent Project Understanding},
author = {Wolfe, James},
year = {2025},
month = {nov},
publisher = {Zenodo},
doi = {10.5281/zenodo.18251362},
url = {https://doi.org/10.5281/zenodo.18251362}
}
@article{wolfe2026fafa,
title = {Why Agents Need a Passport: .fafa — Portable Identity for the Agentic Era},
author = {Wolfe, James},
year = {2026},
month = {aug},
publisher = {Zenodo},
doi = {10.5281/zenodo.21951641},
url = {https://doi.org/10.5281/zenodo.21951641}
}
MIT License — Free and open source
Zero drift. Eternal sync. AI optimized. ✪
"It's so logical if it didn't exist, AI would have built it itself" — Claude