Claude Code and Cursor
Claude Code and Cursor both start MCP servers from a JSON entry, and both use the same entry for Meaning Memory. Set up an agent workspace and an access policy first: steps 1 to 4 of the Quickstart.
The entry
Section titled “The entry”{ "mcpServers": { "meaning-memory": { "command": "mm-mcp", "env": { "MM_AGENT": "support-bot", "MM_ACTOR": "support-bot", "MM_BACKEND": "file", "MM_WORKSPACE": "/srv/support-bot-mm", "MM_CONFIG_DIR": "/srv/support-bot-mm", "MM_SCOPE_AUTH_CONFIG": "/srv/scope_auth.yaml", "MM_ALLOW_INTERNAL": "1" } } }}| Variable | What it sets |
|---|---|
MM_AGENT |
The agent the server runs as. Searches and writes are scoped to it. |
MM_ACTOR |
The name recorded on every write and status change. Set it to the agent’s id, or to the name of the person or tool using it. |
MM_BACKEND |
file or postgres. For Postgres, also set MM_POSTGRES_DSN. |
MM_WORKSPACE, MM_CONFIG_DIR |
The workspace meaning-memory init created. |
MM_SCOPE_AUTH_CONFIG |
The access policy. |
MM_ALLOW_INTERNAL |
1 turns on the tools that write memory and manage commitments. |
If mm-mcp is not on the PATH the editor uses, give its full path as command, for example the bin/mm-mcp inside the virtual environment you installed into.
Claude Code
Section titled “Claude Code”Add the entry to .mcp.json at the root of your project, which shares it with everyone working there, or run:
claude mcp add -s project meaning-memory \ -e MM_AGENT=support-bot -e MM_ACTOR=support-bot -e MM_BACKEND=file \ -e MM_WORKSPACE=/srv/support-bot-mm -e MM_CONFIG_DIR=/srv/support-bot-mm \ -e MM_SCOPE_AUTH_CONFIG=/srv/scope_auth.yaml -e MM_ALLOW_INTERNAL=1 \ -- mm-mcp-s project writes the same .mcp.json shown above. Use -s user to make the server available in all your projects instead. Run /mcp inside Claude Code to see whether the server connected.
Cursor
Section titled “Cursor”Put the same entry in .cursor/mcp.json in your project, or in ~/.cursor/mcp.json to use it in every project. Cursor lists the server and its tools under Settings → MCP.
Read-only access
Section titled “Read-only access”Leave out MM_ALLOW_INTERNAL to give an assistant search without the ability to change anything. It can then use mm_search and the reporting tools, but not mm_remember, and not the commitment tools: listing what is due is turned off along with closing. Those calls return:
**Error:** 'mm_remember' is an internal agent-facing tool and is disabled by default. …The tools stay in the assistant’s tool list; only the calls are refused. If your client can filter an MCP server’s tools, list just the ones you want the assistant to see, so it doesn’t keep trying the others.
Check the connection
Section titled “Check the connection”Ask the assistant to run mm_status. A connected server answers with the agent’s name and its number of entries:
# Meaning Memory Status
- **Agent:** support-bot- **Phase:** 2- **Organization:** (not set)- **Pipeline:** enabled- **Total entries:** 8- **Active entries:** 8…mm_status works without MM_ALLOW_INTERNAL, so it also checks a read-only connection. Then try a search:
mm_search({"query": "Acme"})| # | mem_id | Sig | Eligible | Category | Date | Text ||---|--------|-----|----------|----------|------|------|| 1 | `140036cca0d9321b` | 0.80 | - | fact | 2026-10-03 | Call Acme about the renewal. |If the server does not start, the editor’s MCP log shows why. The two usual causes are a missing access policy (MM_SCOPE_AUTH_CONFIG) and a command the editor cannot find.
- Commitments and When memories become searchable explain what the agent can do once connected.
- MCP tools lists all 53 tools.