关于 dakera-mcp
dakera-mcp 为 MCP 兼容的 AI Agent 提供可查询的持久记忆,并通过分层工具发现控制会话中的工具架构开销。它以 Rust 二进制运行,可连接 Dakera 服务。
主要功能
- 01语义记忆存储与召回
- 02混合向量和 BM25 搜索
- 03会话与记忆管理
- 04按需发现和加载工具
- 05文档导入及附件处理
适用场景
- 01跨会话保存 Agent 上下文
- 02按语义或标签查找记忆
- 03从文档导入可检索内容
MCP 相关
作为 MCP 服务,向 AI Agent 暴露记忆管理、搜索和文档处理工具。工具可按配置档加载,也支持按需发现与加载。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
docker run -i --rm ghcr.io/dakera-ai/dakera-mcp:0.12.3本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
ghcr.io/dakera-ai/dakera-mcp:0.12.3stdio工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
原文在翻译后有更新,译文可能不是最新。
⚡ dakera-mcp
Dakera AI 的 MCP 服务,为任何兼容 MCP 的 AI Agent 提供持久、可查询的记忆,并内置智能令牌管理。
适用于 Claude、Claude Code 以及任何兼容 MCP 的框架。
属于 Dakera AI——面向 AI Agent 的记忆引擎。
Dakera 记忆引擎在 LoCoMo 上的 Recall@20 得分为 88.2%(评估了 1,536 个问题 · 由大模型判定的检索召回率)——基准测试详情
架构:14 个核心工具 + 按需发现
每次 Agent 会话都加载 60 多个工具架构,会在你发送第一条消息前浪费约 15K 个令牌。dakera-mcp 通过混合工具暴露机制解决了这个问题:
- 默认加载 14 个工具——使用频率最高的 12 个记忆操作 + 2 个元发现工具
- 按需扩展——使用
dakera_discover_tools和dakera_load_tools,仅在需要时获取其他工具架构
默认工具集(核心配置)
| 工具 | 用途 |
|---|---|
dakera_store | 存储记忆,并设置重要性、标签和类型 |
dakera_recall | 根据查询文本进行语义记忆召回 |
dakera_search | 使用标签/类型筛选器进行高级记忆搜索 |
dakera_session_start | 开始会话,以便对相关记忆进行分组 |
dakera_session_end | 结束会话,可选择附加摘要 |
dakera_batch_recall | 按标签、重要性和时间进行批量筛选召回 |
dakera_forget | 根据 ID 删除特定记忆 |
dakera_hybrid_search | 结合向量搜索和 BM25 搜索 |
dakera_fulltext_search | BM25 全文搜索 |
dakera_knowledge_graph | 根据种子记忆构建知识图谱 |
dakera_extract | 从自由文本中提取实体和结构 |
dakera_batch_forget | 按标签、类型或时间范围批量删除 |
dakera_discover_tools | 按关键词或层级搜索完整工具目录 |
dakera_load_tools | 按需加载指定工具的完整架构 |
配置与令牌开销
| 配置 | 工具数 | 约令牌数 | 启用方式 |
|---|---|---|---|
| core | 14 | ~3,400 | 默认——始终加载 |
| admin | 34 | ~6,750 | DAKERA_MCP_PROFILE=admin |
| power | 82 | ~17,250 | DAKERA_MCP_PROFILE=power |
| all | 102 | ~20,600 | DAKERA_MCP_PROFILE=all |
令牌数为估算值(JSON 字节数 / 3)。下方的附件工具计入 power 和 all,
但只有在连接的服务启用了该功能时才会显示(参见 Dakera v0.12)。
访问其他工具
# 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
配置选择
配置决定 tools/list 中显示哪些工具。可通过以下三种方式设置:
1. 按请求设置(在 tools/list 参数中):
{"profile": "power"}
2. 环境变量(适用于所有请求):
DAKERA_MCP_PROFILE=power
3. 默认值:core(14 个工具,约 3,400 个令牌)
Dakera v0.12
dakera-mcp 0.12.2 可用于 Dakera v0.11.108 和 v0.12.0 – v0.12.2 服务。所有工具的名称和参数保持不变;新增参数均为可选,仅在你提供时才会发送(或者会被较旧的服务忽略)。调用新路由的工具会明确说明:若服务不支持这些路由,则会告知这一点。
| Dakera 服务 | dakera-mcp 0.12.2 |
|---|---|
| v0.12.2 | 所有工具;启用 DAKERA_ATTACHMENTS(图像还需启用 DAKERA_VISION)时可用附件工具 |
| v0.12.0、v0.12.1 | 所有工具;dakera_session_touch 和 dakera_agent_create 会返回无需执行任何操作(这些版本的会话不会因不活跃而结束,且 Agent 会在写入第一条记忆时创建);dakera_whoami 会提示需要 v0.12.2;列表会返回完整内容(不提供预览),并包含派生的句子子记忆 |
| v0.11.108 | 与 v0.12.0 相同;不会列出附件工具、dakera_encryption_status 和 dakera_embed_migration_status(直接调用时会提示需要 v0.12);dakera_encryption_rotate_key 需要 new_key |
| 更早版本 | 未测试 |
Dakera v0.12.2 新增内容
| 工具 / 参数 | 层级 | 功能 |
|---|---|---|
dakera_session_start idle_timeout_secs | 核心 | 服务默认会在会话空闲 4 h 后结束会话;此参数用于设置会话自身的超时时间(0 = 永不超时,最长 30 天) |
dakera_session_touch | 高级 | POST /v1/sessions/{id}/touch:Agent 工作期间保持会话开启,不存储或回忆内容;返回 session_state(active 并附带 idle_deadline_at,或 ended) |
dakera_store | 核心 | 即使会话已结束,存储操作仍会成功;答案中的 session_state: "ended" 后会附带提示,告知 Agent 开始新会话 |
dakera_session_end | 核心 | 若服务已因不活跃而结束会话(此时不会保存传入的摘要),或者无法访问该会话,则会附带提示 |
dakera_session_list / _get / dakera_agent_sessions | 高级 | 会话包含 last_activity_at、ended_reason(client 或 idle)和 idle_since |
dakera_agent_create | 高级 | POST /v1/agents:在写入第一条记忆前创建 Agent(其记忆命名空间);若 Agent 已存在,则 created: false |
dakera_whoami | 高级 | GET /v1/auth/whoami:返回密钥的权限范围、命名空间(例如 _dakera_agent_mlx-* 这样的前缀模式)、过期时间和未生效条目;遇到 403 时应首先调用此工具 |
dakera_agent_memories / dakera_session_memories / dakera_knowledge_network_cross_agent content_preview_chars | 高级 | 内容默认截断为 500 个字符(content_len / content_truncated 用于标记;0 = 完整内容);dakera_memory_get 和回忆操作会返回完整记忆 |
dakera_agent_memories / dakera_wake_up include_derived | 高级 | 从 v0.12.2 起,列表默认不包含派生的句子子记忆;设为 true 也会列出这些记忆 |
新增内容
| 工具 | 层级 | 要求 | 功能 |
|---|---|---|---|
dakera_capabilities | power | v0.12 | GET /v1/capabilities:当前模型、搜索模式、评分策略、接受的 lang 值,以及已启用的选择加入功能。在 v0.11 服务上会返回 capabilities_available: false |
dakera_health | power | 任意版本 | GET /health:状态和版本;在 v0.12 上还会返回 degraded、config_warnings、embed_migration |
dakera_wake_up | power | 任意版本 | 一次调用即可获取 Agent 的启动上下文:按重要性 x 新近度排序的记忆,不需要查询或嵌入 |
dakera_embed_migration_status | admin | v0.12 | 升级后一次性后台重新嵌入任务的进度 |
dakera_encryption_status | admin | v0.12 | 加密密钥环和后台重新封装状态(绝不返回密钥材料) |
dakera_encryption_rotate_key | admin | v0.11+ | 加密已启用时,v0.12 上的 new_key 为可选项(服务会生成密钥;如果加密未启用,new_key 会启用加密);wait_secs(最多 20);namespace 可轮换单个命名空间的密钥 |
dakera_attachment_upload / _list / _download / _delete | power | v0.12 + DAKERA_ATTACHMENTS | 文件(或文本),记忆可通过 dakera_store 的 attachment_ref 引用 |
dakera_attachment_transcribe | power | v0.12 + DAKERA_ATTACHMENTS | 将 WAV 语音转为模型支持的任意语言的文本(lang 可指定一种语言)并存入记忆;这是后台任务,wait_seconds(最多 45)可用于等待任务完成 |
dakera_attachment_index_image | power | v0.12 + DAKERA_ATTACHMENTS + DAKERA_VISION | 将 PNG 页面作为视觉记忆(请使用专用于图像的 Agent:视觉通道会存储页面向量) |
dakera_attachment_job | power | v0.12 + DAKERA_ATTACHMENTS | 转写 / 索引任务的状态 |
每次请求可指定 lang(en、de、fr、es、it、pt、nl;v0.12);dakera_store、
dakera_recall、dakera_recall_associated、dakera_search、dakera_memory_update、dakera_extract、
dakera_auto_tag 和附件任务均接受此参数;
dakera_store 还接受 attachment_ref(当前 Agent 自有命名空间中的附件的 sha256:<hex>,
_dakera_agent_<agent_id>)。除非明确提供,否则这两个参数都不会发送,因此相同调用也能在 v0.11.108 服务上使用。
其他可选参数(适用于所有服务):dakera_store 的 ttl_seconds 和 metadata;dakera_recall 的 tags、
memory_type 和 session_id 筛选条件;dakera_batch_recall 的 limit;
dakera_session_list、dakera_session_memories 和 dakera_agent_sessions 的 limit / offset
(服务每页返回 50 条);记忆列表的 content_preview_chars,以及
dakera_agent_memories / dakera_wake_up 的 include_derived(v0.12.2,较旧的服务会忽略此参数);dakera_knowledge_deduplicate 的 memory_type;dakera_memory_policy_set 的 dedup_on_store /
dedup_threshold。
服务未启用的功能不会列出
选择加入的功能(附件、语音转文本、图像索引)默认在服务上关闭。
dakera-mcp 会先请求 GET /v1/capabilities(每分钟一次,超时 3 s),再列出工具:
attachments关闭,或服务不支持/v1/capabilities(v0.11):不会列出dakera_attachment_*工具,也不会通过dakera_discover_tools返回这些工具;直接调用时会告知需要设置的变量 (DAKERA_ATTACHMENTS=1),且不会发送请求。vision关闭:不会列出dakera_attachment_index_image(设置DAKERA_VISION=1可启用)。- 服务不支持
/v1/capabilities(v0.11)时,也会隐藏dakera_encryption_status和dakera_embed_migration_status,因为它们对应的路由是在 v0.12 中新增的。 - 无法访问服务(服务已关闭、正在启动或密钥被拒绝)时,不会隐藏任何工具(10 s 后再次请求)。
默认的 core 配置没有选择加入的工具,因此不会发出该请求。
错误
错误响应会保留服务端文本,并在 v0.12 的相关情况下添加一行 Hint::固定到命名空间的密钥在节点级 /admin 路由(备份、加密、配额、配置)上会收到 403;下载、上传和恢复备份需要 super_admin;413(请求体超出限制或触发硬配额)、501(功能已关闭)、503(带有 Retry-After,重试逻辑现在会遵循该值,最长 8 s)和 429(速率限制)。服务端不支持的路由(旧版服务端)以及没有 new_key 的 v0.11 密钥轮换,也会给出提示。从 Dakera v0.12.2 起,被拒绝的参数会返回 400,并在消息中指出字段(content: content exceeds maximum of 100000 bytes …、tags[1]: … reserved …);该消息会原样传递,提示会指出需要更正的字段(内容限制按 UTF-8 字节数计算)。403 提示会指向 dakera_whoami。请求超时时,仅在安全可重试的情况下才会重试(GET、PUT、DELETE):存储、导入或密钥轮换绝不会发送两次。
运行 Dakera
MCP 服务会连接到 Dakera 内存服务。请先运行一个实例:
docker run -d \
--name dakera \
-p 3000:3000 \
-e DAKERA_ROOT_API_KEY=dk-mykey \
ghcr.io/dakera-ai/dakera:latest
使用持久化存储(推荐):
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"}
完整部署指南(Docker Compose、Kubernetes、Helm):dakera-deploy
安装
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
下载二进制文件
可在发布页面获取 macOS、Linux 和 Windows 的预构建二进制文件。
| 平台 | 文件 |
|---|---|
| macOS(Apple Silicon) | dakera-mcp-aarch64-apple-darwin.tar.gz |
| macOS(Intel) | dakera-mcp-x86_64-apple-darwin.tar.gz |
| Linux x64 | dakera-mcp-x86_64-unknown-linux-musl.tar.gz |
| Linux arm64 | dakera-mcp-aarch64-unknown-linux-musl.tar.gz |
| Windows x64 | dakera-mcp-x86_64-pc-windows-msvc.zip |
连接
将以下内容添加到 .mcp.json(Claude Code)或 claude_desktop_config.json(Claude Desktop):
{
"mcpServers": {
"dakera": {
"command": "dakera-mcp",
"env": {
"DAKERA_API_URL": "http://localhost:3000",
"DAKERA_API_KEY": "your-key"
}
}
}
}
使用 power 配置启动(最多可提供 82 个工具):
{
"mcpServers": {
"dakera": {
"command": "dakera-mcp",
"env": {
"DAKERA_API_URL": "http://localhost:3000",
"DAKERA_API_KEY": "your-key",
"DAKERA_MCP_PROFILE": "power"
}
}
}
}
项目缘起
会话结束后,AI Agent 就会忘记一切。Dakera 可以解决这个问题。此 MCP 服务为 Agent 提供持久化记忆层,无需额外基础设施——连接到 Dakera 实例即可使用。
默认的 14 个工具可让上下文窗口保持精简。需要批量向量写入、知识图谱遍历或记忆联邦等高级操作时,可按需通过元工具扩展。
→ 托管实例请访问 dakera.ai
→ 使用 dakera-deploy 自托管
文档
相关项目
| 仓库 | 说明 |
|---|---|
| dakera-py | Python SDK |
| dakera-js | TypeScript SDK |
| dakera-cli | 命令行工具 |
| dakera-deploy | 自托管 Dakera |
属于 Dakera AI 开源核心生态系统。使用 Rust 构建。可自托管。零依赖。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。