# io.github.Wolfe-Jam/claude-faf-mcp (npm · claude-faf-mcp)

Persistent project context for Claude. IANA-registered .faf format.

- Trust score: 64/100 (medium)
- Change this week: −10
- Registry status: deprecated
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-04

> **Deprecated**: this server is marked deprecated in the MCP registry.

## Components

- remote · `mcpaas.live`: 67/100, [markdown](https://verifymcp.io/servers/wolfe-jam-claude-faf-mcp/claude-mcp-v1.md), [page](https://verifymcp.io/servers/wolfe-jam-claude-faf-mcp/claude-mcp-v1)
- mcpb · `claude-faf-mcp-5.9.0.mcpb`: 11/100, [markdown](https://verifymcp.io/servers/wolfe-jam-claude-faf-mcp/https-github-com-wolfe-jam-claude-faf-mcp-releases-download-v5-9-0-claude-faf-mc.md), [page](https://verifymcp.io/servers/wolfe-jam-claude-faf-mcp/https-github-com-wolfe-jam-claude-faf-mcp-releases-download-v5-9-0-claude-faf-mc)
- npm · `claude-faf-mcp`: 64/100 (this document), [markdown](https://verifymcp.io/servers/wolfe-jam-claude-faf-mcp/claude-faf-mcp.md), [page](https://verifymcp.io/servers/wolfe-jam-claude-faf-mcp/claude-faf-mcp)

## Channel facts

- Registry: `npm`
- Package: `claude-faf-mcp`
- Version: `5.9.0`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-04.

- **Supply Chain Security**: 77/100
  - No malware found by supply-chain analysis.
  - CVE check failed: a known medium-severity CVE affects hono 4.12.33, reached via @modelcontextprotocol/sdk > hono. A fixed version is available.
  - Runs a script at install time (postinstall) that we could not recognise. It may be perfectly ordinary, but we do not read the published tarball, so we cannot say what it does.
  - Only part of the dependency tree could be resolved (143 of 147), so this covers what we could see, not the whole tree.
- **Provenance & Transparency**: 45/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 34 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 64/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (poor).
  - Tool/resource definitions use about 2730 tokens (~71/item across 38 items; 35 tools + 3 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 30/100
  - Stability observed for 9 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
  - Structured output schemas are declared (34% of tools); any adoption earns full credit.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add wolfe-jam-claude-faf-mcp -- npx -y claude-faf-mcp
```

### Codex

```bash
codex mcp add wolfe-jam-claude-faf-mcp -- npx -y claude-faf-mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "wolfe-jam-claude-faf-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "claude-faf-mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add wolfe-jam-claude-faf-mcp --command npx --arg -y --arg claude-faf-mcp
```

### Hermes

```yaml
mcp_servers:
  wolfe-jam-claude-faf-mcp:
    command: "npx"
    args: ["-y", "claude-faf-mcp"]
```

### Other

```json
{
  "mcpServers": {
    "wolfe-jam-claude-faf-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "claude-faf-mcp"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-04 (score 64, 0)

- [security regression] CVE-2026-69207 affects this package: medium
- [security] Known CVEs: CVE check failed: a known medium-severity CVE affects hono 4.12.33, reached via @modelcontextprotocol/sdk > hono. A fixed version is available.

### 2026-08-03 (score 64, +4)

- [functional improvement] Stability: unverified → 0.27

### 2026-08-02 (score 60, +27)

- [security regression] Known CVEs: unverified → fail
- [security regression] Provenance: unverified → fail
- [security improvement] Install scripts: unverified → partial
- [security improvement] Malware scan: unverified → pass
- [security] The scripts that run when this package is installed changed: postinstall
- [functional improvement] License: unverified → pass
- [functional improvement] Dependency health: unverified → partial
- [functional improvement] Maintenance: unverified → pass
- [functional] Licence: MIT

### 2026-07-31 (score 33, −4)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 37, −37)

- [security regression] Install scripts: partial → unverified
- [security regression] Provenance: fail → unverified
- [security regression] Malware scan: pass → unverified
- [security regression] Known CVEs: fail → unverified
- [security improvement] GHSA-g7r4-m6w7-qqqr no longer affects this package
- [security] The scripts that run when this package is installed changed: postinstall
- [functional regression] Maintenance: pass → unverified
- [functional regression] Dependency health: partial → unverified
- [functional regression] License: pass → unverified
- [functional] Licence: MIT

### 2026-07-28 (score 74, +31)

- [functional improvement] Schema quality: unverified → 100
- [functional improvement] Tool coverage: unverified → 100
- [functional] First check of Tool coverage: 34
- [functional] First check of Tool coverage: 100
- [functional] First check of Schema quality: fail
- [functional] First check of Schema quality: poor
- [functional] First check of Schema quality: pass

### 2026-07-27 (score 43, +18)

- [security regression] GHSA-g7r4-m6w7-qqqr affects this package: low
- [security regression] Provenance: unverified → fail
- [security regression] Known CVEs: unverified → fail
- [security improvement] Install scripts: unverified → partial
- [security] The scripts that run when this package is installed changed: postinstall
- [functional improvement] License: unverified → pass
- [functional improvement] Maintenance: unverified → pass
- [functional] Licence: MIT

### 2026-07-26 (score 25)

First indexed and scored.

## MCP tools (35)

### `faf` (~54 tokens)

Type "faf" to start. Scores your project, drives it to 100%, syncs everything. The one command that does it all.

Input parameters:

- `path` (string): Project path (optional — uses current directory if not provided)

### `faf_about` (~20 tokens)

Learn what .faf format is - project DNA for AI

### `faf_status` (~45 tokens)

Check if your project has project.faf (project DNA for AI) - Shows AI-readability status

Input parameters:

- `path` (string): Project path. Sets session context for subsequent calls.

Output parameters:

- `directory` (string): Directory that was checked
- `filename` (string|null): The .faf filename, if found
- `hasFaf` (boolean): Whether a project.faf (or .faf) was found
- `path` (string|null): Absolute path to the .faf file, if found

### `faf_score` (~59 tokens)

Calculate your project's AI-readability from project.faf (project DNA for AI) - F1-inspired metrics!

Input parameters:

- `details` (boolean): Include detailed breakdown and improvement suggestions
- `path` (string): Project path. Sets session context for subsequent calls.

Output parameters:

- `active` (number): Slots active for this app_type
- `empty` (number): Active slots still empty
- `hasFaf` (boolean): Whether a readable, valid project.faf was scored
- `ignored` (number): Slots marked slotignored (inactive for this app_type)
- `inherited` (boolean): True if the score is attested from a source repo (app_type: about)
- `nextTier` (object|null): Next tier above the current score, or null at top tier
- `parity` (object): Determinism parity receipt — an engine-agnostic hash any conformant scorer reproduces for this exact file. Third-party verifiable: sha256(projection) === parityHash.
- `path` (string): Path that was scored
- `populated` (number): Active slots that are filled
- `score` (number): AI-readiness score, 0-100
- `tier` (string): Tier name for this score (e.g. Bronze, Trophy)
- `total` (number): Total slots

### `faf_init` (~116 tokens)

Create project.faf (project DNA for AI) - Makes your project instantly AI-readable . Just enter path or project name. Examples: ~/Projects/my-app, my-app, /full/path/to/project

Input parameters:

- `force` (boolean): Overwrite existing project.faf if it exists
- `path` (string): Project path or name. Smart resolution: "my-app" finds ~/Projects/my-app OR ~/Code/my-app. Full paths like ~/Projects/app or /Users/me/code/app work too. Omit to use current directory.

### `faf_trust` (~48 tokens)

Attest project.faf integrity — validity, score, and a deterministic parity hash any conformant engine reproduces.

Input parameters:

- `path` (string): Project path. Sets session context for subsequent calls.

Output parameters:

- `hasFaf` (boolean): Whether a project.faf was found
- `parity` (object): Determinism parity receipt (same shape as faf_score.parity).
- `path` (string): Path that was attested
- `reason` (string): Why validation failed, when valid is false
- `receipt` (object): The ✪ trust receipt — render-identical, self-verifying score+parity artifact.
- `score` (number): AI-readiness score, 0-100
- `sourceSha256` (string): SHA-256 of the raw .faf bytes
- `tier` (string): Tier name for this score
- `valid` (boolean): Whether the project.faf is readable and valid

### `faf_setup` (~132 tokens)

Install the native SessionStart hook — every Claude Code session in this project starts with fresh .faf context. Shows the exact settings JSON first (preview); writes only with confirm: true. Non-destructive: existing settings and hooks are preserved. remove: true uninstalls exactly the faf hook.

Input parameters:

- `confirm` (boolean): Actually write the hook into .claude/settings.json. Without it, faf_setup only previews.
- `path` (string): Project path. Defaults to the current project context.
- `remove` (boolean): Remove the faf SessionStart hook (and only it) from .claude/settings.json.

Output parameters:

- `action` (string): What faf_setup did
- `hookCommand` (string): The command the SessionStart hook runs
- `message` (string): Human-readable summary
- `settings` (object): The full settings object as written (or as it would be written in preview)
- `settingsPath` (string): The settings file involved

### `faf_sync` (~45 tokens)

Sync project.faf (project DNA for AI) with CLAUDE.md - Bi-directional context

Input parameters:

- `path` (string): Project path. Sets session context for subsequent calls.

### `faf_enhance` (~125 tokens)

Enhance project.faf (project DNA for AI) with AI optimization — persistent context, zero drift

Input parameters:

- `consensus` (boolean): Build consensus from multiple AI models
- `dryRun` (boolean): Preview enhancement without applying changes
- `focus` (string): Enhancement focus: claude-optimal|human-context|ai-instructions|completeness
- `model` (string): Target AI model: claude|chatgpt|gemini|universal (default: claude)
- `path` (string): Project path. Sets session context for subsequent calls.

### `faf_bi_sync` (~186 tokens)

Bi-directional sync between project.faf and CLAUDE.md. v4.5.0: Also sync to AGENTS.md, .cursorrules, GEMINI.md!

Input parameters:

- `agents` (boolean): Also sync to AGENTS.md (OpenAI/Codex format)
- `all` (boolean): Sync to ALL formats: CLAUDE.md + AGENTS.md + .cursorrules + GEMINI.md
- `auto` (boolean): Enable automatic synchronization
- `cursor` (boolean): Also sync to .cursorrules (Cursor IDE format)
- `force` (boolean): Force overwrite conflicting changes
- `gemini` (boolean): Also sync to GEMINI.md (Google Gemini format)
- `path` (string): Project path. Sets session context for subsequent calls.
- `watch` (boolean): Start real-time file watching for changes

### `faf_clear` (~67 tokens)

Clear caches, temporary files, and reset FAF state for a fresh start

Input parameters:

- `all` (boolean): Clear everything (default)
- `backups` (boolean): Clear backup files only
- `cache` (boolean): Clear trust cache only
- `todos` (boolean): Clear todo lists only

### `faf_debug` (~25 tokens)

Debug Claude FAF MCP environment - show working directory, permissions, and FAF CLI status

### `faf_read` (~45 tokens)

Read a file within the project root (cwd / FAF_ALLOWED_ROOTS). Paths that escape the project are refused.

Input parameters:

- `path` (string, required): Absolute or relative file path to read

### `faf_write` (~58 tokens)

Write a file within the project root (cwd / FAF_ALLOWED_ROOTS). Paths that escape the project are refused.

Input parameters:

- `content` (string, required): Content to write to the file
- `path` (string, required): Absolute or relative file path to write

### `faf_list` (~140 tokens)

List directories and discover projects with project.faf files - Essential for FAF discovery workflow

Input parameters:

- `depth` (number): Directory depth to scan: 1 (immediate children) or 2 (one level deeper). Default: 1
- `filter` (string): Filter: "faf" (only dirs with project.faf), "dirs" (all directories), "all" (dirs and files). Default: "dirs"
- `path` (string, required): Directory path to list (e.g., ~/Projects, /Users/username/Projects)
- `showHidden` (boolean): Show hidden files/directories (starting with .). Default: false

Output parameters:

- `directory` (string): Absolute path that was scanned
- `entries` (array): The listed entries
- `fafProjects` (number): How many entries contain a project.faf
- `filter` (string): Filter applied: faf | dirs | all
- `total` (number): Number of entries returned

### `faf_friday` (~43 tokens)

Detect the FAF Chrome extension and run fuzzy-matching helpers.

Input parameters:

- `test` (string): Test fuzzy matching with typos like "raect" or "chr ext"

### `faf_guide` (~27 tokens)

FAF MCP usage guide for Claude Desktop - Projects convention, path resolution, and UX patterns

### `faf_readme` (~92 tokens)

Extract 6 Ws (Who/What/Why/Where/When/How) from README.md into human_context - Smart pattern matching

Input parameters:

- `apply` (boolean): Apply extracted content to project.faf (default: preview only)
- `force` (boolean): Overwrite existing human_context values (default: only fill empty slots)
- `path` (string): Project path. Sets session context for subsequent calls.

### `faf_human_add` (~78 tokens)

Add a human_context field (who/what/why/where/when/how) - Non-interactive for MCP

Input parameters:

- `field` (string, required): The 6 W field to set
- `path` (string): Project path. Sets session context for subsequent calls.
- `value` (string, required): The value to set for the field

### `faf_check` (~70 tokens)

Quality inspection for human_context fields + field protection - Shows empty/generic/good/excellent ratings

Input parameters:

- `path` (string): Project path. Sets session context for subsequent calls.
- `protect` (boolean): Lock good/excellent fields from being overwritten
- `unlock` (boolean): Remove all field protections

Output parameters:

- `emptyCount` (number): Fields that are empty
- `fields` (object): Per-field quality + protection (report mode)
- `goodCount` (number): Fields rated good or excellent
- `mode` (string): report | protect | unlock
- `protected` (array): Field names currently protected
- `protectedNow` (array): Fields newly protected by this call (protect mode)
- `qualityPercent` (number): Share of fields rated good/excellent (report mode)

### `faf_context` (~42 tokens)

Set or view active project context - Path is remembered for subsequent faf_ calls

Input parameters:

- `path` (string): Set active project path. If omitted, shows current context.

Output parameters:

- `active` (string): Absolute path of the active project
- `changed` (boolean): True if this call set a new context, false if it only reported
- `filename` (string|null): The .faf filename, if found
- `hasFaf` (boolean): Whether a project.faf (or .faf) was found there

### `faf_go` (~87 tokens)

Guided interview to Gold Code (100%): returns questions for missing fields, then applies your answers.

Input parameters:

- `answers` (object): Answers to apply. Keys are field paths (e.g., "project.goal", "human_context.why"), values are the answers. If provided, applies answers and returns new score.
- `path` (string): Project path. Sets session context for subsequent calls.

### `faf_auto` (~55 tokens)

Run the full FAF pipeline in one step: init + sync + formats + bi-sync + score.

Input parameters:

- `force` (boolean): Force overwrite existing files
- `path` (string): Project path. Sets session context for subsequent calls.

### `faf_dna` (~38 tokens)

Show the project FAF DNA — score history and progression over time.

Input parameters:

- `path` (string): Project path. Sets session context for subsequent calls.

Output parameters:

- `authenticated` (boolean): Whether the birth certificate is authenticated
- `birthScore` (number): Score at birth
- `certificate` (string|null): Birth certificate ID
- `currentScore` (number): Current score
- `daysActive` (number): Days since birth
- `hasDna` (boolean): Whether a .faf-dna history exists (or was just created)
- `hasFaf` (boolean): Whether a project.faf was found
- `justBorn` (boolean): True if this call created the birth certificate
- `milestones` (array): Recorded milestones
- `totalGrowth` (number): currentScore - birthScore

### `faf_formats` (~52 tokens)

Discover all formats in the project (154+ validated types) and fill stack slots.

Input parameters:

- `json` (boolean): Return results as JSON
- `path` (string): Project path. Sets session context for subsequent calls.

Output parameters:

- `count` (number): Number of known formats discovered
- `directory` (string): Directory that was scanned
- `elapsedMs` (number): Discovery time in milliseconds
- `formats` (array): Discovered formats
- `intelligenceScore` (number): Total intelligence score across discovered formats
- `slotFillRecommendations` (object): Recommended .faf slot fills derived from discovered formats
- `stackSignature` (string): Derived stack signature

### `faf_quick` (~88 tokens)

Lightning-fast .faf creation - One-liner format: "name, description, language, framework, hosting"

Input parameters:

- `force` (boolean): Force overwrite existing .faf file
- `input` (string, required): Quick input: "project-name, description, language, framework, hosting" (minimum: name, description)
- `path` (string): Project path. Sets session context for subsequent calls.

### `faf_doctor` (~39 tokens)

Health check for your .faf setup - Diagnose and fix common issues

Input parameters:

- `path` (string): Project path. Sets session context for subsequent calls.

Output parameters:

- `checks` (number): Number of checks run
- `diagnostics` (array): Per-check results
- `errors` (number): Count of error-level findings
- `health` (string): Overall verdict: ok | warning | error
- `warnings` (number): Count of warning-level findings

### `faf_agents` (~107 tokens)

Import/Export/Sync between AGENTS.md (OpenAI/Codex) and project.faf - AI interop!

Input parameters:

- `action` (string, required): Action: import (AGENTS.md -> .faf), export (.faf -> AGENTS.md), sync (bidirectional)
- `force` (boolean): Force overwrite existing files
- `merge` (boolean): Merge imported data with existing .faf instead of replacing
- `path` (string): Project path. Sets session context for subsequent calls.

### `faf_cursor` (~109 tokens)

Import/Export/Sync between .cursorrules (Cursor IDE) and project.faf - AI interop!

Input parameters:

- `action` (string, required): Action: import (.cursorrules -> .faf), export (.faf -> .cursorrules), sync (bidirectional)
- `force` (boolean): Force overwrite existing files
- `merge` (boolean): Merge imported data with existing .faf instead of replacing
- `path` (string): Project path. Sets session context for subsequent calls.

### `faf_gemini` (~108 tokens)

Import/Export/Sync between GEMINI.md (Google Gemini CLI) and project.faf - AI interop!

Input parameters:

- `action` (string, required): Action: import (GEMINI.md -> .faf), export (.faf -> GEMINI.md), sync (bidirectional)
- `force` (boolean): Force overwrite existing files
- `merge` (boolean): Merge imported data with existing .faf instead of replacing
- `path` (string): Project path. Sets session context for subsequent calls.

### `faf_conductor` (~97 tokens)

Import/Export between conductor/ directory (Google Conductor) and project.faf - AI interop!

Input parameters:

- `action` (string, required): Action: import (conductor/ -> .faf), export (.faf -> conductor/)
- `force` (boolean): Force overwrite existing files
- `merge` (boolean): Merge imported data with existing .faf instead of replacing
- `path` (string): Project path. Sets session context for subsequent calls.

### `faf_git` (~74 tokens)

Generate project.faf from any GitHub repo URL - 1-click context extraction!

Input parameters:

- `path` (string): Output directory for generated project.faf. If omitted, returns content without writing.
- `url` (string, required): GitHub repository URL (e.g., https://github.com/owner/repo or owner/repo)

### `faf_tri_sync` (~70 tokens)

Tri-directionally sync project.faf ↔ CLAUDE.md ↔ MEMORY.md so context persists across sessions.

Input parameters:

- `action` (string): export = sync .faf to MEMORY.md, status = show MEMORY.md state
- `path` (string): Project path. Sets session context for subsequent calls.

### `faf_etch` (~145 tokens)

Etch a memory — remember this across sessions (a decision, gotcha, or win). Writes to the project soul (.fafm).

Input parameters:

- `id` (string): Stable id — re-etching the same id updates in place (dedup)
- `path` (string): Project path. Sets session context for subsequent calls.
- `priority` (string): Recall ranks by priority then recency
- `tags` (array): Tags (e.g. decision, gotcha, win) for filtering + recall coupling
- `text` (string, required): The memory to remember — capture the why (decision/gotcha/win)
- `type` (string): Memory category

Output parameters:

- `etched` (object)
- `namepoint` (string)
- `soul` (string): Path to soul.fafm
- `total` (number): Total memories in the soul

### `faf_recall` (~105 tokens)

Recall memories from the project soul (.fafm), ranked by priority then recency.

Input parameters:

- `limit` (number): Max memories to return
- `minPriority` (string): Priority floor (default ephemeral)
- `path` (string): Project path. Sets session context for subsequent calls.
- `query` (string): Case-insensitive substring match on memory text (optional)
- `tags` (array): Filter by tag intersection
- `type` (string): Filter by memory type

Output parameters:

- `memories` (array)
- `soul` (string)
- `soulTotal` (number): Total memories in the soul
- `total` (number): Number returned

## Diagnostics

Captured diagnostic sections: Provenance, Install scripts, Vulnerabilities, Dependencies. The full working is on the page: https://verifymcp.io/servers/wolfe-jam-claude-faf-mcp/claude-faf-mcp#diagnostics

## Score history

- 2026-08-04: 64
- 2026-08-03: 64
- 2026-08-02: 60
- 2026-08-01: 33
- 2026-07-31: 33
- 2026-07-30: 37
- 2026-07-28: 74
- 2026-07-27: 43
- 2026-07-26: 25

## Links

- npm package: https://www.npmjs.com/package/claude-faf-mcp
- Socket report: https://socket.dev/npm/package/claude-faf-mcp
- Repository: https://github.com/Wolfe-Jam/claude-faf-mcp
- Website: https://faf.one/
- Changelog RSS feed: https://verifymcp.io/servers/wolfe-jam-claude-faf-mcp/claude-faf-mcp/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/wolfe-jam-claude-faf-mcp/claude-faf-mcp/changelog.json
- HTML version of this page: https://verifymcp.io/servers/wolfe-jam-claude-faf-mcp/claude-faf-mcp
