MCP Server
Dakera ships as a native MCP (Model Context Protocol) server, giving any AI assistant persistent memory, semantic search, and knowledge graphs through 14 core tools loaded by default. 86 additional tools are available via profiles when you need them — keeping your agent's context window lean (~2,964 tokens instead of ~16K).
Quick start
Get from zero to working memory in under 5 minutes.
1. Set your environment
Two environment variables connect dakera-mcp to your Dakera server:
| Variable | What it is | Example |
|---|---|---|
| DAKERA_API_URL | Address of your running Dakera server | http://localhost:3300 or http://<SERVER_IP>:3300 |
| DAKERA_API_KEY | Root API key you set when starting the server | dk_abc123... |
docker run -p 3300:3300 ... on a remote host, use http://<SERVER_IP>:3300. For a local dev machine, use http://localhost:3300. For Kubernetes with an ingress, use your ingress hostname.export DAKERA_API_URL=http://<YOUR_SERVER_IP>:3300
export DAKERA_API_KEY=<your-api-key>
2. Install dakera-mcp
npm install -g @dakera-ai/dakera-mcp
# or run without installing:
npx @dakera-ai/dakera-mcpbrew install dakera-ai/tap/dakera-mcpcargo install dakera-mcp # Rust 1.70+
dakera-mcp --version
Don't have Rust? curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
docker run --rm -i \
-e DAKERA_API_URL=$DAKERA_API_URL \
-e DAKERA_API_KEY=$DAKERA_API_KEY \
ghcr.io/dakera-ai/dakera-mcp:latest3. Verify connectivity
dakera-mcp --test-connection
# Connected to Dakera v0.11.83 — 14 core tools loaded (86 available)
4. Connect your AI client
Add Dakera to your client's MCP config. Replace placeholders with your actual values:
// Claude Desktop: ~/Library/Application Support/Claude/claude_desktop_config.json
// Claude Code: .mcp.json (project) or ~/.claude/settings.json (global)
// Cursor: ~/.cursor/mcp.json
// Windsurf: ~/.codeium/windsurf/mcp_config.json
{
"mcpServers": {
"dakera": {
"command": "dakera-mcp",
"env": {
"DAKERA_API_URL": "http://<YOUR_SERVER_IP>:3300",
"DAKERA_API_KEY": "<your-api-key>"
}
}
}
}
Restart your client after editing. For Zed, use context_servers with a command.path key instead of mcpServers.
5. Test it
Ask your AI assistant: "Store a memory that I prefer dark mode" — it should call dakera_store and confirm the memory was saved.
Profiles & tool selection
Dakera organizes its 86 tools into four profiles so you only pay the token cost for what you use. The default core profile covers everything most agents need.
Which profile do I need?
| Your use case | Profile | Why |
|---|---|---|
| Day-to-day agent memory (store, recall, search) | core (default) | 14 tools, ~2,964 tokens — lean and fast |
| Knowledge graphs + entity extraction | power | Adds graph traversal, NER, agent stats (68 tools, ~13,014 tokens) |
| Multi-tenant deployment with namespace isolation | admin | Core + namespace & policy management (32 tools, ~5,975 tokens) |
| Custom embeddings + full API surface | all | Complete 86-tool surface including vectors, bulk ops (~16,026 tokens) |
| Start small, add tools as needed | core + meta-tools | Use discover_tools + load_tools to pull in extras on demand |
Setting your profile
# Option 1: Environment variable (recommended)
DAKERA_MCP_PROFILE=power # Options: core, power, admin, all
# Option 2: Per-request parameter (in tools/list params)
{"profile": "power"}
# Option 3: Default — core (14 tools, ~2,964 tokens)
Profile overview
On-demand tool discovery
Instead of switching profiles, you can discover and load individual tools at runtime using the two meta-tools (always available in every profile):
# Step 1: Browse available tools by keyword or tier
dakera_discover_tools(tier="power")
# → returns tool names + descriptions (no schemas loaded, no token cost)
# Step 2: Load schemas for the tools you need
dakera_load_tools(tools=["dakera_consolidate", "dakera_agent_stats"])
# → returns full inputSchema for each tool — now callable in this session
# Step 3: Use the tool normally
dakera_consolidate(agent_id="my-agent", memory_ids=["mem_1", "mem_2"])
core. Use discover_tools + load_tools to pull in extras as needed. Only switch to power or all if your agent regularly uses 10+ non-core tools.Core tools by workflow
The 14 core tools organized by what you're trying to do, not by implementation category.
Memory: store, find, and manage
The fundamental memory CRUD operations — store information, find it later, and clean up what you don't need.
dakera_store Core
Store a memory for an agent.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| agent_id | string | Yes | — | Agent identifier storing this memory |
| content | string | Yes | — | Memory text to store |
| importance | number | No | 0.5 | Score 0.0–1.0 for recall ranking and decay |
| tags | string[] | No | [] | Metadata tags for filtering |
| memory_type | string | No | episodic | One of: episodic, semantic, procedural, working |
| session_id | string | No | — | Associate this memory with an active session |
| expires_at | integer | No | — | Unix timestamp for hard-delete expiry |
dakera_recall Core
Semantic recall — returns the most relevant memories for a natural language query.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| agent_id | string | Yes | — | Agent to recall memories from |
| query | string | Yes | — | Natural language query text |
| top_k | integer | No | 5 | Number of results to return |
| min_importance | number | No | 0 | Minimum importance threshold |
| include_associated | boolean | No | false | Include knowledge-graph linked memories |
| since | string | No | — | ISO-8601 timestamp — only memories created after |
| until | string | No | — | ISO-8601 timestamp — only memories created before |
dakera_search Core
Advanced memory search with tag, type, and importance filters.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| agent_id | string | Yes | — | Agent to search |
| query | string | Yes | — | Search query text |
| top_k | integer | No | 10 | Number of results |
| tags | string[] | No | — | Filter by tags (all must match) |
| memory_type | string | No | — | Filter by memory type |
dakera_batch_recall Core
Filter-based bulk recall without semantic search. Efficient for retrieving memories by tags, importance, or time range.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| agent_id | string | Yes | — | Agent to query |
| tags | string[] | No | — | All-match tag filter |
| min_importance | number | No | — | Minimum importance (inclusive) |
| max_importance | number | No | — | Maximum importance (inclusive) |
| created_after | integer | No | — | Unix timestamp lower bound |
| created_before | integer | No | — | Unix timestamp upper bound |
| memory_type | string | No | — | Filter by type |
dakera_forget Core
Delete specific memories by ID or tag filter.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| agent_id | string | Yes | — | Agent whose memories to delete |
| memory_ids | string[] | No | — | Specific memory IDs to delete |
| tags | string[] | No | — | Delete all memories matching these tags |
dakera_batch_forget Core
Bulk delete all memories matching filter predicates.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| agent_id | string | Yes | — | Agent whose memories to delete |
| tags | string[] | No | — | Tag filter |
| min_importance | number | No | — | Minimum importance threshold |
| memory_type | string | No | — | Filter by type |
Search: hybrid and full-text
Beyond semantic recall, Dakera offers BM25 keyword search and hybrid search that combines both approaches.
dakera_hybrid_search Core
Combined vector similarity + BM25 full-text search. Omit vector for BM25-only mode.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| namespace | string | Yes | — | Namespace to search in |
| text | string | Yes | — | Text query for full-text search |
| vector | number[] | No | — | Query vector (omit for BM25-only) |
| top_k | integer | No | 10 | Number of results |
| vector_weight | number | No | 0.5 | Weight for vector score (0.0–1.0) |
dakera_fulltext_search Core
BM25 keyword search across indexed documents.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| namespace | string | Yes | — | Namespace to search |
| query | string | Yes | — | BM25 keyword query |
| top_k | integer | No | 10 | Number of results |
| filter | object | No | — | Metadata filter |
Sessions: group related memories
Sessions let you group memories from a single conversation or task, making it easy to recall context from a specific interaction.
dakera_session_start Core
Start a new session. Memories stored with the returned session_id are grouped together.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| agent_id | string | Yes | — | Agent starting the session |
| metadata | object | No | — | Arbitrary metadata (e.g. task type, user context) |
dakera_session_end Core
End an active session with an optional summary.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| session_id | string | Yes | — | Session to end |
| summary | string | No | — | Summary of what happened in this session |
Knowledge graphs
Build, traverse, and query relationship graphs between memories. Build graphs from embedding similarity, then traverse or export them.
dakera_knowledge_graph Core
Build a knowledge graph from a seed memory via embedding similarity.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| agent_id | string | Yes | — | Agent whose memories to graph |
| memory_id | string | Yes | — | Seed memory to start from |
| depth | integer | No | 2 | How many hops from the seed |
| min_similarity | number | No | 0.7 | Minimum similarity to create an edge |
dakera_extract Core
Extract structured info (entities, topics, key phrases, summary) from text.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| text | string | Yes | — | Text to extract from |
| namespace | string | No | — | Namespace context |
| entity_types | string[] | No | — | Entity types to extract |
| extractor_override | string | No | — | Override the extraction provider |
Meta-tools: discover and load
Always available in every profile. Use these to explore and dynamically load tools from higher tiers.
dakera_discover_tools Always
Browse the full tool catalog by keyword or tier. Returns names and descriptions without loading schemas.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| tier | string | No | — | Filter by tier: core, power, admin, all |
| query | string | No | — | Keyword search across tool names/descriptions |
dakera_load_tools Always
Load full schemas for specific tools, making them callable in this session.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| tools | string[] | Yes | — | Tool names to load (e.g. ["dakera_consolidate"]) |
Full tool reference by tier
All 86+ tools organized by tier and workflow. Core tools are documented in detail above — this section provides a quick reference for all tiers.
Power tier (68 tools)
Everything in core, plus:
| Tool | Description | Key parameters |
|---|---|---|
recall_associated | Recall with deep knowledge-graph context (1–3 hops) | agent_id, query, associated_memories_depth |
memory_get | Get a specific memory by ID | agent_id, memory_id |
memory_update | Update content, importance, or tags (re-embeds if content changes) | agent_id, memory_id, content, importance, tags |
memory_importance | Batch-update importance scores | agent_id, updates (array of {memory_id, importance}) |
consolidate | Merge related memories into a synthesized summary | agent_id, memory_ids |
memory_feedback | Submit feedback signal (upvote/downvote/flag) | memory_id, signal |
memory_feedback_get | Retrieve feedback history for a memory | memory_id |
agent_feedback_summary | Aggregated feedback stats for an agent | agent_id |
session_list | List sessions for an agent | agent_id, active_only |
session_get | Get session details | session_id |
session_memories | List all memories in a session | session_id |
agent_stats | Memory count, session count, storage usage, top tags | agent_id |
agent_memories | List all memories for an agent | agent_id, limit, offset |
agent_sessions | List all sessions for an agent | agent_id |
knowledge_summarize | Summarize a set of memories into one | agent_id, memory_ids, target_type |
knowledge_deduplicate | Find and optionally merge duplicates | agent_id, threshold, dry_run |
knowledge_network_cross_agent | Cross-agent memory network | agent_ids, min_similarity |
graph_traverse | BFS traversal from a starting memory | memory_id, depth |
graph_path | Shortest path between two memories | from_id, to_id |
graph_link_memory | Create an explicit edge between two memories | memory_id, target_id |
graph_export | Export full knowledge graph as edge list | agent_id |
kg_traverse | Filtered traversal with edge-type and weight filters | agent_id, root_id, max_depth, edge_type |
kg_query | Query the graph using a filter DSL | agent_id, edge_type, min_weight, limit |
kg_export | Export knowledge graph as JSON or GraphML | agent_id, format |
auto_tag | Extract entities using GLiNER zero-shot NER | content, entity_types |
extract_entities | Named entity extraction via GLiNER pipeline | content, agent_id, entity_types |
memory_entities | Get entities extracted when a memory was stored | memory_id |
entity_types_get | Get entity extraction config for a namespace | namespace |
entity_types_set | Configure entity extraction for a namespace | namespace, extract_entities, entity_types |
extractor_get | Read default extraction provider | namespace |
extractor_set | Set extraction provider (OpenAI, Anthropic, Ollama, ONNX) | namespace, provider, model |
decay_config_get | Get current decay settings | (none) |
decay_config_set | Update decay settings at runtime | strategy, half_life_hours, min_importance |
decay_stats | Cumulative decay statistics | (none) |
autopilot_status | AutoPilot config and last-run stats | (none) |
autopilot_trigger | Force an immediate AutoPilot cycle | action (dedup | consolidate | all) |
fulltext_index | Index documents for BM25 search | namespace, documents |
fulltext_delete | Remove documents from index | namespace, ids |
fulltext_stats | Index statistics | namespace |
upsert_text | Upsert text with automatic server-side embedding | namespace, documents |
text_query | Natural language query with server-side embedding | namespace, text, top_k |
batch_query_text | Batch text queries | namespace, queries |
Admin tier (32 tools)
Everything in core, plus namespace and policy management:
| Tool | Description | Key parameters |
|---|---|---|
namespace_list | List all namespaces | (none) |
namespace_get | Get namespace details (vector count, dimensions, index stats) | namespace |
namespace_create | Create a namespace with dimensions and distance metric | name, dimension, distance |
namespace_delete | Delete a namespace and all its vectors (irreversible) | namespace |
namespace_configure | Create-or-update namespace configuration | namespace, dimension, distance |
namespace_key_create | Create a namespace-scoped API key | namespace, name, scope, expires_in_days |
namespace_key_list | List all API keys for a namespace | namespace |
namespace_key_delete | Revoke a namespace-scoped API key | namespace, key_id |
namespace_key_usage | Get usage statistics for a namespace key | namespace, key_id |
memory_policy_get | Get lifecycle policy — TTLs, decay curves, consolidation, rate limits | namespace |
memory_policy_set | Update lifecycle policy per namespace | namespace, per-type TTLs, consolidation_enabled, rate_limit_enabled |
audit_query | Query business-event audit log | agent_id, event_type, from, to, limit |
memory_export | Export all memories (JSONL, CSV, Mem0, Zep formats) | agent_id, format |
memory_import | Import memories from JSONL, CSV, Mem0, or Zep | agent_id, data, format |
encryption_rotate_key | Zero-downtime AES-256-GCM key rotation | new_key, namespace |
All tier (86+ tools)
Everything above, plus low-level vector operations for custom embedding workflows:
| Tool | Description | Key parameters |
|---|---|---|
vector_upsert | Insert or update vectors with metadata | namespace, vectors |
vector_upsert_columns | Column-format upsert for batch efficiency | namespace, ids, vectors |
vector_query | Nearest-neighbor similarity search | namespace, vector, top_k, filter |
vector_batch_query | Multiple similarity searches in parallel | namespace, queries |
vector_multi_search | Multi-vector search with MMR diversity | namespace, positive_vectors, negative_vectors |
vector_unified_query | Flexible ranking — vector, full-text, or attribute | namespace, rank_by, top_k |
vector_delete | Delete vectors by ID | namespace, ids |
vector_bulk_update | Update metadata on filtered vectors | namespace, filter, update |
vector_bulk_delete | Delete all vectors matching a filter | namespace, filter |
vector_count | Count vectors, optionally filtered | namespace, filter |
vector_export | Export vectors with pagination | namespace, top_k, cursor |
vector_aggregate | Compute aggregations (Count, Sum, Avg, Min, Max) | namespace, aggregate_by, group_by |
vector_explain | Explain query execution plan | namespace, query_type |
vector_warm | Pre-load vectors into memory | namespace, vector_ids |