v5.4.0 — V5-9 memory MCP server
MINOR. The memory engine is now reachable from any MCP host — Claude Code, Cursor, Goose, Claude Desktop — through a single local HTTP daemon. Four snake_case tools (memory_search, memory_recall, memory_append, memory_forget), singleton streamable-HTTP broker, static bearer auth, mandatory Origin-validation, and soft-delete. The daemon is writer #2 alongside the CLI, routing all MCP-host writes through the V5-0 vault_lock protocol. Five locked design calls in ADR 0017. Gates: 20/20, CI green across Linux/Mac/Windows.
Added
- Server skeleton + liveness probe (
cfda095) —scripts/memory_mcp_server.py, FastMCP 3.x,127.0.0.1:7821,/health - Four-tool surface (
ccdcb98) —memory_search/memory_recall/memory_append/memory_forget; in-memory test client - Writer-routing + vault-source-resolution (
fb4c4ef) — resolves through V5-1backend_selection(vault-primary); writer #2 composing full V5-0 mutex/CAS stack; never a hardcoded repo allowlist - Security layer (
cd8d358) —TokenVerifier(bearer auth),_OriginValidatorASGI middleware (→403 on non-loopback Origin), path-traversal validation - Stdio shim + host configs (
e895cef) —memory_mcp_stdio_shim.pyfor Claude Desktop; config snippets for Claude Code / Cursor / Goose / Claude Desktop - Operations & docs (
c9d79dc) —memory_mcp_doctor.py(4 checks, 13 tests), launchd plist template,install.sh --mcp-server, doctor skill check 4e, ADR 0017, Stand-Up-Memory-MCP-Server how-to, Memory-MCP-Tools reference
Internal
- Fix
check-lib-parity/sync-lib: exclude__pycache__from checksums (67bf8a7) - Fix
check_index_root_safe: normalize to POSIX path before sync-marker check — Windows compat (1e11426)
How to connect
See Stand up the memory MCP server in the wiki. Verify with python3 scripts/memory_mcp_doctor.py --live.
Deferred to v1.1: remote tier (outbound tunnel + OAuth 2.1), Windows daemon parity, memory_get fetch verb.