记住mcp
多租户存储系统MCP服务器,具有矢量搜索、关系和基于信任的访问控制。
价值主张
记住mcp 为AI助手提供了一个持久的、可搜索的存储系统,使他们能够:
- 记住一切:存储和回忆对话中的信息
- 查找连接:使用语义搜索发现记忆之间的关系
- 随着时间的推移学习:构建一个随着每次互动而增长的知识图谱
- 个性化响应:访问用户偏好和上下文,以进行量身定制的交互
- 智能搜索:使用混合语义+关键字搜索来查找相关记忆
- 组织知识:用45种以上的内容类型(人、事件、食谱、笔记等)对记忆进行分类
为什么使用记住mcp?
AI助理:
- 跨会话的持久记忆(不再忘记之前的对话)
- 语义搜索即使使用不同的措辞也能找到相关的上下文
- 关系追踪揭示了记忆之间的联系
- RAG优化的自然语言理解查询
- 基于信任的隐私敏感信息访问控制
面向开发者:
- 具有每个用户隔离的多租户架构
- 生产就绪,具有全面的错误处理功能
- 与Claude Desktop、mcp-auth和自定义集成兼容
- 通过OpenAI进行向量嵌入以实现语义理解
- 用于元数据和首选项的Firestore
对于用户:
- 他们的人工智能助手能记住重要信息
- 发现不同主题之间的联系
- 根据偏好提供个性化响应
- 通过基于信任的访问控制尊重隐私
用例
个人助理
- “记住莎拉的生日是6月15日”
- “上周我学到了什么关于React钩子的知识?”
- “查找我所有的露营旅行回忆”
- “我保存了哪些用鸡肉做的食谱?”
知识管理
- 使用语义搜索存储研究笔记
- 跟踪概念之间的关系
- 构建个人知识图谱
- 用自然语言查询
项目跟踪
- 记住项目决策和背景
- 链接相关任务和想法
- 搜索所有项目记忆
- 追踪每个决定的灵感来源
关系管理
- 记住你遇到的人的详细信息
- 追踪联系人之间的联系
- 回忆对话背景
- 查找相关交互
特性
- 29+MCP工具:完成内存、关系、首选项、共享空间、内容同步和11个管理调试工具的CRUD
- 带恢复功能的软删除:具有确认流和恢复功能的安全删除
- 多住户:具有安全数据边界的每用户隔离
- 共享空间:将回忆发布到“虚空”等共享探索空间
- 基于令牌的确认:敏感操作(发布、删除)的安全两阶段工作流程
- 向量搜索:使用Weaviate进行语义+关键字混合搜索
- 知识图谱:具有双向跟踪的N向关系
- RAG查询:具有上下文感知响应的自然语言查询
- 45种内容类型:笔记、事件、人物、食谱、目标、任务等
- 用户偏好:可自定义的搜索、位置、隐私和显示设置
- 基于信任的访问:细粒度访问控制(0-1信任级别)
- 生产就绪:全面的错误处理和记录
快速开始
选项1:与Claude Desktop一起使用(推荐)
添加到您的Claude Desktop MCP配置中:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Linux: ~/.config/Claude/claude_desktop_config.json 视窗: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"remember": {
"command": "npx",
"args": ["-y", "@prmichaelsen/remember-mcp"],
"env": {
"WEAVIATE_REST_URL": "https://your-instance.weaviate.cloud",
"WEAVIATE_API_KEY": "your-weaviate-api-key",
"OPENAI_EMBEDDINGS_API_KEY": "sk-...",
"FIREBASE_ADMIN_SERVICE_ACCOUNT_KEY": "{\"type\":\"service_account\",\"project_id\":\"your-project\",\"private_key\":\"-----BEGIN PRIVATE KEY-----\\nYOUR_KEY\\n-----END PRIVATE KEY-----\\n\",\"client_email\":\"firebase-adminsdk@your-project.iam.gserviceaccount.com\"}",
"FIREBASE_PROJECT_ID": "your-project-id"
}
}
}
}重要:
- 使用
\\n(双反斜杠)用于private_key中的换行符 - 用转义所有引号
\" - 获取Weaviate Cloudhttps://console.weaviate.cloud
- 从Firebase控制台获取Firebase服务帐户→ 项目设置→ 服务账户
选项2:独立(stdio传输)
# Install dependencies
npm install
# Set up environment
cp .env.example .env
# Edit .env with your configuration
# Run in development
npm run dev
# Build for production
npm run build
npm start选项3:使用OAuth的本地(Claude Code/CLI)
使用API令牌针对远程平台(例如agentbase.me)进行身份验证:
# Set auth scheme to oauth
export REMEMBER_AUTH_SCHEME=oauth
export REMEMBER_OAUTH_ENDPOINT=https://agentbase.me/api/oauth/token
export REMEMBER_API_TOKEN=ab_live-sk_your_token_here
# Or use a config file instead of env vars:
mkdir -p ~/.remember
cat > ~/.remember/config << 'EOF'
oauth_endpoint: https://agentbase.me/api/oauth/token
api_token: ab_live-sk_your_token_here
EOF
# Run — will exchange token for JWT at startup
npm start配置文件解析顺序 (每场比赛的第一场胜利):
./.remember/config(项目级别——每个项目有不同的代币)~/.remember/config(全球)REMEMBER_API_TOKEN/REMEMBER_OAUTH_ENDPOINTenv变量(覆盖)
身份验证环境变量:
| 变量 | 默认值 | 描述 |
|---|---|---|
REMEMBER_AUTH_SCHEME | service | 身份验证模式: service (JWT通过mcp认证)或 oauth (本地代币交易所) |
REMEMBER_OAUTH_ENDPOINT | -- | OAuth令牌交换URL(当scheme=OAuth时需要) |
REMEMBER_API_TOKEN | - | OAuth交换的API令牌(或通过 .remember/config) |
选项4:使用mcp-auth(多租户生产)
import { wrapServer, JWTAuthProvider } from '@prmichaelsen/mcp-auth';
import { createServer } from '@prmichaelsen/remember-mcp/factory';
const wrapped = wrapServer({
serverFactory: createServer,
authProvider: new JWTAuthProvider({
jwtSecret: process.env.JWT_SECRET
}),
// tokenResolver not needed - remember-mcp is self-managed
resourceType: 'remember',
transport: { type: 'sse', port: 3000 }
});
await wrapped.start();建筑
- Weaviate:用于记忆、关系和共享空间的矢量存储
- 个人收藏: Memory_users_{userId} (按用户隔离) - 公共空间收集: Memory_spaces_public (所有共享空间) - 组集合: Memory_groups_{groupId} (私人团体) - 复合ID: {userId}.{memoryId} 已发表的回忆 - 跟踪阵列: space_ids[] 和 group_ids[] 跟踪出版物位置
- 四大:权限、首选项、确认令牌
- 用户数据: users/{user_id}/preferences, users/{user_id}/requests
- Firebase身份验证:用户身份验证
内存收集模式v2(v3.1.0+)
具有复合ID和跟踪数组的三层收集架构。
集合:
Memory_users_{userId}--带有简单ID的私人记忆Memory_spaces_public--所有具有复合ID的公共空间记忆Memory_groups_{groupId}--使用复合ID对内存进行分组
主要特点:
- 同时发布到多个空间和组
- 复合ID(
{userId}.{memoryId})保留源引用 remember_revise将内容更改同步到所有已发布的副本- 孤儿策略保留收回的记忆以供历史参考
- 修订历史记录(最多10个条目)跟踪内容更改
示例:
// Publish to spaces + groups
remember_publish({
memory_id: "my-recipe",
spaces: ["cooking", "recipes"],
groups: ["foodie-club"]
})
// Search across spaces
remember_search_space({
query: "pasta recipe",
spaces: ["cooking"],
search_type: "hybrid"
})共享空间
将记忆发布到共享发现空间,其他用户可以在其中找到它们。
虚空
“The Void”是一个共享空间,用于发现其他用户的想法和想法。
发布工作流
- 发布:生成确认令牌
// Publish to spaces + groups
remember_publish({
memory_id: "abc123",
spaces: ["the_void", "cooking"],
groups: ["foodie-club"]
})
// Returns: { success: true, token: "xyz789" }- 确认:执行发布
remember_confirm({ token: "xyz789" })
// Creates composite ID copies in Memory_spaces_public and Memory_groups_{groupId}- 修订:同步内容更改(需要确认)
// After updating source memory, request revision
remember_revise({ memory_id: "abc123" })
// Returns: { success: true, token: "xyz789" }
remember_confirm({ token: "xyz789" })
// Updates all copies, preserves old content in revision_history- 收回:从特定目的地删除
remember_retract({ memory_id: "abc123", spaces: ["cooking"] })
// Orphan strategy: memory remains in collection for historical reference- 搜索:发现共享的回忆
remember_search_space({
query: "pasta recipe",
spaces: ["cooking"],
search_type: "hybrid" // hybrid | bm25 | semantic
})空间和组工具
remember_publish-发布到空间和/或组(需要确认)remember_retract-从空间和/或组中退出(需要确认)remember_revise-将内容同步到所有已发布的副本(需要确认)remember_confirm-确认任何未决行动remember_deny-取消任何待处理的操作remember_search_space-搜索共享空间和组remember_query_space-询问有关共享记忆的问题
安全删除并确认
v3.0.0+:删除现在需要确认,以防止意外数据丢失。
删除工作流
- 请求删除:生成确认令牌
remember_delete_memory({
memory_id: "abc123",
reason: "No longer needed"
})
// Returns:
{
"success": true,
"token": "xyz789",
"expires_at": "2026-02-25T17:30:00Z",
"preview": {
"memory_id": "abc123",
"content": "My camping trip to Yosemite...",
"type": "note",
"relationships_count": 3,
"will_orphan": ["rel1", "rel2", "rel3"]
},
"message": "Deletion requested. Use remember_confirm with token..."
}- 用户确认:执行删除操作
remember_confirm({ token: "xyz789" })
// Returns:
{
"success": true,
"memory_id": "abc123",
"message": "Memory deleted successfully"
}- 内存已软删除:标记为已删除,未删除
- 内存仍保留在数据库中
deleted_at时间戳 - 默认情况下排除在搜索之外
- 可以用以下方式搜索
deleted_filter: "include"或"only" - 未来:恢复工具(不在v3.0.0中)
搜索已删除的记忆
默认行为 (不包括已删除):
remember_search_memory({ query: "camping" })
// Returns only active memories包括已删除的记忆:
remember_search_memory({
query: "camping",
deleted_filter: "include"
})
// Returns both active and deleted memories仅删除记忆:
remember_search_memory({
query: "camping",
deleted_filter: "only"
})
// Returns only deleted memories适用于所有搜索工具:
remember_search_memoryremember_query_memoryremember_find_similarremember_search_relationship
重要说明
⚠️ 重大变更(v3.0.0):
- 删除现在需要确认(两步过程)
- 默认情况下,已删除的内存被排除在搜索之外
- 无法与已删除的内存建立关系
- 无法更新已删除的内存
数据安全:
- 已删除的内存仍保留在数据库中(软删除)
- 无永久删除功能
- 跟踪删除时间戳和原因
- 计划未来的恢复能力
调试
使用启用详细的调试日志记录 REMEMBER_MCP_DEBUG_LEVEL 环境变量:
# No debug output (production default)
REMEMBER_MCP_DEBUG_LEVEL=NONE
# Only errors
REMEMBER_MCP_DEBUG_LEVEL=ERROR
# Warnings and errors
REMEMBER_MCP_DEBUG_LEVEL=WARN
# Info, warnings, and errors
REMEMBER_MCP_DEBUG_LEVEL=INFO
# Debug, info, warnings, and errors (recommended for development)
REMEMBER_MCP_DEBUG_LEVEL=DEBUG
# Everything including parameter dumps (use with caution)
REMEMBER_MCP_DEBUG_LEVEL=TRACE示例:
# Enable debug logging for development
REMEMBER_MCP_DEBUG_LEVEL=DEBUG npm run dev
# Enable trace logging for troubleshooting
REMEMBER_MCP_DEBUG_LEVEL=TRACE npm start⚠️ 安全说明:TRACE级别包括完整参数转储,可能会暴露敏感数据。仅在开发环境中使用。
文档
看 agent/design/ 详细文档:
其他项目文档:
- 里程碑(
agent/milestones/) - 实施任务(
agent/tasks/)
许可证
麻省理工学院
