← All platforms

Cursor

The same mcp.json file — local stdio or cloud API key, one field apart.

Cursor supports both connection modes through the same mcp.json file — the difference is whether the entry uses command + env (local) or url + headers (cloud).

Local (stdio)

A local stdio server, configured in ~/.cursor/mcp.json (global) or .cursor/mcp.json (per-project). command runs uvx, which downloads and runs Spomory on demand — no install step:

{
  "mcpServers": {
    "Spomory": {
      "command": "uvx",
      "args": ["--from", "spomory[llm,embedding,mcp]", "spomory-mcp"],
      "env": {
        "LLM_API_KEY": "...",
        "LLM_BASE_URL": "https://api.deepseek.com",
        "LLM_MODEL": "deepseek-v4-flash"
      }
    }
  }
}

Restart Cursor after editing, or use Cursor's own GUI: Settings → MCP → "Add new global MCP server" opens this same file in a split editor pane.

Verified against a real Cursor installation, connected to the same real backend used to verify every other client on this page.

Prefer a fixed, pinned install over uvx's on-demand cache? Install into a virtual environment outside ~/Documents (pip install 'spomory[llm,embedding,mcp]'), then point command at that venv's bin/memory-core-mcp directly.

Where do these environment variables come from?

LLM_API_KEY is your key for whichever OpenAI-compatible provider you use for extraction — OpenAI, DeepSeek, Qwen, and others all work. LLM_BASE_URL and LLM_MODEL default to OpenAI if you leave them out; swap them to point at DeepSeek, Qwen, or any other OpenAI-compatible provider, or a fully local server (Ollama, vLLM, llama.cpp, MLX):

export LLM_API_KEY=...
export LLM_BASE_URL=https://api.deepseek.com   # optional, defaults to OpenAI
export LLM_MODEL=deepseek-v4-flash             # optional, defaults to gpt-4o-mini
export EMBEDDING_MODEL=BAAI/bge-m3             # optional, defaults to bge-m3
Full local setup guide, including the macOS ~/Documents gotcha →

Cloud (API key)

Cursor doesn't have a dedicated "OAuth connector" entry point, so it uses the API key instead — the same mcp.json file, but with url + headers instead of command + env:

{
  "mcpServers": {
    "spomory-cloud": {
      "url": "https://api.yliuai.com/mcp-apikey/",
      "headers": {
        "x-api-key": "<your key>"
      }
    }
  }
}

Or use Cursor's GUI: Settings → MCP → "Add new global MCP server" opens the same file in a split editor pane.

Verified against a real Cursor installation, resolving to the same account/memory graph as the Claude Desktop OAuth connection above.

Where does <your key> come from?

Get one instantly with curl — fine for your own testing:

curl -X POST https://api.yliuai.com/users/register \
  -H "Content-Type: application/json" \
  -d '{"email": "you@example.com"}'
# the api_key in the response (starts with mck_) is shown only this once -- save it

That hands you a key with no proof you control the email — fine for testing, but for real use, get one through the email-confirmation form instead, which actually verifies the address.

Get a verified key on the Cloud & Apps page →

Make it actually get used

Connecting the tools doesn't mean your client reaches for them on its own — it needs to be told to call search_memory before answering and add_memory after you share something worth keeping. SKILL.md is a short instructions file that does that. How you load it is specific to each client: some auto-discover a skills folder the same way Claude Code does, others only have a custom-instructions or system-prompt field instead. Verified for this one:

Cursor auto-discovers skills the same way Claude Code does — drop the folder at .cursor/skills/spomory/SKILL.md (project) or ~/.cursor/skills/spomory/SKILL.md (user-level).

SKILL.md on GitHub →