使用说明
Brain MCP-内存存储MCP服务器
一种使用DuckDB提供智能对话内存存储的模型上下文协议(MCP)服务器。此服务器存储和检索您上次对话的上下文,支持多个存储后端,包括本地文件、S3和Google Cloud storage。
特性
- 🧠 智能内存存储:自动维护最近2个对话的上下文
- 💾 DuckDB后端:使用DuckDB实现高效的数据湖存储
- ☁️ 多后端支持:在本地或云中存储数据(S3、GCS)
- 🔄 会话管理:跟踪和检索多个对话
- 🔍 强大的搜索功能:按文本、主题或日期范围搜索记忆
- 🌙 自动内存整合:夜班工人使用LLM将短期记忆巩固为长期见解
- 🤖 OpenAI兼容:与OpenAI API和兼容服务(LocalAI、Ollama等)配合使用
- 🚀 易于集成:无缝集成的标准MCP协议
安装
npm install
npm run build
配置
服务器通过以下方式支持不同的存储后端 STORAGE_URL 环境变量:
基于文件的存储(默认)
export STORAGE_URL="file://brain-memory.duckdb"
S3存储
export STORAGE_URL="s3://my-bucket/brain-memory"
export AWS_ACCESS_KEY_ID="your-access-key"
export AWS_SECRET_ACCESS_KEY="your-secret-key"
export AWS_REGION="us-east-1"
谷歌云存储
export STORAGE_URL="gcs://my-bucket/brain-memory"
export GOOGLE_APPLICATION_CREDENTIALS="/path/to/credentials.json"
内存整合(可选但推荐)
该服务器包括一个自动夜间工作器,它使用LLM将短期记忆整合为长期见解:
# Required for consolidation
export OPENAI_API_KEY="your-api-key"
# Optional: Use OpenAI-compatible services
export OPENAI_BASE_URL="https://api.openai.com/v1" # Or your compatible API
export OPENAI_MODEL="gpt-5-mini" # Default model
# Optional: Customize consolidation schedule (cron format)
export CONSOLIDATION_SCHEDULE="0 0 * * *" # Default: midnight daily
# Optional: Disable consolidation
export ENABLE_CONSOLIDATION="false" # Default: true
您也可以复制 .env.example 到 .env 并在那里配置您的设置。
用法
运行服务器
npm start
或者用于自动重建的开发:
npm run dev
使用Claude Desktop进行配置
将此添加到您的Claude Desktop配置文件中:
MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json
视窗: %APPDATA%/Claude/claude_desktop_config.json
{
"mcpServers": {
"brain-mcp": {
"command": "node",
"args": ["/path/to/brain-mcp/dist/index.js"],
"env": {
"STORAGE_URL": "file://brain-memory.duckdb",
"OPENAI_API_KEY": "your-api-key-here",
"OPENAI_MODEL": "gpt-5-mini"
}
}
}
}
可用工具
1. store_memory
将消息存储在对话记忆中。
参数:
role(必填):消息发送者的角色-“用户”、“助理”或“系统”content(必填):要存储的消息内容new_conversation(可选):是否开始新对话(默认值:false)
例子:
{
"role": "user",
"content": "What is the weather like today?",
"new_conversation": false
}
2. get_memory
从最近N个对话中检索存储的对话记忆。
参数:
conversation_count(可选):要检索的最近对话数(默认值:2,最大值:10)
例子:
{
"conversation_count": 2
}
答复:
{
"success": true,
"conversationCount": 2,
"currentConversationId": "conv-1234567890",
"conversations": [
{
"conversationId": "conv-1234567890",
"messageCount": 4,
"messages": [
{
"role": "user",
"content": "Hello!",
"timestamp": "2024-01-01T12:00:00.000Z"
}
]
}
]
}
3. new_conversation
使用新的对话ID开始新的对话。
参数: 无
示例响应:
{
"success": true,
"message": "New conversation started",
"conversationId": "conv-1234567890"
}
4. get_long_term_memory
检索由整合工作人员创建的整合长期记忆。
参数:
limit(可选):要检索的内存数量(默认值:10,最大值:50)
示例响应:
{
"success": true,
"count": 5,
"memories": [
{
"summary": "Discussion about implementing memory systems with DuckDB...",
"topics": ["DuckDB", "Memory Systems", "MCP Servers"],
"keyInsights": [
"DuckDB provides efficient storage for conversation data",
"Memory consolidation helps maintain context over time"
],
"consolidatedFrom": "Conversations from 2024-01-15",
"timestamp": "2024-01-16T00:00:00.000Z"
}
]
}
5. consolidate_memory
手动触发内存整合(通常在夜间自动运行)。
参数: 无
示例响应:
{
"success": true,
"message": "Memory consolidation completed successfully"
}
6. search_memory
使用灵活的过滤器搜索短期和长期记忆。
参数:
query(可选):在对话内容、摘要和见解中搜索的文本topics(可选):过滤长期记忆的主题数组start_date(可选):ISO格式的开始日期(例如,“2024-01-01T00:00:00.000Z”)end_date(可选):ISO格式的结束日期(例如,“2024-12-31T23:59:59.999Z”)memory_type(可选):要搜索的内存类型-“短期”、“长期”或“两者”(默认值:“两者”)limit(可选):每种内存类型的最大结果数(默认值:20,最大值:100)
请求示例:
{
"query": "DuckDB",
"topics": ["databases", "storage"],
"memory_type": "both",
"limit": 10
}
示例响应:
{
"success": true,
"filters": {
"query": "DuckDB",
"topics": ["databases", "storage"],
"dateRange": "all time",
"memoryType": "both"
},
"shortTermResults": {
"count": 5,
"conversations": [
{
"conversationId": "conv-1234567890",
"role": "user",
"content": "Tell me about DuckDB performance...",
"timestamp": "2024-01-15T14:30:00.000Z"
}
]
},
"longTermResults": {
"count": 3,
"memories": [
{
"summary": "Discussion about DuckDB as a storage solution...",
"topics": ["DuckDB", "databases", "storage"],
"keyInsights": [
"DuckDB provides excellent analytical query performance",
"Embedded database with no server required"
],
"consolidatedFrom": "Conversations from 2024-01-14",
"timestamp": "2024-01-15T00:00:00.000Z"
}
]
}
}
建筑
内存整合的工作原理
Brain MCP实现了一个受人类记忆启发的双层记忆系统:
-
短期记忆(对话表)
- 存储最近的对话消息
- 快速访问正在进行的对话中的上下文
- 合并后自动清除
-
长期记忆(长期记忆表)
- 存储整合的见解和摘要
- 通过LLM分析短期记忆创建
- 无限期地保存重要信息
-
夜间整合过程
- 计划工人在午夜运行(可配置)
- 检索当天的所有对话
- 使用配置的LLM模型分析它们
- 提取关键见解、主题并创建摘要
- 将整合存储在长期记忆中
- 清除短期记忆以释放空间
这种方法确保:
- 最近的上下文始终可用
- 重要信息长期保存
- 存储仍然高效
- 知识是有组织和可搜索的
存储后端
服务器使用DuckDB作为其存储引擎,支持:
- 本地文件存储:数据存储在本地DuckDB文件中
- S3存储:使用DuckDB的httpfs扩展将数据持久化到Amazon S3
- GCS存储:使用DuckDB的httpfs扩展将数据持久化到谷歌云存储
数据模式
短期记忆(对话):
CREATE TABLE conversations (
id VARCHAR PRIMARY KEY,
timestamp BIGINT NOT NULL,
role VARCHAR NOT NULL,
content TEXT NOT NULL,
conversation_id VARCHAR NOT NULL
);
长期记忆:
CREATE TABLE long_term_memory (
id VARCHAR PRIMARY KEY,
timestamp BIGINT NOT NULL,
summary TEXT NOT NULL,
topics TEXT NOT NULL, -- JSON array
key_insights TEXT NOT NULL, -- JSON array
consolidated_from TEXT NOT NULL
);
内存管理
- 服务器使用唯一的对话ID自动跟踪对话
- 默认情况下,它维护并可以检索最后2个对话
- 您可以使用以下工具检索最多10个最近的对话
get_memory工具 - 消息按时间戳排序,以便准确重建对话
发展
项目结构
brain-mcp/
├── src/
│ ├── index.ts # Main MCP server implementation
│ ├── storage.ts # Storage manager with DuckDB integration
│ └── consolidation.ts # Memory consolidation worker
├── dist/ # Compiled JavaScript (generated)
├── package.json
├── tsconfig.json
├── .env.example
└── README.md
建筑
npm run build
类型检查
该项目使用启用了严格类型检查的TypeScript。
环境变量
| 变量 | 描述 | 默认值 |
|---|---|---|
| 存储配置 | ||
STORAGE_URL |
存储后端URL | file://brain-memory.duckdb |
AWS_ACCESS_KEY_ID |
AWS访问密钥(适用于S3) | - |
AWS_SECRET_ACCESS_KEY |
AWS密钥(适用于S3) | - |
AWS_REGION |
AWS区域(适用于S3) | us-east-1 |
GOOGLE_APPLICATION_CREDENTIALS |
GCS凭据路径 | - |
| 整合配置 | ||
OPENAI_API_KEY |
OpenAI API密钥(合并需要) | - |
OPENAI_BASE_URL |
与OpenAI兼容的API终结点 | https://api.openai.com/v1 |
OPENAI_MODEL |
用于合并的模型 | gpt-5-mini |
CONSOLIDATION_SCHEDULE |
Cron合并时间表 | 0 0 * * * (午夜) |
ENABLE_CONSOLIDATION |
启用/禁用自动合并 | true |
用例
基本用法
存储和检索最近的对话以获取即时上下文。
长期知识库
自动构建一个可搜索的知识库,其中包含您所有对话中的重要见解和信息。
多用户系统
为不同的用户或环境使用不同的存储后端。
离线优先,云同步
使用本地存储进行快速访问,并定期同步到云存储进行备份和共享。
自定义合并计划
根据您的需求,每天、每周或按需多次运行整合。
许可证
麻省理工学院
贡献
欢迎投稿!请随时提交拉取请求。
