Ditto MCP Server
Ditto exposes an MCP (Model Context Protocol) server that lets any compatible AI tool access your memories, subjects, and knowledge graph. This means Claude, Cursor, Claude Code, Antigravity, and dozens of other tools can pull context from your Ditto conversations.
Endpoint
https://api.heyditto.ai/mcp/sse
This is an SSE (Server-Sent Events) endpoint that implements the full MCP specification.
Authentication
Two methods are available:
OAuth (Recommended for Claude.ai)
- Go to Claude.ai → Settings → Connectors
- Click “Add custom connector”
- Enter URL:
https://api.heyditto.ai/mcp/sse - Click “Connect” and sign in with your Ditto account
- Approve the authorization
No API key needed. OAuth handles token rotation and scoping automatically.
API Key
For tools that don’t support OAuth (Cursor, Claude Code, Claude Desktop, Antigravity, etc.):
- Open heyditto.ai → Settings → MCP API Keys
- Click “Create Key” and give it a name
- Copy the key immediately — it won’t be shown again
Use the key in an Authorization: Bearer <key> header.
Setup by Platform
Claude Code
claude mcp add --transport sse ditto https://api.heyditto.ai/mcp/sse \
--header "Authorization: Bearer YOUR_API_KEY"
Cursor
Edit ~/.cursor/mcp.json:
{
"mcpServers": {
"ditto": {
"url": "https://api.heyditto.ai/mcp/sse",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}
Restart Cursor after saving.
Claude Desktop
Edit the config file:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"ditto": {
"url": "https://api.heyditto.ai/mcp/sse",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}
Restart Claude Desktop after saving.
Antigravity IDE
Edit ~/.gemini/antigravity/mcp_config.json (note serverUrl instead of url):
{
"mcpServers": {
"ditto": {
"serverUrl": "https://api.heyditto.ai/mcp/sse",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}
Other MCP Clients
Most MCP clients follow the same JSON pattern:
{
"mcpServers": {
"ditto": {
"url": "https://api.heyditto.ai/mcp/sse",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}
Check your tool’s MCP documentation for the config file location.
Available Tools
Ditto’s MCP server exposes six tools:
search_memories
Search your memories using semantic similarity with composite retrieval (similarity, recency, and frequency signals).
| Parameter | Type | Required | Description |
|---|---|---|---|
queries | string[] | Yes | Search queries (e.g., ["React migration", "performance"]) |
stripImages | boolean | No | Strip image data from results (default: true) |
alreadyFoundPairIDs | string[] | No | Exclude these memory IDs from results (deduplication) |
fetch_memories
Fetch the full content of specific memories by their IDs. Use this after search_memories to get complete conversation text.
| Parameter | Type | Required | Description |
|---|---|---|---|
pairIds | string[] | Yes | Memory pair IDs to fetch |
stripImages | boolean | No | Strip image data (default: true) |
search_subjects
Search your knowledge graph subjects by semantic similarity.
| Parameter | Type | Required | Description |
|---|---|---|---|
query | string | Yes | What to search for |
topK | integer | No | Max results (default: 10, max: 100) |
minSimilarity | float | No | Minimum similarity threshold (default: 0.1) |
search_memories_in_subjects
Get memory summaries linked to specific subjects in your knowledge graph.
| Parameter | Type | Required | Description |
|---|---|---|---|
subjectIds | string[] | Yes | Subject UUIDs to search within |
stripImages | boolean | No | Strip image data (default: true) |
get_memory_network
Get a memory and its network of related memories via shared subjects.
| Parameter | Type | Required | Description |
|---|---|---|---|
pairId | string | Yes | Memory pair ID to start from |
limit | integer | No | Max related memories (default: 20, max: 50) |
save_memory
Save an external memory to your knowledge graph. Useful for importing notes, documents, or context from other tools.
| Parameter | Type | Required | Description |
|---|---|---|---|
content | string | Yes | The memory content to save |
source | string | No | Source identifier (default: “mcp”) |
sourceContext | string | No | Additional context about the source |
Resources
Three read-only resources provide context about your account:
| URI | Description |
|---|---|
memory://profile | Your name, personality summary, and timezone |
memory://stats | Total memories, total subjects, and top subjects by frequency |
memory://capabilities | Available tools and limits |
API Key Best Practices
- Create separate keys per tool — easier to revoke if one is compromised
- Never commit keys to git — use environment variables or secrets managers
- Check “Last Used” timestamps — revoke unused keys in Settings → MCP API Keys
- Use OAuth when available — no credentials in config files, automatic token rotation
Troubleshooting
”Not Authenticated” Error
- Verify the key is correct with no extra spaces
- Check the header format:
Authorization: Bearer YOUR_API_KEY - Confirm the key hasn’t been revoked in Settings → MCP API Keys
- Restart the AI tool after adding configuration
Empty Search Results
- Make sure you have conversations in Ditto (the memories come from your chats)
- Try broader search terms
- Lower the
minSimilaritythreshold for wider results - Check that the AI tool is actually invoking the MCP tools
OAuth Flow Fails
- Log into Ditto first in your browser
- Check that pop-ups aren’t blocked
- Try in an incognito window
- Clear browser cache and retry