☰
Knowledge Graph Memory Server 服务说明文档:MCP stdio 与 JSON-RPC 配置到 TaoToken
2026/10/1 19:56:02 网站建设 项目流程

1. Knowledge Graph Memory Server 是什么,为什么 Node.js 开发者需要关心 MCP stdio 与 JSON-RPC

Knowledge 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.json(Windows)或~/Library/Application Support/Claude/claude_desktop_config.json(macOS)。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 生成的 Key,Model 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/api,Key 从 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 shadcn@latest","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/completions,TaoToken 的 endpoint 已经包含了路径处理。如果你用的是 Claude Code,检查环境变量名是否是ANTHROPIC_API_KEY而不是OPENAI_API_KEY。三件套里任何一个不匹配都会导致 401。

第二个是local proxy failed或connection refused。这个报错说明客户端尝试连接一个本地代理端口,但那个端口没有服务在监听。常见原因是之前配置过其他代理工具,环境变量里残留了HTTP_PROXY或HTTPS_PROXY。检查你的终端环境变量,如果有代理设置,临时清掉再试:

unset HTTP_PROXY unset HTTPS_PROXY

Windows 下用:

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 根本没被调用。分开验证,效率高很多。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询