getmnemo-mcp
v0.4.0
Published
Model Context Protocol server for Mnemo Memory — exposes search/add/update/delete tools to Claude Desktop, Cursor, Windsurf, VS Code, Zed.
Readme
getmnemo-mcp
Model Context Protocol server for Mnemo Memory — exposes long-term memory tools to any MCP client (Claude Desktop, Cursor, Windsurf, VS Code, Zed).
Tools
| Tool | What it does |
|---|---|
| memory_search | Hybrid 7-strategy retrieval over the workspace memory store. Filter by polarity, searchMode (memories/documents/both), exclude already-seen ids, or opt into precise mode. |
| memory_answer | Cited-answer pipeline: question in, synthesized answer + citations out (mode: "fast" for ~1-2s). |
| memory_add | Store an atomic fact with optional metadata; polarity: "negative" marks a hard constraint. |
| memory_get | Fetch one memory by ID within the configured container. |
| memory_update | Patch an existing memory's content, metadata, or polarity. |
| memory_delete | Soft-delete a memory by ID so it leaves retrieval. |
| memory_restore | Undo a soft delete during its recovery window (API-key sessions only). |
| memory_list | Paginate through memories (cursor-based). |
| document_add | Ingest a raw document (up to 500,000 characters) into the async extraction lane; returns a jobId. |
| job_status | Poll an ingestion job: queued / processing / completed / failed (API-key sessions only). |
Personal-memory tools (0.3.0, Mnemo API v0.3.0)
| Tool | What it does | Key scope(s) | API flag |
|---|---|---|---|
| daily_brief | Today's reminders, important dates, last-24h captures, follow-ups and meetings for one container. | brief:read | MEMORY_API_BRIEF_ENABLED |
| memory_timeline | One container as a time-ordered stream of memories, reminders, documents (and optional events). | timeline:read | MEMORY_API_TIMELINE_ENABLED |
| people_list | People the workspace remembers, with memory / open-reminder counts. | people:read | MEMORY_API_PEOPLE_ENABLED |
| people_get | One person by slug (contact details, important dates, aliases). | people:read | MEMORY_API_PEOPLE_ENABLED |
| people_upsert | Create a person, or update them when the slug already exists. | people:write | MEMORY_API_PEOPLE_ENABLED |
| reminder_create | A reminder with a due time, filed under a person or a container. | reminders:write | MEMORY_API_PEOPLE_ENABLED |
| reminders_upcoming | Overdue / due-today / upcoming reminders plus important dates, by local day. | reminders:read | MEMORY_API_PEOPLE_ENABLED |
| reminder_complete | Mark a reminder done. | reminders:write | MEMORY_API_PEOPLE_ENABLED |
| meetings_upcoming | Upcoming Google Calendar meetings with attendees resolved to people. | meetings:read | MEMORY_API_MEETINGS_ENABLED |
| meeting_brief | Pre-meeting brief: reader answer with citations, matched people, previous meetings. | meetings:read + answer:read | MEMORY_API_MEETINGS_ENABLED |
| memory_merge | Fold 2..20 duplicate memories into one survivor (idempotent on mergeKey). | memories:write + memories:delete | MEMORY_API_INBOX_ENABLED |
These scopes are opt-in: mint (or edit) the API key with them at
https://app.mnemohq.com/settings/api-keys. Every feature is dark until the
API operator sets its MEMORY_API_* flag; until then the tool returns a
503 FEATURE_DISABLED error that names the flag.
All personal-memory tools except memory_timeline are API-key only:
the API rejects hosted OAuth MCP tokens on cross-container routes, so hosted
OAuth sessions (https://mcp.mnemohq.com/mcp) do not list them.
Remote HTTP calls are scoped by the user's Mnemo OAuth grant. The user signs in, chooses a workspace and memory container, and the server derives that scope from the access token. The model cannot set or change it.
Install
Local stdio clients
npx -y getmnemo-mcpOr wire it into the client config directly. Example for Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"getmnemo": {
"command": "npx",
"args": ["-y", "getmnemo-mcp"],
"env": {
"GETMNEMO_API_KEY": "prfly_live_...",
"GETMNEMO_WORKSPACE_ID": "ws_...",
"GETMNEMO_CONTAINER_TAG": "user:jane"
}
}
}
}Get an API key at https://app.mnemohq.com/settings/api-keys.
Hosted remote MCP clients
For clients that support remote MCP and OAuth 2.1, use:
https://mcp.mnemohq.com/mcpThe client should discover OAuth metadata, open Mnemo sign-in, and return to the client after the user selects a workspace and container. No API key, workspace header, or container configuration is required for this path.
Develop
npm install
cp .env.example .env # fill in API-key/container values for stdio
npm run dev # stdio
npm run dev:http # Streamable HTTP on :8787
npm run build # bundle to dist/
npm run lint && npm run typecheck && npm testArchitecture
- stdio (
src/cli.ts): one process per MCP client connection, env-configured. - Streamable HTTP (
src/http.ts): hosted transport for public OAuth sessions, with private API-key compatibility for trusted deployments. - Both transports share
src/server.ts(tool registration + dispatch),src/personal-tools.ts(personal-memory tools) andsrc/api-client.ts(typed REST wrapper).
The public hosted transport uses Mnemo's OAuth 2.1 authorization server and resource-bound tokens. Header-selected containers remain disabled by default; they are only a private compatibility path for a trusted gateway.
The server deliberately does NOT depend on getmnemo (the JS SDK) so it can ship independently.
License
MIT
