新闻详情

新闻详情

首页 / 资讯中心 / 详情

编写第一个MCP Client之Hello world:用TaoToken统一Key跑通最小调用链

发布时间:2026/9/27 17:42:45来源:尧图网络
编写第一个MCP Client之Hello world:用TaoToken统一Key跑通最小调用链
1. 从零跑通 MCP Client 到底卡在哪MCP Client 是 MCP 协议里负责“牵线”的那一层它把宿主应用比如 IDE 插件、命令行工具和 MCP Server 连起来让工具调用、资源读取、提示词获取这些动作能真正发出去。适合谁适合刚接触 MCP、已经照着教程写完一个 Hello world Server、但卡在“Client 怎么连上去、怎么把请求发出去”的开发者。我试过把官方 quickstart 直接抄下来跑结果第一步就卡在传输层配置上——Server 路径写错、命令找不到、JSON-RPC 请求发出去没响应全是坑。这篇要解决的核心问题很具体用最小的代码量搭一个能跑通的 MCP Client调用上一篇写好的 echo Server把callTool这条链路走通。同时把模型调用的 Key 统一收口到 TaoToken避免在 Client 里散落多家厂商的 Key 和 endpoint。整条链路是Client 启动子进程 → 通过 stdio 发 JSON-RPC → Server 返回结果 → Client 打印。跑通之后你会看到Tool response里带着 echo 回来的内容说明协议层、传输层、工具调用三层都通了。下面按“环境准备 → TaoToken 前置 → 可复制配置 → 验证请求 → 排错 → 下一步”的顺序展开每一步都给完整命令和文件内容你可以直接复制改路径。2. TaoToken 前置统一 Key 与 endpoint 收口在写 Client 代码之前先把模型调用的出口定下来。MCP Client 本身只负责协议通信但真实场景里 Client 往往还要调模型做推理或工具选择如果每个 Client 都去配一套 OpenAI/Anthropic 的 Key维护成本会很高。TaoToken 的做法是提供一个统一的 API 入口把模型调用收敛到一个 Key 上。你需要先拿到一个 API Key入口在控制台的 API Keys 页面https://taotoken.net/console/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi_keysutm_campaignrewrite拿到 Key 之后模型调用的 base URL 统一用https://taotoken.net/api注意这个地址不带任何查询参数直接作为 OpenAI 兼容客户端的base_url使用。Key 的传递方式就是标准的Authorization: Bearer 你的Key不需要额外签名或加密。如果你后面要接 Claude Code 这类编码 AgentAnthropic 兼容入口的文档在这里https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite这一步的意义在于Client 代码里只出现一个TAOTOKEN_API_KEY环境变量和一个 base URL换模型、换厂商都不用改 Client 逻辑。对于 Hello world 阶段你甚至可以先不调模型只验证 MCP 协议链路等链路通了再把模型调用接进来。3. 可复制配置项目骨架与 Client 代码3.1 初始化项目与依赖先确认 Node 环境建议 18 以上node --version npm --version然后建目录、初始化、装依赖mkdir mcp-hello-client cd mcp-hello-client npm init -y npm install modelcontextprotocol/sdk zod npm install -D types/node typescript mkdir srcWindows 下把mkdir换成mdtouch换成new-item即可其余命令一致。3.2 package.json 关键字段打开package.json确保有type: module和构建脚本。下面是一份可直接用的骨架{ name: mcp-hello-client, version: 1.0.0, type: module, scripts: { build: tsc, dev: tsc --watch, start: node build/index.js }, dependencies: { modelcontextprotocol/sdk: ^1.11.1, zod: ^3.24.4 }, devDependencies: { types/node: ^22.15.17, typescript: ^5.8.3 } }type: module必须加否则 SDK 的 ESM 导入会报Cannot use import statement outside a module。3.3 tsconfig.json根目录建tsconfig.json模块解析用 Node16输出到build{ compilerOptions: { target: ES2022, module: Node16, moduleResolution: Node16, outDir: ./build, rootDir: ./src, strict: true, esModuleInterop: true, skipLibCheck: true, forceConsistentCasingInFileNames: true }, include: [src/**/*], exclude: [node_modules] }3.4 Client 主代码在src/index.ts写入下面内容。核心是StdioClientTransport启动 Server 子进程Client实例负责发 JSON-RPCimport { Client } from modelcontextprotocol/sdk/client/index.js; import { StdioClientTransport } from modelcontextprotocol/sdk/client/stdio.js; async function main() { // 传输层启动 echo Server 子进程路径改成你自己的 const transport new StdioClientTransport({ command: node, args: [../mcp-hello-server/build/index.js] }); const client new Client({ name: hello-client, version: 1.0.0 }); await client.connect(transport); try { const result await client.callTool({ name: echo, arguments: { message: hello mcp } }); console.log(Tool response:, JSON.stringify(result, null, 2)); } finally { await client.close(); } } main().catch((err) { console.error(Client error:, err); process.exit(1); });几个关键点command是nodeargs指向 Server 编译后的入口callTool的name必须和 Server 注册的工具名完全一致arguments的字段名也要和 Server 的 zod schema 对齐否则会返回参数校验错误。3.5 环境变量与 TaoToken 配置片段如果你要在 Client 里顺带调模型把 Key 放到环境变量不要硬编码。Linux/macOSexport TAOTOKEN_API_KEY你的KeyWindows PowerShell$env:TAOTOKEN_API_KEY你的Key然后在代码里读取const apiKey process.env.TAOTOKEN_API_KEY; const baseURL https://taotoken.net/api;这样 Client 里只有一处引用 Key换环境只改环境变量。4. 验证请求构建、启动与预期输出先构建npm run build看到build/index.js生成即成功。然后启动npm start预期输出类似Tool response: { content: [ { type: text, text: hello mcp } ] }只要content里出现你传进去的message说明整条链路通了Client 启动子进程 → stdio 传输 JSON-RPC → Server 收到tools/call→ 执行 echo → 返回结果 → Client 打印。如果你想验证模型调用这一层可以用模型对话入口快速测一下 Key 是否可用https://taotoken.net/model-chat?utm_sourcetaotoken_aicg_blog_endutm_contentmodel_chatutm_campaignrewrite在页面里发一条消息能正常返回就说明 Key 和 endpoint 都没问题。这一步和 MCP 链路是独立的先分开验证出问题好定位。5. 本篇常见错排查5.1 报错Cannot find module modelcontextprotocol/sdk/client/index.js原因通常是type: module没加或者moduleResolution不是 Node16。检查package.json和tsconfig.json改完重新npm run build。5.2 启动后无输出进程直接退出大概率是 Server 路径写错子进程启动失败但错误被吞了。把args里的路径改成绝对路径试一次比如d:/projects/mcp-hello-server/build/index.js。另外确认 Server 已经npm run build过build/index.js真实存在。5.3Tool response里返回isError: true说明请求发出去了但 Server 侧执行失败。常见原因是工具名不对或参数不匹配。检查 Server 里server.tool(echo, ...)的第一个参数是不是echo以及 zod schema 的字段名是不是message。两边必须逐字一致。5.4 连接超时或connect卡住stdio 传输依赖子进程的标准输入输出如果 Server 启动时往 stdout 打了非 JSON-RPC 的日志会污染协议流。检查 Server 代码里有没有console.log打在协议消息之外有的话改成console.error。5.5 环境变量读不到process.env.TAOTOKEN_API_KEY返回undefined先确认是在同一个终端会话里 export 的或者用.env文件配合dotenv加载。Windows 下注意 PowerShell 和 CMD 的语法不同。6. 下一步从 Hello world 到长期编码 AgentHello world 跑通之后下一步通常是把 MCP Client 接到真实的编码场景里让 Agent 自动选择工具、连续调用。这时候单次callTool就不够了需要处理多轮对话、工具结果回填、上下文管理。如果你打算长期跑编码类 Agent可以看下 Coding Plan 的接入方式https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding_planutm_campaignrewrite接入文档里有完整的 endpoint 和参数说明https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite我的建议是先把这篇的 stdio 链路跑稳再逐步加 resources 和 prompts 的调用最后接模型。每一步都单独验证出问题能快速定位到是协议层、传输层还是模型层。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

OpenClaw Backup skill 安装与使用指南:TaoToken 统一 Key 配置实战 2026/9/27 18:36:01

OpenClaw Backup skill 安装与使用指南:TaoToken 统一 Key 配置实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
网站建设结构速查手册:解决改需求拖一周的痛点 2026/9/27 18:35:54

网站建设结构速查手册:解决改需求拖一周的痛点

网站建设结构速查手册:解决改需求拖一周的痛点 改个按钮颜色建站公司拖一周,后台改个价格还得等三天?别急,这真不是技术难,是他们把简单的【网站建设结构】搞复杂了,或者根本不懂怎么拆。…

阅读更多 →
【小白向】OpenClaw v2.7.9 一键部署避坑指南:Windows 下用 TaoToken 统一 Key 打通 API 配置 2026/9/27 18:35:54

【小白向】OpenClaw v2.7.9 一键部署避坑指南:Windows 下用 TaoToken 统一 Key 打通 API 配置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
mongoskin aggregate group 实战:TaoToken 统一 Key 接入与聚合管道配置骨架 2026/9/27 18:35:48

mongoskin aggregate group 实战:TaoToken 统一 Key 接入与聚合管道配置骨架

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
南宁新技术产业建设开发总公司网站新手入门避坑指南 2026/9/27 18:35:41

南宁新技术产业建设开发总公司网站新手入门避坑指南

南宁新技术产业建设开发总公司网站新手入门避坑指南 备案流程一头雾水,是不是让你对上线网站这件事充满了焦虑?很多刚接触网站建设的同行,甚至不少负责企业官网的新手,第一反应就是卡在工信部备案这关。别慌,今天咱们不聊虚的,直接拆解【南宁新技术产业…

阅读更多 →
AI时代的职业重构并非零和游戏:用TaoToken统一Key打通Cline与CC Switch的配置骨架 2026/9/27 18:35:41

AI时代的职业重构并非零和游戏:用TaoToken统一Key打通Cline与CC Switch的配置骨架

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉