Knowledge Graph Memory Server 服务说明文档:MCP stdio 与 JSON-RPC 配置到 TaoToken
1. Knowledge Graph Memory Server 是什么为什么 Node.js 开发者需要关心 MCP stdio 与 JSON-RPCKnowledge Graph Memory Server 是一个基于本地知识图谱的持久化记忆 MCP 服务器它让 Claude 这类支持 MCP 的客户端能够跨聊天会话记住用户信息、项目实体和错误解决方案。简单说它把「记忆」从一次对话里解放出来变成一张可以查询、可以扩展、可以复用的图。对于 Node.js 开发者来说它的价值在于你不需要自己写一套记忆存储层只要把 MCP 服务跑起来通过 stdio 和 JSON-RPC 2.0 跟客户端通信就能让 AI 在多次会话中保持上下文一致。它适合谁如果你正在用 Claude Desktop、Cline、Claude Code 这类支持 MCP 的工具做长期项目开发或者你希望 AI 能记住「这个项目用的是 pnpm 而不是 npm」「上次这个报错是因为 Node 版本不匹配」这类事实那这个服务就是为你准备的。它的核心能力包括实体管理、关系管理、观察记录、课程系统、持久化存储、搜索和错误模式追踪。其中课程系统比较特别它把错误和解决方案也当成实体来存还能跟踪解决方案的成功率。MCP 的传输方式这里用的是 stdio也就是标准输入输出。客户端启动这个 Node.js 进程然后通过 stdin 发 JSON-RPC 请求服务通过 stdout 返回响应。这种方式的优点是本地、无网络依赖、启动快缺点是每个客户端实例通常对应一个服务进程。理解这一点很重要因为后面配置 TaoToken 统一 Key 和 API 通道时你要区分「MCP 服务本身的 stdio 通信」和「模型 API 的 HTTP 通信」是两条不同的链路。我实测下来很多人在接入时卡住不是因为知识图谱逻辑复杂而是因为没搞清楚 MCP 服务端配置和模型 API 配置是两件事。MCP 服务负责记忆的读写模型 API 负责推理。TaoToken 在这里的角色是提供统一的 API 通道和 Key 管理让你不用在多个模型供应商之间来回切换配置。下面我会从环境准备开始一步步给出可复制的配置片段、启动日志和请求响应验证步骤。2. 前置准备Node.js 环境、MCP 服务安装与 TaoToken 统一 Key 配置在写配置之前先把地基打好。Knowledge Graph Memory Server 要求 Node.js v16 或更高版本npm 或 yarn 任意包管理器操作系统 Windows、macOS、Linux 都行。我建议用 Node.js 18 LTS 或 20 LTS因为部分 MCP 客户端对 Node 版本有隐式要求版本太低会在启动时直接报错退出。第一步是拿到服务代码并构建。打开终端执行git clone https://github.com/T1nker-1220/memories-with-lessons-mcp-server.git cd memories-with-lessons-mcp-server npm install npm run build构建完成后产物在dist/index.js。这个路径很关键后面 MCP 客户端配置里的args要指向它。如果你把仓库放在D:\mcp\memories-with-lessons-mcp-server那完整路径就是D:\mcp\memories-with-lessons-mcp-server\dist\index.js。Windows 下路径反斜杠在 JSON 里要转义成\\或者直接用正斜杠/Node.js 都能识别。第二步是准备 TaoToken 的 API Key。访问 https://taotoken.net/api-keys 创建一个 Key然后到 https://taotoken.net/doc 确认当前支持的模型 ID 和 Base URL。TaoToken 的 API 地址是 https://taotoken.net/api这个地址不加 UTM 参数直接用于代码里的baseURL。模型 ID 根据你的客户端选择比如做长期编码和 Agent 任务可以用 Coding Plan 里推荐的模型单纯验证连通性可以用模型对话里列出的通用模型。这里要强调一个容易混淆的点MCP 服务本身不需要 TaoToken Key它只负责本地知识图谱的读写。TaoToken Key 是给「调用模型的客户端」用的。也就是说你的 Claude Desktop 或 Cline 在调用模型时走 TaoToken 的 API 通道而 Knowledge Graph Memory Server 作为 MCP 工具被客户端调用时走 stdio。两条链路独立配置但最终在客户端里协同工作。第三步是确认 MCP 客户端支持 stdio 类型的 MCP 服务器。Claude Desktop 的配置文件在%APPDATA%\Claude\claude_desktop_config.jsonWindows或~/Library/Application Support/Claude/claude_desktop_config.jsonmacOS。Cline 在 VS Code 设置里配置 MCP Servers。Claude Code 则通过~/.claude/settings.json或项目级.mcp.json配置。不同客户端路径不同但配置结构基本一致。如果你用的是 Claude Code还需要注意 Anthropic 相关的环境变量和 OAuth 流程。Claude Code 的接入文档在 https://taotoken.net/doc 里有说明核心是把 Base URL 指向 TaoToken 的 API 地址Key 用 TaoToken 生成的 KeyModel ID 用你订阅的模型。这三件套缺一不可后面在排障章节我会给出具体对照。3. 可复制配置MCP stdio 服务端 JSON 片段与 TaoToken endpoint 设置这一节是全文的核心给出可以直接复制粘贴的配置。先看 MCP 服务端配置这是让客户端知道「去哪里启动 Knowledge Graph Memory Server」的关键。在 Claude Desktop 的claude_desktop_config.json里加入以下片段{ mcpServers: { knowledge-graph: { command: node, args: [/path/to/memories-with-lessons-mcp-server/dist/index.js], env: { NODE_ENV: production } } } }把/path/to/memories-with-lessons-mcp-server/dist/index.js替换成你实际的构建产物路径。Windows 示例{ mcpServers: { knowledge-graph: { command: node, args: [D:/mcp/memories-with-lessons-mcp-server/dist/index.js] } } }macOS 或 Linux 示例{ mcpServers: { knowledge-graph: { command: node, args: [/Users/yourname/mcp/memories-with-lessons-mcp-server/dist/index.js] } } }这段配置只负责 stdio 启动 MCP 服务不涉及网络。接下来是 TaoToken 的 endpoint 设置。如果你用的是 Cline在 VS Code 的 Cline 设置里找到 API Configuration填入{ apiProvider: openai, baseURL: https://taotoken.net/api, apiKey: sk-你的TaoTokenKey, model: 你的模型ID }如果你用的是 Claude Code在~/.claude/settings.json里配置{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_API_KEY: sk-你的TaoTokenKey, ANTHROPIC_MODEL: 你的模型ID } }注意 Claude Code 用的是 Anthropic 兼容协议所以环境变量名是ANTHROPIC_BASE_URL而不是OPENAI_BASE_URL。TaoToken 的 API 地址统一是 https://taotoken.net/api不要加 UTM 参数否则部分客户端会把它当成非法路径。如果你用的是 Codex 或类似工具配置在auth.json里{ baseURL: https://taotoken.net/api, apiKey: sk-你的TaoTokenKey, model: 你的模型ID }这里再次强调三件套Base URL、Key、Model ID。Base URL 是 https://taotoken.net/apiKey 从 https://taotoken.net/api-keys 获取Model ID 从 https://taotoken.net/doc 或模型对话页面确认。三者必须匹配否则会出现 401 或 model not found。对于需要长期编码和 Agent 任务的场景建议用 Coding Plan它在 https://taotoken.net/coding-plan 有详细说明。Coding Plan 的优势是额度更稳定适合高频调用 MCP 工具的开发者。如果你只是验证 Knowledge Graph Memory Server 是否连通用模型对话页面 https://taotoken.net/chat 就够了。配置完成后重启客户端。Claude Desktop 需要完全退出再启动Cline 需要重新加载 VS Code 窗口。重启后客户端会尝试启动 MCP 服务进程。如果配置正确你会在客户端的 MCP 工具列表里看到knowledge-graph相关的工具比如create_entities、create_relations、search_nodes等。4. 验证请求与成功结果启动日志、JSON-RPC 请求响应与知识图谱读写配置写完后怎么确认服务真的通了分两步验证先看 MCP 服务进程是否正常启动再发一个 JSON-RPC 请求看响应。第一步手动启动 MCP 服务观察日志。在终端执行node /path/to/memories-with-lessons-mcp-server/dist/index.js如果服务正常它会等待 stdin 输入不会立刻退出。你可以看到类似这样的启动日志不同版本可能略有差异Knowledge Graph Memory Server running on stdio Storage initialized at ./memory.json MCP server ready如果进程立刻退出并报错常见原因是dist/index.js路径不对或者npm run build没有成功执行。回到项目目录重新跑一次npm run build确认dist目录下有index.js。第二步发一个 JSON-RPC 请求验证。MCP 使用 JSON-RPC 2.0请求格式如下。你可以用echo管道直接测试echo {jsonrpc:2.0,id:1,method:tools/list,params:{}} | node /path/to/memories-with-lessons-mcp-server/dist/index.js正常响应会返回工具列表包含create_entities、create_relations、add_observations、read_graph、search_nodes、create_lesson、search_lessons等。响应结构类似{ jsonrpc: 2.0, id: 1, result: { tools: [ { name: create_entities, description: Create multiple new entities in the knowledge graph, inputSchema: { type: object, properties: { entities: { type: array, items: { type: object, properties: { name: { type: string }, entityType: { type: string }, observations: { type: array, items: { type: string } } }, required: [name, entityType, observations] } } }, required: [entities] } } ] } }看到这个响应说明 stdio 和 JSON-RPC 链路是通的。接下来验证知识图谱写入。发一个create_entities请求echo {jsonrpc:2.0,id:2,method:tools/call,params:{name:create_entities,arguments:{entities:[{name:John_Smith,entityType:person,observations:[Speaks fluent Spanish,Graduated in 2019]}]}}} | node /path/to/memories-with-lessons-mcp-server/dist/index.js成功响应会返回创建结果。然后发read_graph请求读取整个图echo {jsonrpc:2.0,id:3,method:tools/call,params:{name:read_graph,arguments:{}}} | node /path/to/memories-with-lessons-mcp-server/dist/index.js你应该能看到刚才创建的John_Smith实体。再发search_nodes请求echo {jsonrpc:2.0,id:4,method:tools/call,params:{name:search_nodes,arguments:{query:John}}} | node /path/to/memories-with-lessons-mcp-server/dist/index.js如果返回了John_Smith说明搜索功能正常。最后验证课程系统发create_lesson请求echo {jsonrpc:2.0,id:5,method:tools/call,params:{name:create_lesson,arguments:{lesson:{name:NPM_VERSION_MISMATCH_01,entityType:lesson,observations:[Error occurs when using incompatible package versions,Resolution requires version pinning],errorPattern:{type:dependency,message:Cannot find package shadcn/ui,context:package installation},metadata:{severity:high,environment:{os:windows,nodeVersion:18.x}},verificationSteps:[{command:pnpm add shadcnlatest,expectedOutput:Successfully installed shadcn}]}}}} | node /path/to/memories-with-lessons-mcp-server/dist/index.js成功后会返回课程创建结果。再发search_lessons请求echo {jsonrpc:2.0,id:6,method:tools/call,params:{name:search_lessons,arguments:{errorType:dependency,errorMessage:Cannot find package shadcn/ui,context:package installation}}} | node /path/to/memories-with-lessons-mcp-server/dist/index.js如果返回了刚才创建的课程说明课程系统也正常。到这里MCP 服务本身的 stdio 和 JSON-RPC 链路就验证完了。第三步验证客户端到 TaoToken 的模型调用链路。在 Claude Desktop 或 Cline 里发一条消息比如「请用 knowledge-graph 工具创建一个实体名字叫 Test_Project类型是 project观察是 uses pnpm」。如果客户端能调用 MCP 工具并返回结果说明两条链路都通了。如果模型调用失败检查 TaoToken 的 Base URL、Key 和 Model ID 三件套。5. 本篇常见错误排查401、local proxy failed、reading choices、OAuth 对照接入过程中最容易遇到的报错集中在几个地方。我按真实报错信息逐一对照给出排查路径。第一个是401 Unauthorized。这个报错通常来自模型 API 调用不是 MCP 服务本身。原因有三种Key 写错、Key 过期、Base URL 不对。检查你的 TaoToken Key 是否以sk-开头是否从 https://taotoken.net/api-keys 正确复制。检查 Base URL 是否是 https://taotoken.net/api不要多写/v1或/chat/completionsTaoToken 的 endpoint 已经包含了路径处理。如果你用的是 Claude Code检查环境变量名是否是ANTHROPIC_API_KEY而不是OPENAI_API_KEY。三件套里任何一个不匹配都会导致 401。第二个是local proxy failed或connection refused。这个报错说明客户端尝试连接一个本地代理端口但那个端口没有服务在监听。常见原因是之前配置过其他代理工具环境变量里残留了HTTP_PROXY或HTTPS_PROXY。检查你的终端环境变量如果有代理设置临时清掉再试unset HTTP_PROXY unset HTTPS_PROXYWindows 下用set HTTP_PROXY set HTTPS_PROXY然后重启客户端。TaoToken 的 API 地址是直连的不需要额外代理配置。第三个是reading choices或cannot read property choices of undefined。这个报错说明客户端收到了响应但响应结构不符合预期。通常是因为 Base URL 指向了错误的路径或者 Model ID 不被支持。检查你的 Model ID 是否在 https://taotoken.net/doc 的模型列表里。如果你用的是 OpenAI 兼容协议响应里应该有choices字段如果用的是 Anthropic 协议响应结构不同。确认你的客户端配置的协议类型和 TaoToken 的 endpoint 匹配。第四个是 OAuth 相关报错比如OAuth token expired或invalid_grant。这个在 Claude Code 里比较常见。Claude Code 默认走 Anthropic 的 OAuth 流程如果你要用 TaoToken 的 Key需要在 settings.json 里显式配置ANTHROPIC_API_KEY和ANTHROPIC_BASE_URL并且确保没有残留的 OAuth token 缓存。删除~/.claude/下的 token 缓存文件重新用 Key 认证。具体步骤参考 https://taotoken.net/doc 里的 Claude Code 接入说明。第五个是 MCP 服务启动后客户端看不到工具。检查claude_desktop_config.json的 JSON 格式是否合法可以用python -m json.tool或在线 JSON 校验工具检查。检查args路径是否指向dist/index.js而不是src/index.ts。检查 Node.js 版本是否 16。如果客户端日志里显示MCP server exited with code 1手动在终端跑一次node dist/index.js看具体报错。第六个是知识图谱数据不持久。Knowledge Graph Memory Server 默认把数据存在本地 JSON 文件里通常是memory.json。如果你发现重启后数据丢了检查服务进程的工作目录是否一致。在 MCP 配置里可以通过cwd字段指定工作目录{ mcpServers: { knowledge-graph: { command: node, args: [/path/to/dist/index.js], cwd: /path/to/data } } }这样memory.json就会生成在/path/to/data下不会因为客户端启动目录变化而丢失。第七个是create_relations报错entity not found。关系必须建立在已存在的实体之间。先调create_entities创建from和to两个实体再调create_relations。关系使用主动语态比如works_at、uses、depends_on。删除实体时会级联删除相关关系删除不存在的实体或观察时是静默操作不会报错。6. 从验证到长期使用把 Knowledge Graph Memory Server 接入你的编码工作流验证通过后下一步是把它真正用起来。Knowledge Graph Memory Server 的价值不在于单次请求而在于跨会话积累。你可以让 AI 在每次遇到报错时自动创建课程下次遇到同类错误时先搜索课程。这个流程需要客户端支持自动调用 MCP 工具Claude Desktop 和 Cline 都支持。一个实用的做法是在项目根目录放一个memory.json的备份策略。因为知识图谱是本地 JSON 文件你可以把它纳入 Git 版本控制但要注意敏感信息。如果团队共享可以把memory.json放在共享目录多个开发者通过同一个 MCP 服务实例读写。不过 stdio 模式下每个客户端启动独立进程共享需要额外设计简单场景下还是各自维护。对于长期编码和 Agent 任务建议用 Coding Plan它在 https://taotoken.net/coding-plan 有额度说明。Coding Plan 适合高频调用 MCP 工具的场景因为每次工具调用都会消耗模型 token。如果你只是偶尔用模型对话页面 https://taotoken.net/chat 就够了。接入文档在 https://taotoken.net/doc里面有各客户端的详细配置示例。API Key 在 https://taotoken.net/api-keys 管理。如果你在配置过程中遇到问题先对照第 5 节的报错排查大部分问题都能定位到三件套配置或路径问题。最后给一个实操建议把 MCP 服务配置和 TaoToken 配置分开调试。先确保node dist/index.js能手动启动并响应 JSON-RPC 请求再配置客户端。这样出问题时你能快速判断是 MCP 服务的问题还是模型 API 的问题。我试过把两者混在一起调结果一个 401 查了半天最后发现是 MCP 服务路径写错了模型 API 根本没被调用。分开验证效率高很多。
上一篇/下一篇内容由系统自动关联
返回资讯列表 →