项目简介
MemoDB MCP服务器是一个实现了模型上下文协议(MCP)的服务端应用,旨在为AI客户端(如LLM应用)提供结构化的上下文数据和功能调用能力。它作为AI应用的后端,负责管理用户数据、对话历史和知识库,并允许LLM客户端通过标准化的JSON-RPC接口安全、高效地访问和操作这些资源。
主要功能点
- 用户管理:支持用户的创建、读取、更新和删除,方便管理多用户场景下的数据隔离。
- 对话数据管理:提供对话数据的插入、获取和删除功能,用于存储和检索用户的对话历史记录,支持上下文记忆。
- 知识库管理:
- 知识查询:支持关键词查询知识库,并可按类型、标签、来源等多种条件进行过滤,满足复杂的知识检索需求。
- 知识添加:允许添加新的知识条目,并支持设置知识的来源、类型和标签等元数据,方便知识的组织和管理。
- 知识更新:支持更新已有的知识内容和元数据,保持知识库的实时性和准确性。
- 知识关联:可以创建知识条目之间的关联关系,并设置关联类型和权重,构建知识网络,提升知识检索和推理能力。
安装步骤
- 安装Node.js和npm:确保你的环境中已安装Node.js和npm(Node包管理器)。
- 下载仓库代码:从GitHub仓库 https://github.com/wuyunmei/momedb-mcp 克隆或下载代码到本地。
- 安装依赖:在项目根目录下打开终端,运行以下命令安装项目依赖:
npm install - 构建项目:运行以下命令编译TypeScript代码:
npm run build - 配置环境变量:
- 在项目根目录下创建 '.env' 文件。
- 在 '.env' 文件中配置以下环境变量:
MEMOBASE_API_URL=your_api_url # 后端API服务器地址,例如:https://api.example.com MEMOBASE_API_KEY=your_api_key # 访问后端API服务器的密钥 - 请替换 'your_api_url' 和 'your_api_key' 为你实际的后端API服务器地址和密钥。这两个配置项指向服务器实际存储和管理数据的后端服务。请注意,'momedb-mcp' 本身是一个MCP服务器的 接口 实现,它需要依赖于后端的API服务 (如MemoBase API) 来完成数据的持久化和管理。你需要先部署并配置好后端的API服务。
服务器配置 (MCP客户端配置)
对于需要连接 MemoDB MCP 服务器的 MCP 客户端,你需要提供以下配置信息。客户端会使用这些信息启动和连接服务器:
{ "serverName": "memodb-mcp", // MCP服务器的名称,可以自定义 "command": "node", // 启动服务器的命令,这里使用 node 运行 JavaScript 文件 "args": [ // 启动命令的参数 "dist/index.js" // 指定服务器入口文件路径,假设构建后的 index.js 文件在 dist 目录下 ] }
配置参数说明:
- 'serverName': 为你的MCP服务器指定一个易于识别的名称,例如 "memodb-mcp-server"。这个名称仅用于客户端内部标识,可以根据需要自定义。
- 'command': 运行服务器程序的可执行命令。由于该项目是 Node.js 应用,所以这里使用 'node' 命令来运行 JavaScript 文件。
- 'args': 传递给 'command' 的参数列表。
- '"dist/index.js"': 指定了服务器的入口文件路径。'dist/index.js' 是项目构建后生成的 JavaScript 文件,'index.js' 是服务器的主程序入口点。请确保路径与实际构建输出目录和入口文件名一致。
注意:
- 确保客户端能够找到 'node' 命令(即 Node.js 已正确安装并添加到系统环境变量中)。
- 'dist/index.js' 路径是基于项目构建后的输出目录结构的假设,请根据实际情况调整。如果你的构建配置不同,请修改为正确的入口文件路径。
- MCP客户端需要根据自身的设计来读取和使用这个 JSON 配置。通常,客户端会提供界面或配置文件来让用户输入或选择 MCP 服务器配置。
基本使用方法
-
启动服务器:在项目根目录下打开终端,根据运行环境选择以下命令启动服务器:
- 生产环境:
npm start - 开发环境:
npm run dev
启动成功后,服务器将在标准输入/输出 (stdio) 上监听 MCP 客户端的请求。
- 生产环境:
-
使用MCP客户端连接服务器:
- 配置你的MCP客户端,使其使用上述 服务器配置 (MCP客户端配置) 中的 JSON 信息来连接到 MemoDB MCP 服务器。
- 客户端通过标准输入发送符合 MCP 协议的 JSON-RPC 请求给服务器。
- 服务器接收请求,处理后通过标准输出返回 JSON-RPC 响应。
-
调用工具 (Tools) 示例: 以下是一些通过 MCP 客户端调用服务器工具的示例 (以 'callTool' 函数为例,实际客户端调用方式可能有所不同):
-
添加知识
const result = await callTool('add_knowledge', { uid: 'user123', content: '人工智能是计算机科学的一个分支...', metadata: { source: 'wiki', type: 'article', tags: ['AI', '计算机科学', '技术'] } }); console.log(result); -
查询知识
const result = await callTool('query_knowledge', { uid: 'user123', query: '人工智能', filters: { types: ['article'], tags: ['AI'], sources: ['wiki'] }, limit: 10 }); console.log(result); -
关联知识
const result = await callTool('relate_knowledge', { uid: 'user123', source_kid: 'knowledge1', target_kid: 'knowledge2', relation_type: 'related_to', weight: 0.8 }); console.log(result);
请参考仓库的 'README.md' 文件和代码中的 'src/index.ts' 以及 'src/tools' 目录,了解更多可用的工具和详细的参数说明。
-
信息
分类
数据库与文件