faf-memory-mcp
v0.1.2 — Plugin install is faf-memory@faf-plugins (Anthropic directory listing in review).
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.2
Plugin install is faf-memory@faf-plugins (Anthropic directory listing in review).
- Corrects 0.1.1, which said the plugin was live at
faf-memory@claude-community. It isn't in that marketplace; it's in the FAF marketplace, and its Anthropic directory listing is in review. - Hosts: Cursor, Grok and any MCP host share one
mcpServersJSON (below). - No code changes. 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 a host
Claude Code — the faf-memory plugin, from the FAF marketplace (Anthropic directory listing in review):
claude plugin marketplace add Wolfe-Jam/faf-plugins
claude plugin install faf-memory@faf-plugins
Requires uv — the plugin launches this server with uvx.
Cursor · Grok · any host — same JSON. Cursor: ~/.cursor/mcp.json. Grok: .mcp.json (Grok also reads Cursor’s file).
{
"mcpServers": {
"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.
Metadata
Release files for faf-memory-mcp 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| faf_memory_mcp-0.1.2.tar.gz | 11.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| faf_memory_mcp-0.1.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 18.5 kB
Release files / faf_memory_mcp-0.1.2.tar.gz
| Download URL | faf_memory_mcp-0.1.2.tar.gz |
|---|---|
| Size | 11.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7e8de84c619e9cbeb091d0381a04d85900654d04926e0892075a74e748129bbd
|
|
BLAKE2b-256 checksum How to use checksums |
cb484e116b6f7779915d73a739427dcfca3d0dd1988aef20ef477a9de03d6156
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 3, 2026.
Transparency logRelease files / faf_memory_mcp-0.1.2-py3-none-any.whl
| Download URL | faf_memory_mcp-0.1.2-py3-none-any.whl |
|---|---|
| Size | 7.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c1a2ccd252ab4a5b666b13a3fa2d8e0ec48113960cb023a5081806adaaefd855
|
|
BLAKE2b-256 checksum How to use checksums |
302ba33e8070ef39eac01f8b234640f06bfd49aa173f2e435331da91dd8bc63f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 3, 2026.
Transparency log