Memory Crystal MCP 服务器
- 项目简介
- Memory Crystal MCP 服务器是一个完整的后端实现,用于向 LLM 客户端提供统一的上下文服务。核心功能包括:托管和查询 Memory Crystal 的资源(Memories 等数据),注册并执行工具(Tools),以及提供和渲染 Prompt 模板以支撑多种交互模式。服务器通过 MCP 协议与客户端通信,支持通过 SSE/STDIO 等传输方式,具备会话管理与能力声明能力。
- 主要功能点
- MCP 服务端:实现 MCP 的核心入口,暴露工具列表,以及按名称调用工具的执行逻辑。
- 工具集成(Tools):包含诸如 crystal_remember、crystal_recall、crystal_recent、crystal_search_messages、crystal_what_do_i_know、crystal_why_did_we、crystal_forget、crystal_stats、crystal_checkpoint、crystal_wake 等工具,支持参数校验、结果构建与错误处理。
- 传输模式:支持标准输入/输出(stdio)与服务器端推送(SSE)两种传输模式,便于本地调试或远程会话。
- 会话与日志:与 Convex、Embed、Obsidian 等组件对接,提供会话管理、内存嵌入、日志注入等能力。
- 数据持久化与索引:通过 Convex 作为后端数据库,提供向量索引、BM25/混合检索等能力来实现 Memory 的快速 recall 与管理。
- 安装步骤
- 依赖准备:需要 Node.js 18+ 环境、Convex 服务端/云端可用、以及嵌入模型服务(如 OpenAI/ Ollama)等。
- 构建:将 TypeScript 源码编译生成可执行的 dist/index.js(MCP 服务器 dist 路径在构建后产生)。
- 启动:以 Node 运行 dist/index.js,或按配置使用 SSE/stdio 模式启动。启动时可通过 CRYSTAL_MCP_MODE 指定传输模式(sse/stdio),默认为 sse。
- 依赖与配置:需要提供 Convex 的 FORWARD URL、OpenAI API Key、以及 MCP 客户端需要的认证信息,具体在运行时通过环境变量设置。
- 服务器配置(JSON,给 MCP 客户端使用的示例配置) 为便于 OpenClaw 等 MCP 客户端接入,以下 JSON 提供服务器的基本连接信息。实际部署时请将占位符替换为你的实际值;MCP 客户端不需要暴露实现细节,只需要以下字段便可连接并启动请求/响应交互。 { "serverName": "crystal-mcp-server", "command": "node", "args": ["mcp-server/dist/index.js"], "mode": "sse", "host": "127.0.0.1", "port": 8788, "notes": "如需本机调试,确保 dist/index.js 已生成并可直接执行。" } 附加环境变量(示例,部署时请替换为实际值): { "env": { "CRYSTAL_MCP_MODE": "sse", "CRYSTAL_MCP_HOST": "127.0.0.1", "CRYSTAL_MCP_PORT": "8788", "CONVEX_URL": "<你的 Convex 服务地址>", "OPENAI_API_KEY": "<你的 OpenAI API Key,若使用 OpenAI 作为嵌入服务>", "CRYSTAL_API_KEY": "<MCP 访问密钥(可选,视服务部署而定)>" } }
- 基本使用方法
- 启动模式选择:在启动时通过 CRYSTAL_MCP_MODE 指定传输模式,默认使用 SSE,以实现长连接的实时交互;若需要本地调试则可使用 STDIO 模式。
- 疑难排查与日志:启动后请查看控制台输出的监听地址,若遇到网络或认证错误,请确保 OPENAI_API_KEY/ CONVEX_URL/MCP 相关密钥与地址正确配置。
- 与 MCP 客户端对接:客户端通过上述 JSON 配置获取服务器地址、端口及传输方式,与 MCP 进行标准化的请求/响应交互,包含读取资源、执行工具、获取 Prompt 等能力。
- 常见工作流:LLM 通过工具调用触发记忆写入(crystal_remember)、触发 recall/search(crystal_recall、crystal_recent、crystal_search_messages)、查看统计(crystal_stats)等,以实现对话上下文的持久化和智能检索。