loading…
Search for a command to run...
loading…
Enables Claude Code with persistent semantic memory, cross-session context, and memory hygiene via a local AD4M executor, offering 13 tools for managing semanti
Enables Claude Code with persistent semantic memory, cross-session context, and memory hygiene via a local AD4M executor, offering 13 tools for managing semantic graphs and cross-terminal relay.
AD4M MCP server for Claude Code — 13-tool semantic memory and enforcement layer.
Gives Claude Code persistent memory, cross-session context, and memory hygiene via a locally hosted AD4M executor. All data stays on your machine.
Getting AD4M working with Claude Code requires:
~/.ad4m/executor-port, not a fixed value)This server solves all of it. One command sets everything up.
git clone https://github.com/thefranceway/mcp-ad4m.git
cd mcp-ad4m
./setup-claude-code.sh --passphrase YOUR_AD4M_PASSPHRASE
The script:
launchd job that auto-unlocks AD4M on every bootClaudeMemory Perspective and saves the UUIDsettings.json snippet to paste into Claude CodeRequires: Node.js 18+, AD4M executor running locally, macOS
| Tool | Description |
|---|---|
ad4m_agent_status |
DID, initialization state, keystore lock state |
ad4m_list_perspectives |
All local Perspectives |
ad4m_create_perspective |
Create a new named semantic graph |
ad4m_write_memory |
Write a LinkExpression (source → predicate → target) |
ad4m_recall |
Query links with optional source/predicate/target filters |
ad4m_delete_memory |
Remove links by filter — matched/removed/failed counts |
ad4m_classify |
Classify content by layer before writing (env/local/relay/ad4m) |
ad4m_config_check |
Detect MCP registration in the wrong config file |
ad4m_optimize |
Deduplicate graph, flag stale entries, auto-runs every 10 writes |
ad4m_stats |
Total links, duplicate count, breakdown by predicate |
ad4m_get_neighbourhood |
Inspect a shared AD4M Neighbourhood |
relay_write |
Write cross-terminal live state via AD4M |
relay_read |
Read cross-terminal relay messages |
AD4M stores information as signed links: source → predicate → target.
memory://project/zuafrique → ad4m://has-content → literal://Deployed CF Pages 2026-03-15
franc://session-log → franc://closed → literal://Session ended
franc://relay/terminal-a → franc://relay → literal://Build in progress
ad4m_classify)| Layer | Where it belongs | Examples |
|---|---|---|
ad4m |
AD4M semantic graph | Decisions, project facts, cross-session context |
env |
~/.zshrc |
API keys, tokens, credentials |
local |
CLAUDE.md / settings.json |
Rules, hooks, permissions |
relay |
AD4M relay predicate | Live cross-terminal state |
Run ad4m_classify before ad4m_write_memory if unsure which layer to use.
The graph self-prunes automatically. Every 10 writes from any terminal increments a shared counter stored in AD4M (franc://optimizer → franc://write-count). When it hits 10, ad4m_optimize runs and removes exact duplicates.
To run manually:
ad4m_optimize({ perspective_uuid: "...", dry_run: true }) // report only
ad4m_optimize({ perspective_uuid: "...", dry_run: false }) // remove duplicates
Two Claude Code terminals sharing the same AD4M executor can exchange live messages:
Terminal A:
relay_write({ perspective_uuid: "...", message: "build done", session_id: "terminal-a" })
Terminal B:
relay_read({ perspective_uuid: "...", since: "2026-05-16T00:00:00Z" })
1. Build
npm install && npm run build
2. Add to ~/.claude/settings.json
"ad4m": {
"command": "/path/to/mcp-ad4m/bin/mcp-ad4m",
"args": [],
"env": {
"AD4M_GQL_URL": "http://localhost:4000/graphql"
}
}
3. Unlock the agent before each session
curl -s http://localhost:4000/graphql \
-H "Content-Type: application/json" \
-d '{"query":"mutation { agentUnlock(passphrase: \"YOUR_PASSPHRASE\") { isUnlocked } }"}'
Or install the launchd job from launchd/dev.ad4m.auto-unlock.plist to auto-unlock on boot.
The server returns actionable errors:
| Situation | What you see |
|---|---|
| Executor not running | AD4M executor not reachable. Start it with: ad4m serve --port 4000 |
| Agent locked | Agent is locked. Unlock with: curl ... (exact command included) |
| Timeout | fetch failed with port and URL |
mcp-ad4m/
├── src/
│ └── index.ts TypeScript source (13 tools)
├── dist/ Compiled output (generated by npm run build)
├── launchd/
│ └── dev.ad4m.auto-unlock.plist
├── setup-claude-code.sh One-command setup
├── package.json
└── tsconfig.json
MIT
Run in your terminal:
claude mcp add mcp-ad4m -- npx