使用说明
mcp脑工具
MCP服务器为AI代理提供持久内存,内置新鲜度跟踪和间隔重复。由Elasticsearch支持。
与简单的键值记忆存储不同,mcp大脑工具跟踪每条知识的年龄,标记需要审查的内容,并让代理验证信息以保持新鲜——灵感来自间隔重复如何帮助人类记忆知识。
特性
- 间隔重复新鲜度 --每个实体的审查间隔在验证时加倍(上限为365天)。信任标签(新鲜/正常/老化/陈旧/存档)告诉代理要信任什么。
- 渐进式搜索 --查询首先返回新的结果,仅在需要时自动扩展以包含旧数据。
- 作为实体的观察 --每个观察都有自己的新鲜度生命周期,因此“构建被打破”(1天回顾)和“成立于2015年”(365天回顾)的年龄是独立的。
- 内存区域 --按项目、团队或领域隔离知识。
- AI驱动的过滤 --可选的Groq集成按相关性对搜索结果进行评分。
- 按设计干燥 --工具描述指导代理不要存储代码、git或文档中已有的内容。
设置
先决条件
- Node.js>=18
- Docker(用于Elasticsearch)或远程Elasticsearchs实例
安装和构建
npm install
npm run build
启动Elasticsearch
npm run es:start
或者通过以下方式指向您自己的实例 ES_NODE 环境变量。
配置您的MCP客户端
添加到您的Claude代码、Claude桌面或其他MCP客户端配置中:
{
"mcpServers": {
"memory": {
"command": "node",
"args": ["/path/to/mcp-brain-tools/dist/index.js"],
"env": {
"ES_NODE": "http://localhost:9200",
"GROQ_API_KEY": "your-key-here"
}
}
}
}
GROQ_API_KEY 是可选的——启用基于人工智能的搜索过滤和区域相关性评分。
安装自动记忆挂钩(仅限克劳德代码)
内存挂钩在每条用户消息上运行,并自动注入相关上下文——不需要代理协作。
添加 ~/.claude/settings.json:
{
"hooks": {
"UserPromptSubmit": [
{
"hooks": [
{
"type": "command",
"command": "node /path/to/mcp-brain-tools/dist/memory-hook.js"
}
]
}
]
}
}
钩子使用相同的 ES_NODE, AI_API_KEY/GROQ_API_KEY, AI_API_BASE,以及 AI_MODEL env变量(在 env 阻止您的设置,或将其导出到您的shell配置文件中)。
AI_API_BASE 默认为Groq的端点,但接受任何与OpenAI兼容的API URL。
运作原理
实体和意见
实体代表任何值得记住的东西——人、项目、决定、事实。每个实体都有:
- A. 名字 和 类型
- 间隔重复字段:
verifiedAt,reviewInterval,nextReviewAt - A. 信任标签 根据新鲜度计算:
1 - (daysSinceVerified / reviewInterval)
观察结果存储为单独的实体,通过以下方式链接 is_observation_of 关系。每个观察都有自己的审查节奏:
Entity: "iaptic-server" (type: Project, reviewInterval: 30 days)
<- "iaptic-server: uses TypeScript" (reviewInterval: 180 days)
<- "iaptic-server: migration in progress" (reviewInterval: 7 days)
新鲜度生命周期
- 实体已创建 —
confidence: "fresh",默认审核时间为7天 - 审核日期已过 —
confidence: "aging",needsReview: true - 代理验证 (通过
verify_entity)--间隔加倍,置信度重置为新鲜 - 珊珊来迟 —
confidence: "stale"然后"archival",从默认搜索中排除
渐进式搜索
搜索时,服务器使用三个通道:
freshness >= 0--新鲜和正常的实体freshness >= -2--增加老化和陈腐- 无筛选器--添加存档
这使结果保持干净,同时确保不会永久丢失任何东西。
MCP工具
| 工具 | 说明 |
|---|---|
create_entities |
创建具有可选观察值和reviewInterval的实体 |
update_entities |
更新现有实体 |
delete_entities |
删除实体(可选级联) |
add_observations |
将观察结果添加为具有自身新鲜度的独立实体 |
verify_entity |
确认实体仍然准确,延长审核间隔 |
search_nodes |
使用渐进式新鲜度过滤进行搜索 |
open_nodes |
使用新鲜度元数据按名称获取特定实体 |
get_recent |
获取最近访问的实体 |
create_relations |
在实体之间创建关系 |
delete_relations |
删除关系 |
inspect_knowledge_graph |
基于人工智能的实体检索,带有初步答案 |
inspect_files |
基于AI的文件内容检测 |
list_zones |
列出记忆区域(带有AI相关性评分) |
create_zone / delete_zone |
管理内存区域 |
copy_entities / move_entities |
在区域之间转移实体 |
merge_zones |
合并区域以解决冲突 |
zone_stats |
获取区域的实体/关系计数 |
mark_important |
提高实体相关性得分 |
get_time_utc |
获取当前UTC时间 |
环境变量
| 变量 | 默认值 | 描述 |
|---|---|---|
ES_NODE |
http://localhost:9200 |
Elasticsearch URL |
ES_USERNAME |
-- | Elasticsearch用户名 |
ES_PASSWORD |
-- | Elasticsearch密码 |
GROQ_API_KEY |
- | 人工智能过滤的Groq API密钥 |
GROQ_MODELS |
openai/gpt-oss-120b,llama-3.3-70b-versatile |
逗号分隔的模型列表 |
KG_INDEX_PREFIX |
knowledge-graph |
Elasticsearch索引前缀 |
KG_DEFAULT_ZONE |
default |
默认存储区 |
DEBUG |
false |
启用调试日志记录 |
推荐的代理说明
为了使代理能够主动使用内存服务器,请在您的 CLAUDE.md (或等效的说明文件):
## Memory
Use MCP Memory (`mcp__memory__*` tools) — a shared knowledge graph across all agents, projects, and computers.
**When to SAVE (immediately, before moving on):**
- Something you tried didn't work (non-transient) → save what failed and why, so no agent repeats it
- A decision was made (architectural, design, workflow) → save the decision and the reason
- The user corrects you or gives explicit instructions → save the rule
- You learn something non-obvious that took effort to discover → save it
**When to SEARCH (before starting, not after failing):**
- **At the start of every non-trivial task** — search before thinking, not after hitting a wall
- About to try an approach that might have been attempted before → search first
- User references something from a past session → search before asking
**Rules:**
- Skip anything easy to find in code, git log, or docs
- Use the project name as the zone for project-specific knowledge; `default` for general knowledge
- Keep entries short — the AI filters server-side, so be generous rather than selective
- Short `reviewInterval` (e.g. 3–7 days) for volatile facts; longer (30–180) for stable ones
关键的见解是:代理需要明确的基于触发器的指令(“何时执行X,执行Y”),而不仅仅是对工具功能的描述。
发展
npm run build # Compile TypeScript
npm run dev # Watch mode
npm run test:jest # Run Jest tests
npm run es:start # Start Elasticsearch
npm run es:stop # Stop Elasticsearch
npm run es:reset # Wipe data and restart
npm run import # Import from JSON
npm run export # Export to JSON
许可证
麻省理工学院
