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"
}
}
}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.