Persistent project context for Google Gemini. Python/FastMCP. IANA-registered .faf format.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Persistent Project Context for Google Gemini. Define once. Sync everywhere.
FAF defines. MD instructs. AI codes.
β A star helps other devs discover gemini-faf-mcp β despite the downloads, ~3 of 4 devs check stars first.
Stop re-explaining your project to every new Gemini session. Every Gemini conversation starts cold β you re-state your stack, your goals, your conventions every single time. .faf is one structured file that captures all of it. This package is the MCP server that lets Gemini read it.
.faf is read once at session start. Every tool call lands on a Gemini that already knows your project.
faf_auto now grounds its detection in the repo's own files, and every faf_model reference template scores 100% Trophy.
faf_auto used to read only the root manifest (pyproject.toml, package.json, β¦). It now also reads the files that carry the real stack: docker-compose service images map onto database / cache / search / storage (a running Postgres service is the database β it beats a dependency guess), Makefile / justfile targets map onto the commands block (test / build / check-all, root file or a nested backend/Makefile), and .github/workflows/ sets cicd. A polyglot repo that reported library / JavaScript now reports its real Postgres + Redis + FastAPI stack. In parity with faf-cli 7.10.
Separately: the 15 faf_model reference templates were scoring 48β57% β they filled 4 stack slots and used null. All rewritten to the full 21-slot schema; every one is 100% Trophy now, and a test keeps it that way. 13 tools Β· 262 tests.
v2.7.1 / v2.7.0 β The Interop Edition β
faf_agents/faf_geminirewritten asfaf-python-sdkauthoring-tool wrappers (were 4-field stubs); newfaf_migratebrings a.fafup to the current format. v2.6.0 β The Agent Card Edition added a realagent.fafapassport, an MCP Server Card (SEP-2127), and an AI Catalog entry. v2.5.0 β The Dart Edition detects Dart/Flutter frompubspec.yaml. v2.4.2 β The Confinement Edition confined every callerpathargument. v2.4.0 β The Chameleon Edition auto-selects its transport: stdio locally, Streamable HTTP on Cloud Run.
In your Gemini CLI:
You should see: Created project.faf β Score: 85% (BRONZE). From this point, every Gemini session in this project reads it automatically.
Tip: A score of 85% (BRONZE) is the minimum where Gemini stops guessing. Run
/faf:scoreto see what's missing and how to push to 100% (TROPHY).
A .faf file is structured YAML that captures your project DNA. Every AI agent reads it once and knows exactly what you're building.
Result: Gemini reads this once and knows your project. No 20-minute onboarding. No wrong assumptions. Every session starts aligned.
FAF defines. MD instructs. AI codes.
GEMINI.md?You don't replace it. .faf authors it. Run faf_gemini and you get a fresh GEMINI.md in Gemini CLI's own hierarchical, @file-importable convention β setup, verify, key files, stack, confirm-first actions β authored from a single source of truth instead of hand-maintained. Your hand-written content outside the faf-managed block is preserved.
.faf is the source. GEMINI.md is one of its outputs. Same logic for AGENTS.md (OpenAI Codex), .cursorrules, CLAUDE.md, and others β write once, render everywhere.
faf_auto scans your project's manifest files and its docker-compose services, Makefile targets, and CI config, then authors a .faf with accurate slot values. No manual entry needed.
database and cache came from docker-compose.yml, commands from the Makefile, cicd from .github/workflows/ β none of which the manifest scan sees. Fill in the six W's and you are at Trophy.
What it scans:
| File | Detects |
|---|---|
pyproject.toml | Python + build system + frameworks (FastAPI, Django, Flask, FastMCP) |
package.json | JavaScript/TypeScript + frameworks (React, Vue, Next.js, Express) |
Cargo.toml | Rust + cargo + frameworks (Axum, Actix) |
go.mod | Go + go modules + frameworks (Gin, Echo) |
requirements.txt / Gemfile / composer.json | Python (fallback) / Ruby / PHP |
docker-compose.yml | database / cache / search / storage from service images (Postgres, Redis, Elasticsearch, MinIO, ClickHouse, Qdrant, β¦) |
Makefile / justfile | test / build / lint commands from targets (root, or a nested backend/ dir) |
.github/workflows/ | cicd: GitHub Actions (also GitLab CI, CircleCI) |
Priority rule: pyproject.toml / Cargo.toml / go.mod take priority over package.json. File-facts (a real compose service, a Makefile target) win over dependency guesses. Only sets values that are actually detected β no hardcoded defaults.
| Tool | What it does |
|---|---|
faf_init | Create a starter .faf file with project name, goal, and language |
faf_auto | Auto-detect stack from manifest files and author/update .faf |
faf_discover | Find .faf files in the project tree |
| Tool | What it does |
|---|---|
faf_validate | Full Mk4 validation β score, tier, slot counts, errors, warnings |
faf_score | Quick Mk4 score β score, tier, populated/active/total slot counts |
| Tool | What it does |
|---|---|
faf_read | Parse a .faf file into structured data |
faf_stringify | Convert parsed FAF data back to clean YAML |
faf_context | Get Gemini-optimized context (project + stack + score) |
| Tool | What it does |
|---|---|
faf_gemini | Export GEMINI.md in Gemini CLI's hierarchical convention (non-destructive) |
faf_agents | Export a BETTER-shaped AGENTS.md for OpenAI Codex, Cursor, and other AI tools (non-destructive) |
| Tool | What it does |
|---|---|
faf_migrate | Bring a .faf up to the current format version (3.0); dry_run to preview |
| Tool | What it does |
|---|---|
faf_about | FAF format info β IANA registration, version, ecosystem |
faf_model | Get a 100% Trophy-scored example .faf for any of 15 project types |
Your .faf file is scored on completeness β how many slots are filled with real values.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/gemini-faf)<a href="https://allmcps.com/mcp/gemini-faf"><img src="https://allmcps.com/api/badge/gemini-faf?style=directory" alt="Gemini FAF on AllMCPs" /></a>