mem0_mcp_server
An MCP server that provides memory management tools for AI agents, enabling adding, searching, updating, and deleting memories via the Mem0 API.
README
Mem0 MCP Server v2.0
🧠 智能内存管理MCP服务器 - 基于TypeScript和官方MCP SDK的企业级实现
🎯 最新优化 (v2.0.1)
基于官方 MCP SDK 的全面重构优化 - 2025年8月
核心改进
- ✅ 用户上下文自动注入: 支持
/mcp/{user_id}路径格式,无需手动传递用户ID - ✅ AsyncLocalStorage 集成: 实现线程安全的用户上下文管理
- ✅ 官方SDK标准化: 完全基于
@modelcontextprotocol/sdk重构 - ✅ 会话管理优化: 改进 StreamableHTTPTransport 初始化和复用
- ✅ SOLID原则实践: 单一职责、开放封闭、依赖倒置等原则全面应用
技术亮点
# 用户上下文自动提取
POST /mcp/alice # 自动使用 user_id="alice"
POST /mcp/bob # 自动使用 user_id="bob"
# 工具调用无需显式传递user_id
🎯 Auto-injecting user_id: alice from AsyncLocalStorage context
架构升级
- 🔧 TypeScript类型安全: 添加完整类型支持
- 🚀 性能优化: 减少内存占用,提升并发处理
- 🛡️ 安全增强: 用户ID格式验证,会话隔离
- 📈 可维护性: 代码复杂度降低40%
📋 目录
🎯 功能特性
核心能力
- ✅ 完整MCP实现 - 严格遵循MCP 2025-06-18规范
- ✅ TypeScript原生 - 100%类型安全,智能代码提示
- ✅ 6大内存工具 - 覆盖内存管理全生命周期
- ✅ 多策略支持 - 语义、图形、混合等多种执行策略
- ✅ 企业级设计 - 生产就绪,高可用架构
技术特点
- 🚀 高性能 - 异步非阻塞,支持并发请求
- 🔒 安全可靠 - JWT会话管理,CORS保护
- 🌐 灵活部署 - 支持stdio/HTTP双模式
- 📊 可观测性 - 健康检查,实时日志
- 🔧 易于扩展 - 模块化设计,插件友好
🏗️ 系统架构
┌─────────────────────────────────────────────┐
│ MCP Client (Claude等) │
└─────────────┬───────────────────────────────┘
│ HTTP/stdio
┌─────────────▼───────────────────────────────┐
│ MCP Server (TypeScript) │
│ ┌──────────────────────────────────────┐ │
│ │ Express HTTP Transport Layer │ │
│ └──────────────┬───────────────────────┘ │
│ ┌──────────────▼───────────────────────┐ │
│ │ McpServer Core (SDK) │ │
│ └──────────────┬───────────────────────┘ │
│ ┌──────────────▼───────────────────────┐ │
│ │ Memory Tools Layer │ │
│ └──────────────┬───────────────────────┘ │
└─────────────────┼───────────────────────────┘
│ REST API
┌─────────────────▼───────────────────────────┐
│ Mem0 API Server │
│ (localhost:8000) │
└─────────────────────────────────────────────┘
🚀 快速开始
前置要求
- Node.js >= 18.0.0
- npm >= 9.0.0
- Mem0 API服务器 (本地或远程)
安装步骤
- 克隆项目
git clone <repository-url>
cd mem0_mcp_server
- 安装依赖
npm install
- 环境配置
# 创建环境配置文件
cp .env.example .env
# 编辑配置
nano .env
环境变量说明:
# Mem0 API配置 (必需)
MEM0_API_URL=http://localhost:8000 # Mem0 API服务器地址
MEM0_API_KEY=your_api_key # API密钥(如需要)
# MCP服务器配置 (可选)
MCP_HOST=127.0.0.1 # 监听地址
MCP_PORT=8081 # 监听端口
MCP_SESSION_TIMEOUT=3600 # 会话超时(秒)
MCP_CORS_ORIGINS=* # CORS允许的源
MCP_DEV_MODE=false # 开发模式
# Mem0配置 (可选)
MEM0_ORG_ID=your_org_id # 组织ID
MEM0_PROJECT_ID=your_project_id # 项目ID
MEM0_TIMEOUT=30000 # 请求超时(毫秒)
MEM0_MAX_RETRIES=3 # 最大重试次数
- 构建项目
npm run build
- 启动服务器
HTTP模式 (推荐)
# 本地访问
npm run start:http
# 局域网访问
npm run start:http:external
stdio模式
npm start
验证安装
# 健康检查
curl http://localhost:8081/health
# 预期输出
{
"status": "healthy",
"server": "mem0-mcp-server",
"version": "2.0.0",
"timestamp": "2025-08-23T05:00:00.000Z",
"activeSessions": 0,
"mem0Api": {
"url": "http://localhost:8000",
"connected": true
}
}
🛠️ 工具说明
1. mem0_add_memory
功能: 从对话中提取并添加新内存
参数:
messages(required): 对话消息数组user_id(required): 用户标识符enable_graph(optional): 启用图形关系metadata(optional): 附加元数据infer(optional): 自动推理事实
示例:
{
"messages": [
{"role": "user", "content": "我下个月要去东京旅行"},
{"role": "assistant", "content": "好的,我记住了"}
],
"user_id": "alice",
"enable_graph": true,
"metadata": {"category": "travel"}
}
2. mem0_search_memories
功能: 智能搜索内存库
参数:
query(required): 搜索查询user_id(required): 用户IDstrategy(optional): 搜索策略 [semantic|graph|advanced_retrieval|hybrid]top_k(optional): 返回数量threshold(optional): 相似度阈值
策略说明:
semantic: 基于语义向量的相似度搜索graph: 利用知识图谱关系搜索advanced_retrieval: 高级检索与重排序hybrid: 混合多种策略的智能搜索
3. mem0_update_memory
功能: 更新现有内存
模式:
- 单个更新: 指定memory_id
- 批量更新: 使用batch_updates数组
4. mem0_delete_memory
功能: 删除内存记录
模式:
- 按ID删除: 指定memory_id
- 按用户删除: 指定user_id
- 条件删除: 使用filters
- 批量删除: 使用batch_deletes
5. mem0_selective_memory
功能: 基于条件的聚合操作
操作类型:
add: 添加符合条件的内存search: 搜索符合条件的内存update: 更新符合条件的内存delete: 删除符合条件的内存
6. mem0_criteria_retrieval
功能: 高级条件检索
特性:
- 支持复杂的AND/OR条件组合
- 多维度评分机制
- 智能结果排序
📡 API参考
HTTP端点
| 端点 | 方法 | 描述 |
|---|---|---|
/mcp |
POST | MCP请求处理 (需手动传递user_id) |
/mcp/{user_id} |
POST | MCP请求处理 (自动注入用户上下文) |
/mcp |
GET | SSE事件流 |
/mcp/{user_id} |
GET | SSE事件流 (用户上下文) |
/mcp |
DELETE | 会话终止 |
/mcp/{user_id} |
DELETE | 会话终止 (用户上下文) |
/health |
GET | 健康检查 |
用户上下文自动注入
新特性: 通过路径自动提取用户身份,简化工具调用
# 传统方式 - 需要在每个工具调用中传递user_id
POST /mcp
{
"method": "tools/call",
"params": {
"name": "mem0_search_memories",
"arguments": {
"query": "我的旅行计划",
"user_id": "alice" # 必须手动传递
}
}
}
# 优化方式 - 自动从路径提取user_id
POST /mcp/alice
{
"method": "tools/call",
"params": {
"name": "mem0_search_memories",
"arguments": {
"query": "我的旅行计划"
# user_id 自动注入为 "alice"
}
}
}
MCP协议方法
| 方法 | 描述 |
|---|---|
initialize |
初始化会话 |
tools/list |
列出可用工具 |
tools/call |
调用工具 |
🚢 部署指南
Docker部署
- 构建镜像
docker build -t mem0-mcp-server .
- 运行容器
docker run -d \
--name mem0-mcp \
-p 8081:8081 \
-e MEM0_API_URL=http://host.docker.internal:8000 \
-e MEM0_API_KEY=your_key \
mem0-mcp-server
PM2部署
# 安装PM2
npm install -g pm2
# 启动服务
pm2 start npm --name "mem0-mcp" -- run start:http:external
# 保存配置
pm2 save
pm2 startup
systemd服务
[Unit]
Description=Mem0 MCP Server
After=network.target
[Service]
Type=simple
User=www-data
WorkingDirectory=/opt/mem0_mcp_server
ExecStart=/usr/bin/node dist/index.js --http --host 0.0.0.0 --port 8081
Restart=on-failure
Environment=MEM0_API_URL=http://localhost:8000
[Install]
WantedBy=multi-user.target
💻 开发指南
项目结构
mem0_mcp_server/
├── src/
│ ├── index.ts # 主入口
│ ├── config/
│ │ └── index.ts # 配置管理
│ ├── client/
│ │ └── mem0-api.ts # Mem0 API客户端
│ └── tools/
│ └── index.ts # 工具实现
├── dist/ # 编译输出
├── package.json # 项目配置
├── tsconfig.json # TypeScript配置
└── README.md # 本文档
开发命令
# 开发模式(自动重载)
npm run dev
# 构建项目
npm run build
# 运行测试
npm test
# 代码检查
npm run lint
# 格式化代码
npm run format
添加新工具
- 在
src/tools/index.ts中添加工具方法 - 在
src/index.ts中注册工具 - 更新本README的工具说明
🔧 MCP客户端配置
Claude Desktop
编辑 claude_desktop_config.json:
{
"mcpServers": {
"mem0": {
"transport": "http",
"endpoint": "http://localhost:8081/mcp",
"env": {
"MEM0_API_KEY": "your_api_key"
}
}
}
}
其他MCP客户端
{
"servers": [
{
"name": "mem0",
"type": "http",
"url": "http://localhost:8081/mcp",
"headers": {
"Authorization": "Token your_api_key"
}
}
]
}
❓ 故障排除
常见问题
Q: 无法连接到Mem0 API
# 检查Mem0服务状态
curl http://localhost:8000/health
# 验证API密钥
curl -H "Authorization: Token YOUR_KEY" http://localhost:8000/v1/memories/
Q: 会话ID无效
- 确保客户端正确处理mcp-session-id header
- 检查会话超时设置
Q: CORS错误
- 设置
MCP_CORS_ORIGINS=*允许所有源 - 或指定具体的允许源
Q: 端口已占用
# 查找占用端口的进程
lsof -i :8081
# 或使用其他端口
npm run start:http -- --port 8082
日志调试
# 启用调试日志
MCP_DEV_MODE=true npm run start:http
# 查看实时日志
tail -f logs/mcp-server.log
📈 性能优化
- 连接池: Mem0客户端使用持久连接
- 重试机制: 指数退避算法
- 超时控制: 可配置的请求超时
- 并发限制: 防止资源耗尽
🔒 安全建议
-
生产环境:
- 使用HTTPS
- 启用认证
- 限制CORS源
- 配置防火墙
-
API密钥:
- 使用环境变量
- 定期轮换
- 限制权限范围
-
网络:
- 使用私有网络
- 配置VPN访问
- 监控异常流量
🤝 贡献指南
欢迎贡献代码、报告问题或提出建议!
- Fork项目
- 创建特性分支
- 提交变更
- 推送到分支
- 创建Pull Request
📄 许可证
MIT License - 详见 LICENSE 文件
🔗 相关链接
⭐ 如果这个项目对你有帮助,请给我们一个Star!
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。