faf-memory-mcp
v0.1.1 — etch writes the file so memory survives the process. Plugin install matches live faf-memory@claude-community.
MCP server for .fafm — the Permanent Memory Layer (PML) for Claude Code, Cursor, Grok, and any MCP host.
Cross-vendor persistent memory in a file you can read. Offline-first. Your soul, your bytes.
What's New in 0.1.1
etch writes the file so memory survives the process. Plugin install matches live faf-memory@claude-community.
etchpersists to$FAF_SOUL_PATHimmediately (default./soul.fafm).- Claude Code install:
claude plugin install faf-memory@claude-community. - Full arc: CHANGELOG.
Wraps claude-fafm-sdk via fastmcp. Receipt: 400+× faster type-filter queries vs grep on a real 492-file AI memory corpus — falsifiable methodology at Wolfe-Jam/faf-memory-proof.
Why
Every AI session, your agent starts blank — no memory of what you decided yesterday, what worked, what was tried. The fix isn't another hosted memory service; it's a file the AI reads at session start and writes back to as it learns. That file is .fafm — IANA-registered, cross-vendor, and 996 KB / 49 ms cold-load for a 492-fact corpus (full numbers: the receipt).
This server is that file, over MCP. FAFA’s etch_memory / recall_memory is the hosted namepoint path on mcpaas. Complementary, not a second product.
Install
uvx faf-memory-mcp
Use in Claude Code (recommended)
Via the faf-memory plugin on claude-plugins-community:
claude plugin marketplace add anthropics/claude-plugins-community
claude plugin install faf-memory@claude-community
Or in-session: /plugin install faf-memory@claude-community
Requires uv — the plugin launches this server with uvx.
Or wire .mcp.json directly:
{
"faf-memory": {
"command": "uvx",
"args": ["faf-memory-mcp"]
}
}
Tools
| Tool | What it does |
|---|---|
etch(text, id?, type?, priority?, tags?) |
Write a durable fact and persist to $FAF_SOUL_PATH. O(1) dedup by id. |
recall(query?, type?, tags?, min_priority?, limit?) |
Filter (substring + type + tags + priority floor) → rank by priority then recency. |
list_facts() |
List ALL facts — no filter, no rank. |
save_soul(path?) |
Write the soul to another path (etch already saves the default file). |
load_soul(path?) |
Load a .fafm from disk, replacing the in-memory soul. |
Configuration
| Env var | Default | What |
|---|---|---|
FAF_SOUL_NAMEPOINT |
@local |
Initial soul identifier |
FAF_SOUL_PROFILE |
knowledge |
.fafm profile (knowledge or voice) |
FAF_SOUL_PATH |
soul.fafm |
Default save/load path |
Format
.fafm is IANA-registered as application/vnd.fafm+yaml (registered 2026-05-13). Sibling of .faf (application/vnd.faf+yaml, 2025-10-30).
- Spec:
Wolfe-Jam/faf· MEMORY-FORMAT.md - Paper: Zenodo DOI 10.5281/zenodo.20348942
- Reference impls:
claude-fafm-sdk(Python) ·grok-faf-voice(voice profile, Python) - Cross-vendor proof: a
.fafmwritten byclaude-fafm-sdkreads cleanly viagrok-faf-voice, both directions tested.
How to know it's working
- Your agent doesn't ask "what is this project?" twice in the same week.
recall("X")surfaces what you etched last session, not just this one.- The
.fafmfile grows readably — it's plain YAML, diff it like code. - Open the same
.fafmingrok-faf-voice— same facts. Cross-vendor proven.
Tradeoff note
Biases toward deterministic recall (substring + type + tags + priority + recency) over semantic recall. For semantic/ranked recall + LLM smart-merge, see hosted namepoints in claude-fafm-sdk. Offline-first ≠ offline-only.
The FAF Memory cluster
- This repo —
faf-memory-mcp— the MCP server (wraps the SDK) Wolfe-Jam/faf-memory— the Claude Code plugin that installs this MCPWolfe-Jam/faf-memory-proof— the falsifiable receipt (412× methodology + scripts)claude-fafm-sdk— the open Python SDK this server wrapsWolfe-Jam/faf— the format spec + IANA registration
Citation
Wolfe, J. (2026). Permanent Memory and Instant Recall: The .fafm Standard for Multi-Profile AI Agent Memory. Zenodo. https://doi.org/10.5281/zenodo.20348942
Wolfe, J. (2026). Why Agents Need a Passport: .fafa — Portable Identity for the Agentic Era. Zenodo. https://doi.org/10.5281/zenodo.21951641
License
MIT.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file faf_memory_mcp-0.1.1.tar.gz.
File metadata
- Download URL: faf_memory_mcp-0.1.1.tar.gz
- Upload date:
- Size: 11.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7536a3019eb3d8e190da73f892d4e1fee88917b3e4c126f33a449a504685229c
|
|
| MD5 |
3079d16e2ae919c8742fdffd5140ac4f
|
|
| BLAKE2b-256 |
37c8cd0453063fca6530ed501cbbd18803eefdc7cc8bf434914d4bc9b2be92fe
|
Provenance
The following attestation bundles were made for faf_memory_mcp-0.1.1.tar.gz:
Publisher:
pypi.yml on Wolfe-Jam/faf-memory-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
faf_memory_mcp-0.1.1.tar.gz -
Subject digest:
7536a3019eb3d8e190da73f892d4e1fee88917b3e4c126f33a449a504685229c - Sigstore transparency entry: 2479633628
- Sigstore integration time:
-
Permalink:
Wolfe-Jam/faf-memory-mcp@89a36fc4ec754bcde3693160e916a4d8dd933d5b -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/Wolfe-Jam
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi.yml@89a36fc4ec754bcde3693160e916a4d8dd933d5b -
Trigger Event:
release
-
Statement type:
File details
Details for the file faf_memory_mcp-0.1.1-py3-none-any.whl.
File metadata
- Download URL: faf_memory_mcp-0.1.1-py3-none-any.whl
- Upload date:
- Size: 7.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4be532dfdcef02db5bb1d80fbec83ba62fd9ba5669cceef3ed12722451b22467
|
|
| MD5 |
d070a891fcf0ee6615aee03533bad1cc
|
|
| BLAKE2b-256 |
9c734b44ef2c49be5cdc78100cb532b239771c8478f4e76fd59242ce37a68942
|
Provenance
The following attestation bundles were made for faf_memory_mcp-0.1.1-py3-none-any.whl:
Publisher:
pypi.yml on Wolfe-Jam/faf-memory-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
faf_memory_mcp-0.1.1-py3-none-any.whl -
Subject digest:
4be532dfdcef02db5bb1d80fbec83ba62fd9ba5669cceef3ed12722451b22467 - Sigstore transparency entry: 2479633690
- Sigstore integration time:
-
Permalink:
Wolfe-Jam/faf-memory-mcp@89a36fc4ec754bcde3693160e916a4d8dd933d5b -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/Wolfe-Jam
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi.yml@89a36fc4ec754bcde3693160e916a4d8dd933d5b -
Trigger Event:
release
-
Statement type: