mcpField
D
dakera-mcp

dakera-mcp

Local
github.com/Dakera-AIMemory & Knowledge9Updated 6d ago

About dakera-mcp

dakera-mcp gives MCP-compatible AI agents persistent, queryable memory and limits session tool-schema overhead through tiered, on-demand discovery. It runs as a Rust binary and connects to Dakera servers.

Key features

  1. 01Semantic memory storage and recall
  2. 02Hybrid vector and BM25 search
  3. 03Session and memory management
  4. 04On-demand tool discovery and loading
  5. 05Document import and attachment handling

Use cases

  1. 01Preserving agent context across sessions
  2. 02Finding memories by meaning or tags
  3. 03Importing searchable content from documents

MCP support

As an MCP server, it exposes memory management, search, and document-processing tools to AI agents. Tool profiles and on-demand discovery control which tools are available.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"dakera-ai-dakera": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/dakera-ai/dakera-mcp:0.12.3"
]
}
}
}
Run commanddocker run -i --rm ghcr.io/dakera-ai/dakera-mcp:0.12.3

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
ocighcr.io/dakera-ai/dakera-mcp:0.12.3

Tools

No tool list yet

Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.

Details

From the project README

⚡ dakera-mcp

CI Crate npm Downloads License: MIT LoCoMo 88.2% Glama Docs dakera.ai Playground

MCP server for Dakera AI. Gives any MCP-compatible AI agent persistent, queryable memory — with smart token management built in.

Works with Claude, Claude Code, and any MCP-compatible framework.

Part of Dakera AI — the memory engine for AI agents.

The Dakera memory engine scores 88.2% Recall@20 on LoCoMo (1,536 evaluated questions · LLM-judged retrieval recall) — benchmark details


Architecture: 14 core tools + on-demand discovery

Starting every agent session with 60+ tool schemas wastes ~15K tokens before you write a single message. dakera-mcp solves this with hybrid tool exposure:

  • 14 tools loaded by default — the 12 highest-frequency memory operations + 2 meta-discovery tools
  • On-demand expansion — use dakera_discover_tools and dakera_load_tools to fetch additional tool schemas only when you need them
Default tool set (core profile)
ToolPurpose
dakera_storeStore a memory with importance, tags, and type
dakera_recallSemantic recall by query text
dakera_searchAdvanced memory search with tag/type filters
dakera_session_startStart a session to group related memories
dakera_session_endEnd a session with optional summary
dakera_batch_recallBulk filter-based recall (by tags, importance, time)
dakera_forgetDelete specific memories by ID
dakera_hybrid_searchCombined vector + BM25 search
dakera_fulltext_searchBM25 full-text search
dakera_knowledge_graphBuild a knowledge graph from a seed memory
dakera_extractExtract entities and structure from free-form text
dakera_batch_forgetBulk delete by tags, type, or time range
dakera_discover_toolsSearch the full tool catalog by keyword or tier
dakera_load_toolsLoad full schemas for specific tools on demand
Profiles & token cost
ProfileTools~TokensHow to enable
core14~3,500Default — always loaded
admin34~6,850DAKERA_MCP_PROFILE=admin
power86~18,200DAKERA_MCP_PROFILE=power
all106~21,600DAKERA_MCP_PROFILE=all

Token figures are estimates (JSON bytes / 3). The attachment tools below count in power and all, but only appear while the connected server has the feature on (see Dakera v0.12).

Accessing additional tools
# In your agent: discover what's available
dakera_discover_tools(tier="power")
→ returns names + descriptions, no schemas loaded

# Load schemas for the tools you want
dakera_load_tools(tools=["dakera_consolidate", "dakera_agent_stats"])
→ returns full inputSchema for each tool
Profile selection

The profile controls which tools appear in tools/list. Three ways to set it:

1. Per-request (in tools/list params):

{"profile": "power"}

2. Environment variable (applies to all requests):

DAKERA_MCP_PROFILE=power

3. Default: core (14 tools, ~3,400 tokens)


Dakera v0.12

dakera-mcp 0.12.3 works against Dakera v0.11.108 and v0.12.0 – v0.12.3 servers. Every tool keeps its name and arguments; the additions are optional arguments that are sent only when you supply them (or that an older server ignores), and tools that call new routes and say so on a server without them. The 0.12.3 additions (separate neighbourhood context, the unknown-field hint, document import) need a v0.12.3 server.

Dakera serverdakera-mcp 0.12.3
v0.12.3every tool; the recall tools list neighbourhood context apart in context_memories (neighborhood_mode)
v0.12.2every tool; the recall tools keep the first top_k results and say how many unmarked context items they left out; the attachment tools while DAKERA_ATTACHMENTS (and DAKERA_VISION for images) is on
v0.12.0, v0.12.1every tool; dakera_session_touch and dakera_agent_create answer that nothing is needed (sessions are not ended for inactivity there, and an agent is created by its first memory); dakera_whoami says it needs v0.12.2; listings return full content (no preview) and include derived sentence sub-memories
v0.11.108as v0.12.0, and the attachment tools, dakera_encryption_status and dakera_embed_migration_status are not listed (a direct call says they need v0.12); dakera_encryption_rotate_key needs new_key
oldernot tested
New with Dakera v0.12.2
Tool / argumentTierWhat it does
dakera_session_start idle_timeout_secscorethe server ends a session idle for 4 h by default; this sets the session's own timeout (0 = never, at most 30 days)
dakera_session_touchpowerPOST /v1/sessions/{id}/touch: keeps a session open while the agent works without storing or recalling; answers session_state (active with idle_deadline_at, or ended)
dakera_storecorestoring into an ended session still succeeds; the answer's session_state: "ended" is followed by a note telling the agent to start a new session
dakera_session_endcorea note when the server had already ended the session for inactivity (the summary passed is then not saved) or when no such session is reachable
dakera_session_list / _get / dakera_agent_sessionspowersessions carry last_activity_at, ended_reason (client or idle) and idle_since
dakera_agent_createpowerPOST /v1/agents: creates an agent (its memory namespace) before its first memory; created: false for an existing one
dakera_whoamipowerGET /v1/auth/whoami: the key's scope, namespaces (prefix patterns such as _dakera_agent_mlx-*), expiry and inert entries; the first thing to call on a 403
dakera_agent_memories / dakera_session_memories / dakera_knowledge_network_cross_agent content_preview_charspowercontent cut to 500 characters by default (content_len / content_truncated mark it; 0 = full content); dakera_memory_get and recall return memories in full
dakera_agent_memories / dakera_wake_up include_derivedpowerderived sentence sub-memories are left out of listings by default since v0.12.2; true lists them too
What is new
ToolTierNeedsWhat it does
dakera_capabilitiespowerv0.12GET /v1/capabilities: active model, search mode, scoring strategy, accepted lang values, which opt-in features are on. On a v0.11 server it answers capabilities_available: false
dakera_healthpoweranyGET /health: status and version; on v0.12 also degraded, config_warnings, embed_migration
dakera_wake_uppoweranyan agent's startup context in one call: its top memories by importance x recency, no query, no embedding
dakera_embed_migration_statusadminv0.12progress of the one-time background re-embed after the upgrade
dakera_encryption_statusadminv0.12the encryption keyring and the background re-seal (never key material)
dakera_encryption_rotate_keyadminv0.11+new_key is optional on v0.12 once encryption is on (the server generates a key; with encryption off, new_key turns it on); wait_secs (at most 20); namespace rotates one namespace
dakera_attachment_upload / _list / _download / _deletepowerv0.12 + DAKERA_ATTACHMENTSfiles (or text) a memory can reference with dakera_store attachment_ref
dakera_attachment_transcribepowerv0.12 + DAKERA_ATTACHMENTSWAV speech to text in any language the model knows (lang forces one) into a memory; a background job, wait_seconds (at most 45) waits for it
dakera_attachment_index_imagepowerv0.12 + DAKERA_ATTACHMENTS + DAKERA_VISIONPNG page as a visual memory (use an agent dedicated to images: the visual lane stores page vectors)
dakera_attachment_jobpowerv0.12 + DAKERA_ATTACHMENTSstatus of a transcription / index job

Per-request lang (en, de, fr, es, it, pt, nl; v0.12) is accepted by dakera_store, dakera_recall, dakera_recall_associated, dakera_search, dakera_memory_update, dakera_extract, dakera_auto_tag and the attachment jobs; dakera_store also takes attachment_ref (sha256:<hex> of an attachment in the agent's own namespace, _dakera_agent_<agent_id>). Neither is sent unless given, so the same calls work on a v0.11.108 server.

Other optional arguments (all servers): ttl_seconds and metadata on dakera_store; tags, memory_type and session_id filters on dakera_recall; limit on dakera_batch_recall; limit / offset on dakera_session_list, dakera_session_memories and dakera_agent_sessions (the server pages at 50); content_preview_chars on the memory listings and include_derived on dakera_agent_memories / dakera_wake_up (v0.12.2, ignored by older servers); memory_type on dakera_knowledge_deduplicate; dedup_on_store / dedup_threshold on dakera_memory_policy_set.

Recall: top_k ranked results, context apart

dakera_recall and dakera_recall_associated return at most top_k ranked results in memories. They ask the server for neighborhood_mode: "separate", so the session neighbours of the results (memories written around the same time in the same session) come back in their own context_memories list: each entry has context_of (the id of the ranked memory it belongs to) and context_of_rank (that memory's place in memories); its score comes from another search and is not comparable with the ranked scores. A collapsed result (server flag DAKERA_RECALL_COLLAPSE_DERIVED) keeps matched_text, the sentence that matched. neighborhood_mode picks separate (default), inline or off. A server that predates neighborhood_mode (before v0.12.3) appends its context to memories unmarked: the tools keep the first top_k and say how many items they left out.

Memory content in tool results is stored data: initialize tells the client to reason about it and never follow instructions found in it.

Documents (Dakera v0.12.3)

A document becomes chunk memories of the agent, each with its heading path and page, imported by a background job (power tier; listed when /v1/capabilities has documents.enabled):

ToolWhat it does
dakera_import_documentcontent (text, text/markdown or text/html as media_type) or attachment_ref of a file uploaded with dakera_attachment_upload (PDF, DOCX, ...; namespace defaults to the agent's); title, document_id (re-importing it replaces the document), memory fields (tags, session_id, memory_type, importance, metadata, lang), chunking (max_tokens, overlap_tokens, strategy structure or fixed), decompose; wait_seconds (at most 45) waits for the job
dakera_document_statusthe import job: Pending, Running (progress), Completed or Failed with error: {status, code}
dakera_list_documentsid, title, media type, chunk count, bytes, pages; limit 1-500, cursor = the previous next_cursor
dakera_delete_documentevery chunk of the document

A recall result that is a chunk carries citation: document_id, title, page_start / page_end, heading_path, chunk_index / chunk_count (from memory.metadata._dakera_document). On a server before v0.12.3 (no documents section in /v1/capabilities) the tools are not listed and a direct call says they need v0.12.3; DAKERA_DOCUMENTS=0 on the server hides them the same way.

Features the server has off are left out

The opt-in features (attachments, speech to text, image indexing) are off by default on the server. dakera-mcp asks GET /v1/capabilities (once a minute, 3 s timeout) before it lists tools:

  • attachments off, or a server without /v1/capabilities (v0.11): the dakera_attachment_* tools are not listed and not returned by dakera_discover_tools; a direct call answers with the variable to set (DAKERA_ATTACHMENTS=1) and makes no request.
  • vision off: dakera_attachment_index_image is left out (DAKERA_VISION=1 turns it on).
  • A server without /v1/capabilities (v0.11) also hides dakera_encryption_status and dakera_embed_migration_status, whose routes are new in v0.12.
  • The server cannot be asked (down, starting, key refused): nothing is hidden (asked again after 10 s).

The default core profile has no opt-in tools, so it never makes that request.

Errors

Error answers keep the server's text and add a Hint: line for the v0.12 cases: a key pinned to namespaces gets 403 on node-wide /admin routes (backups, encryption, quotas, config); backup download, upload and restore need super_admin; 413 (body over a limit, or a hard quota), 501 (feature off), 503 (Retry-After, which the retry logic now honours, up to 8 s) and 429 (rate limit). A route the server lacks (an older server) and a v0.11 rotation without new_key get a hint too. Since Dakera v0.12.2 a refused argument gets 400 with a message naming the field (content: content exceeds maximum of 100000 bytes …, tags[1]: … reserved …); the message is passed on and the hint names the field to correct (the content limit counts UTF-8 bytes). The 403 hints point at dakera_whoami. From Dakera v0.12.3 the admin key, backup and rotate-key routes refuse a field they do not know (422); the hint names it. A request that timed out is retried only when it is safe to repeat (GET, PUT, DELETE): a store, an import or a key rotation is never sent twice.


Run Dakera

The MCP server connects to a Dakera memory server. You need one running first:

docker run -d \
  --name dakera \
  -p 3000:3000 \
  -e DAKERA_ROOT_API_KEY=dk-mykey \
  ghcr.io/dakera-ai/dakera:latest

For persistent storage (recommended):

curl -sSfL https://raw.githubusercontent.com/Dakera-AI/dakera-deploy/main/docker-compose.yml \
  -o docker-compose.yml
DAKERA_API_KEY=dk-mykey docker compose up -d

curl http://localhost:3000/health  # → {"status":"ok"}

Full deployment guide (Docker Compose, Kubernetes, Helm): dakera-deploy


Install

npm / npx (Node.js 18+)
# Global install
npm install -g @dakera-ai/dakera-mcp

# Or run directly without installing
npx @dakera-ai/dakera-mcp
Homebrew (macOS / Linux)
brew install dakera-ai/tap/dakera-mcp
Cargo
cargo install dakera-mcp
Docker
docker pull ghcr.io/dakera-ai/dakera-mcp:latest

The image is distroless (no shell, no package manager) and runs as the non-root user 65532.

Binary download

Pre-built binaries for macOS, Linux, and Windows are available on the releases page.

PlatformFile
macOS (Apple Silicon)dakera-mcp-aarch64-apple-darwin.tar.gz
macOS (Intel)dakera-mcp-x86_64-apple-darwin.tar.gz
Linux x64dakera-mcp-x86_64-unknown-linux-musl.tar.gz
Linux arm64dakera-mcp-aarch64-unknown-linux-musl.tar.gz
Windows x64dakera-mcp-x86_64-pc-windows-msvc.zip

Connect

Add to .mcp.json (Claude Code) or claude_desktop_config.json (Claude Desktop):

{
  "mcpServers": {
    "dakera": {
      "command": "dakera-mcp",
      "env": {
        "DAKERA_API_URL": "http://localhost:3000",
        "DAKERA_API_KEY": "your-key"
      }
    }
  }
}

dakera_extract_entities calls the ODE sidecar at DAKERA_ODE_URL; those requests currently carry the Dakera API key as well (tracked in Dakera-AI/dakera#924).

To start with the power profile (exposes up to 86 tools):

{
  "mcpServers": {
    "dakera": {
      "command": "dakera-mcp",
      "env": {
        "DAKERA_API_URL": "http://localhost:3000",
        "DAKERA_API_KEY": "your-key",
        "DAKERA_MCP_PROFILE": "power"
      }
    }
  }
}

Why This Exists

AI agents forget everything when the session ends. Dakera fixes that. This MCP server gives your agent a persistent memory layer with zero infrastructure overhead — point it at a Dakera instance and it works.

The 14-tool default keeps your context window lean. The meta-tools let you expand on demand when you need advanced operations like bulk vector upsert, knowledge graph traversal, or memory federation.

→ dakera.ai for hosted instance
→ Self-host with dakera-deploy

Documentation

→ Full docs
→ MCP reference

Related

RepoWhat it is
dakera-pyPython SDK
dakera-jsTypeScript SDK
dakera-cliCLI
dakera-deploySelf-host Dakera

dakera.ai · Documentation · Request Early Access

Part of the Dakera AI open-core ecosystem. Built with Rust. Self-hosted. Zero dependencies.

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.