Integrate

Connect a client

Synapse speaks the Model Context Protocol over two transports. Use stdio for local clients like Cursor and Claude Desktop, or HTTP for anything that can reach a URL.

Recommended for Cursor / Claude Desktop

Local stdio

Add this to your client's MCP config (for Cursor, .cursor/mcp.json). It spawns the Synapse server as a child process.

{
  "mcpServers": {
    "synapse": {
      "command": "npx",
      "args": [
        "-y",
        "tsx",
        "/var/task/mcp/stdio.ts"
      ]
    }
  }
}

For remote / URL-based clients

Streamable HTTP

Start the app (npm run dev) and point an HTTP-capable MCP client at the endpoint below.

{
  "mcpServers": {
    "synapse": {
      "url": "http://localhost:3000/api/mcp"
    }
  }
}
Verify it works

Call a tool over HTTP without any client to confirm the server is live:

curl -s -X POST http://localhost:3000/api/mcp \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call",
       "params":{"name":"remember",
                 "arguments":{"content":"I prefer dark mode"}}}'

Available tools

The same six tools are exposed over both transports and to the in-app agent.

remember()

Store a memory durably.

recall()

Semantic search over memories.

build_context()

Synthesize an injectable context block.

get_related()

Find memories related to one id.

list_memories()

List the most recent memories.

forget()

Delete a memory by id.

First-run note

On first use, Synapse downloads a small on-device embedding model (all-MiniLM-L6-v2, ~90MB) and caches it. After that, semantic memory runs fully offline with no API key. Memories are stored in a local SQLite database at data/synapse.db.