RooCode 挂上 SumMCP.py 的 add / listdir,模型接口改填 TaoToken
SumMCP.py 的 add 和 listdir 已经挂进 RooCode图标绿了可让模型算 9998 时它还要花 token 判断该用哪个 tool。这篇只换模型侧接口TaoTokenhttps://taotoken.net/?utm_sourcetaotoken_aicg_blog_endMCP 侧配置一字不动。MCP 有意思的地方在于插件本身办不到的事可以自己写个 tool 补上。求和、列目录这种活儿写成 SumMCP.py 也就十来行RooCode 挂上就能用。真正麻烦的不是写 tool而是「模型怎么知道该调哪个 tool」。RooCode 会把 MCP 工具的 schema 一并塞进上下文模型每轮都得判断这句话要不要调工具、调 add 还是 listdir、参数怎么填。这一步全压在模型侧通道上通道一换、Key 一过期、模型 ID 一填错判断就在半路断掉——表现是绿点还亮着对话框里却始终弹不出工具调用。所以这篇按原始那篇《RooCode结合本地MCP实践》的路径重走一遍先在~/workspace/python/demo/mcp写 SumMCP.pyconda 建 py_3.12 装 fastmcp再进 RooCode 的 mcp_setting.json 把 demo server 挂上靠绿色图标确认唯一新增的一步是在 RooCode 面板里把模型供应商的 Base URL 填成https://taotoken.net/apiKey 从 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 创建。配完按原文的测试流程复跑算 99 与 98 的和、列出 /home/xx/Documents。如果 MCP 那半边你已经配好只是卡在「工具列得出来却叫不动」可以直接跳到第 3 节。1. SumMCP.pyadd 与 listdir 的最小可跑实现1.1 在 ~/workspace/python/demo/mcp 下把文件建出来目录结构沿用原文别自己另起一套不然后面 mcp_setting.json 里的路径对不上cd ~/workspace/python/demo mkdir -p mcp cd mcp touch SumMCP.py为什么要单开一个 mcp 目录、单独一个 SumMCP.py因为 MCP Server 在 RooCode 眼里是一个独立进程RooCode 只是负责把它拉起来并通过标准输入输出对话。文件放哪儿、叫什么名字本身不影响功能但一旦多写几个 server命名和目录会决定你后面排查路径问题时是不是一头雾水。1.2 SumMCP.py 里两个 tool 的写法SumMCP.py一个只暴露 add / listdir 两个 tool 的本地 MCP Server from fastmcp import FastMCP import os mcp FastMCP(Demo, log_levelERROR) mcp.tool() def add(a: int, b: int) - int: Add two numbers返回 a 与 b 的和 print(add, a, b) return a b mcp.tool() def listdir(path: str) - list[str]: 列出给定目录下的条目名 return os.listdir(path) if __name__ __main__: # stdio 模式由 RooCode 拉起进程通过标准输入输出通信 mcp.run(transportstdio)几个细节值得说明。add(a: int, b: int) - int里的类型标注不是装饰FastMCP 会把它转成 JSON Schema模型就是靠这份 schema 决定怎么填参数标注写没了模型可能把 99 传成字符串。listdir返回list[str]结果会被序列化回对话流路径不对时返回的是异常信息这些都会进模型上下文。print(add, a, b)那行是给自己看的方便在 RooCode 的输出面板里确认 tool 真的被调用了、参数是什么。真要上线跑把它换成标准库的 logging 更合适print 在 stdio 模式下混进协议流有时候会干扰解析。1.3 transport 为什么选 stdio 而不是 sse原文注释里也留了transportsse那一行。简单说stdio 模式不需要端口RooCode 直接把进程拉起来通过管道说话本地小工具用这个最省心sse 模式适合把 server 放到另一台机器上、或者多个客户端共享一个 server 的场景代价是你得自己管端口占用和进程存活。这篇的场景是单机单插件就老实走 stdio。1.4 py_3.12 环境与 fastmcp 依赖conda create -n py_3.12 python3.12 source /opt/anaconda/bin/activate py_3.12 pip install fastmcp装完先手动验一次别急着去改插件~/.conda/envs/py_3.12/bin/fastmcp run ~/workspace/python/demo/mcp/SumMCP.pystdio 模式下它不会打印什么交互提示安静等着标准输入就是起来了CtrlC 退出。这一步不做等 RooCode 那边图标不亮时你会分不清是脚本本身有问题还是插件配置写错了。另外~/.conda/envs/py_3.12/bin/fastmcp这个路径是后面要原样填进 mcp_setting.json 的先ls一下确认它真的存在。2. mcp_setting.json 里把 demo server 指到 SumMCP.py2.1 command 与 args 的对应关系{ mcpServers: { demo: { command: ~/.conda/envs/py_3.12/bin/fastmcp, args: [ run, ~/workspace/python/demo/mcp/SumMCP.py ], disabled: false, alwaysAllow: [] } } }这段配置里只有四个字段在起作用。command指向 conda 环境里的 fastmcp 可执行文件不是python也不是python SumMCP.py。args是命令后面的参数数组第一个run是 fastmcp 的子命令第二个是脚本的完整路径。disabled设成 falseserver 才会被拉起来。alwaysAllow留空表示每次调用都要你确认一次调试阶段建议保持空数组等你确认这个 tool 完全可控了再考虑往里加白名单自动放行。如果路径里带空格或者 tilde 展开在某些系统上不生效就把command和args里的路径全写成绝对路径比如/home/xx/.conda/envs/py_3.12/bin/fastmcp。这类问题在 macOS 和 Linux 上表现不一样写死绝对路径最省事。2.2 绿色图标代表什么又不代表什么配置保存后回到 MCP Servers 面板demo 这一项前面会亮起绿色图标。它代表 RooCode 成功按command拉起了进程、完成了一次协议握手、并且拿到了 SumMCP.py 里声明的 tool 列表——在你这个例子里就是 add 和 listdir 两个。它不代表模型一定会调用这两个 tool。图标绿只是「管道通了」调用与否是模型侧的事这也是本篇后面要换模型通道的原因。2.3 加了第三个 tool 之后必须回面板刷新原文特意点了一句在 SumMCP.py 里新加函数一定要回 MCP 面板刷新新的 tool 才会出现插件用的时候才读得到。原因很直接——RooCode 持有的 tool 列表是握手那一刻的快照。你在脚本里加了echo进程还是那个老进程插件手里还是老清单。正确顺序是改 SumMCP.py → 保存 → 回 MCP Servers 面板点刷新重启 server→ 确认新 tool 出现在列表里 → 再回对话框提问。跳过刷新这一步你会看到「明明写了函数模型却说没有这个工具」这种假故障。3. RooCode 面板里换模型通道Provider 填 https://taotoken.net/api3.1 先在官网注册并创建 API Key原文里没有注册这一节因为原文跑的是插件自带的模型通道。这里补上打开 TaoToken注册登录后进控制台创建一把 API Key。这一步有两条硬性要求。第一Key 只创建一次、只复制一次粘到 RooCode 里就完事别顺手写进任何会被提交的文件。第二本篇后面所有出现 Key 的地方都写成占位符YOUR_API_KEY你实际填的是自己刚创建的那串。3.2 Base URL 写 https://taotoken.net/api结尾不要 /v1回到 RooCode 的模型配置面板找到 API Provider 那一栏选 OpenAI Compatible 这类选项然后Base URL填https://taotoken.net/apiAPI Key填YOUR_API_KEYModel填你从模型广场复制到的 ID三个容易踩的点。第一Base URL 结尾不要加/v1工具或 SDK 有可能自己再拼一层多写一次就是 404。第二不要把官网落地页填进 Base URL那是给人点的不是给程序请求的。第三不要在 Base URL 上挂任何查询参数通道地址就是干净的https://taotoken.net/api。这两个地址的分工记住一句话就行https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 用来注册、创建 Key、看模型广场、看用量https://taotoken.net/api用来填进工具里。3.3 模型 ID 以模型广场当时列表为准不要凭记忆写模型名也不要照搬任何博客里的 ID。打开 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end在模型广场里复制当前可用的那个 ID原样粘到 RooCode 的 Model 字段。为什么强调这一点因为 MCP 场景对模型的判断力要求比普通对话高它要在同一轮里读懂用户意图、从工具清单里挑一个、再按 schema 把参数填对。模型 ID 填错或填了个不存在的名字请求会直接失败模型能跑但工具调用能力弱表现就是「它宁可自己硬算也不调你的 tool」。这两类问题长得完全不一样先确认 ID 正确再谈别的。3.4 MCP 侧一个字都不用改换模型通道不等于换 MCP 配置。mcp_setting.json 里的command、args还是指向 py_3.12 的 fastmcp 和 SumMCP.pytransport还是 stdio。MCP Server 是跑在本机上的独立进程它跟模型走哪条通道没有耦合关系。常见误解是「换了模型供应商要重配 MCP」其实要重连的只是 RooCode 到模型那一侧。4. 复跑原文测试9998 与 /home/xx/Documents4.1 让 demo 的 add 算 99 与 98在 RooCode 对话框里输入使用 demo 工具计算 99 和 98 的和预期行为是这样的RooCode 弹出一个工具调用确认显示工具名add、参数a99、b98你点确认后返回197。如果模型直接回了 197 却没弹确认框说明它自己心算完了MCP 工具根本没进这轮决策。对照第 5 节排查。原文也提到过当前阶段经常需要明确告诉插件「用哪个 tool」所以提示词里点名demo和add不丢人是正常用法。4.2 用 listdir 列出 /home/xx/Documents使用 demo 的 listdir 工具列出 /home/xx/Documents 下的文件列表把/home/xx/Documents换成你机器上真实存在的目录。返回的是一串文件名os.listdir只列一层不递归。这一步能顺带验证两件事一是参数传递正确模型知道listdir需要一个path字符串二是本地进程确实被拉起来了、真的去读了文件系统。如果这里报路径不存在先确认目录拼写再确认跑 fastmcp 的进程有没有那个目录的读权限。4.3 加第三个 tool 再刷新验证整条链路想确认自己完全掌握了刷新机制可以往 SumMCP.py 里加一个最小的mcp.tool() def echo(text: str) - str: 原样返回传入的文本 return text保存文件回 MCP Servers 面板点刷新确认echo出现在工具列表里再在对话里让它 echo 一段字符串。这套流程跑顺说明「写 tool → 刷新 → 调用」的闭环是通的。4.4 这次测试跟原文的差别在哪原文的测试是纯 MCP 侧验证绿点亮、tool 列出、调用成功。本篇多了一层验证——同一轮对话里模型的意图判断和工具选择都要经过 TaoToken 这条通道完成。两次测试的提示词、期望返回值都一样唯一变化的是模型侧接口地址和 Key。这样你才好判断问题出在 MCP 配置还是模型通道。5. 绿点亮着但调用断在半路对照这几处5.1 模型不主动选 tool表现是绿点在、tool 列表也全但回答直接给结果不弹确认框。根因在上下文模型每轮都要读 tool schema 再做判断通道切换、模型 ID 不对、或者提示太模糊都会让它跳过这个动作。处理办法很实际先在提示里明确点名 tool 名确认链路是通的再逐步把提示写短观察模型从什么时候开始不再主动挑 tool。这个边界跟你选的模型强相关没有统一答案。5.2 换通道后报 401 或 404这两个错误码对应两处完全不同的配置。401基本是 Key 问题填的时候没替换成真 Key、粘的时候多带了空格、或者贴的还是仓库里的YOUR_API_KEY占位符。404基本是地址问题Base URL 结尾多写了/v1或者把官网落地页错填进了 Base URL。回去检查这一栏是不是干净的https://taotoken.net/api。对照一下https://taotoken.net/api/v1和https://taotoken.net/api是两个不同的地址前者会失败。5.3 绿点根本不亮这跟模型通道无关问题在 mcp_setting.json。逐项核对command的 fastmcp 路径是否存在、conda 环境名是不是py_3.12、args里 SumMCP.py 的路径对不对、disabled是不是 false。最快的定位方式还是在终端手动跑一次fastmcp run SumMCP.py终端能跑起来问题就在配置文件终端也跑不起来问题在脚本或环境。5.4 Key 和用量去哪里对换完通道、跑通测试之后如果发现某次调用没反应或者想确认这次工具调用有没有算进额度回 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 看调用记录和用量。这一步别省它能帮你区分「请求根本没发出去」和「发出去了但模型没调 tool」这两种截然不同的故障。6. 跑通之后回控制台对一下这次调用配置保存、9998 和列目录都试过之后先在 TaoToken 模型对话 里用同一把 Key 发一条测试消息确认模型 ID 和 Base URL 没填串——工具调用失败时这一步能立刻告诉你是通道的问题还是 MCP 的问题。如果准备长期用 RooCode 加自写 tool 写代码可以打开 Coding Plan 看套餐是否够用Key 在 控制台 API Keys 创建一个项目一把别混用。我自己跑下来最深的体会是MCP 的坑九成不在 Python 脚本里而在「谁来决定用哪个 tool」这件事上。绿点只是把管道接好了剩下那半程靠模型通道撑着。把 Base URL 和 Key 一次性配对比事后在对话里反复强调「请使用 demo 工具」要省事得多。等哪天模型能稳定自己挑 tool 了这套东西才算真正顺手。

相关新闻

STM32光笔定位:LED点阵同步采样与坐标解算实战

STM32光笔定位:LED点阵同步采样与坐标解算实战

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

2026/9/21 14:37:15 阅读更多 →
EM算法实战指南:从不完整数据到高斯混合模型落地

EM算法实战指南:从不完整数据到高斯混合模型落地

1. 为什么EM算法不是“黑箱”,而是你手头最趁手的“不完整数据修复扳手”我第一次在实验室跑EM算法时,手里的数据集缺了整整30%的标签——不是故意删的,是传感器采样故障导致的。当时导师只甩给我一句话:“用EM试试。”我翻遍《统…

2026/9/21 14:37:43 阅读更多 →
C#连接Access全攻略:OleDb参数化增删改查与高频报错排查

C#连接Access全攻略:OleDb参数化增删改查与高频报错排查

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

2026/9/21 14:37:26 阅读更多 →

最新新闻

电脑锁屏时间面试避坑指南,新手必懂的底层逻辑

电脑锁屏时间面试避坑指南,新手必懂的底层逻辑

电脑锁屏时间面试避坑指南,新手必懂的底层逻辑 面试被问到“电脑锁屏时间怎么设置”时,你是不是脑子里一片空白?别慌,这题看似简单,实则考察操作系统进程管理与安全机制。很多新手避坑失败,就栽在只知结果不知原理上。今天咱们把这事掰开了揉碎了讲透。…

2026/9/22 4:34:58 阅读更多 →
搞定强制进入qq空间,3个高频面试题直击项目痛点

搞定强制进入qq空间,3个高频面试题直击项目痛点

搞定强制进入qq空间,3个高频面试题直击项目痛点 很多后端同学刚学完 HTTP 协议和 Cookie 机制,能写出 requests 发请求的代码,但一到实际业务场景就卡壳。比如面试官突然问:“如果用户没登录,怎么强制跳转到 QQ…

2026/9/22 4:34:58 阅读更多 →
面试被问挂在盒子上性能优化? 3招搞定高频考点

面试被问挂在盒子上性能优化? 3招搞定高频考点

面试被问挂在盒子上性能优化? 3招搞定高频考点 面试现场,面试官抛出“挂在盒子上”这个概念,你脑子一片空白?别慌,这其实是前端工程化里最容易被忽视的性能优化陷阱。很多资深工程师都栽在这一步,因为大家往往只盯着业务逻辑,却忽略了组件挂载时的隐…

2026/9/22 4:34:57 阅读更多 →
面试被问淘宝产品上架逻辑懵了?一文搞懂核心流程与底层原理

面试被问淘宝产品上架逻辑懵了?一文搞懂核心流程与底层原理

面试被问淘宝产品上架逻辑懵了?一文搞懂核心流程与底层原理 上周刚结束一场大厂后端面试,面试官轻描淡写地甩出一句:“说说淘宝商品从创建到上架,后台到底发生了什么?”我愣了。脑子里瞬间一片空白,只能磕磕绊绊地答出“调用API”、“存数据库”这种…

2026/9/22 4:33:57 阅读更多 →
3天搭好设计管理系统避坑指南

3天搭好设计管理系统避坑指南

3天搭好设计管理系统避坑指南 配置环境就卡半天?依赖版本冲突、样式加载失败、组件状态不同步,这些坑我全踩过。这份避坑指南带你从零搭建一个轻量级设计管理系统,不整虚的,直接上手。 项目目标:别想太复杂,先跑通核心链路…

2026/9/22 4:33:57 阅读更多 →
数量英文完整示例:3个实战项目攻克翻译难题

数量英文完整示例:3个实战项目攻克翻译难题

数量英文完整示例:3个实战项目攻克翻译难题 看了一堆教程还是不会写项目?这是很多刚接触编程或自然语言处理(NLP)的朋友最真实的写照。你背熟了单词,理解了语法,但一旦要把“3个苹果”这种带有数量关系的英文文本转换成结构化数据,或者在电商系统…

2026/9/22 4:33:57 阅读更多 →

日新闻

3台商务办公笔记本实测:手写实现环境配置,告别卡半天

3台商务办公笔记本实测:手写实现环境配置,告别卡半天

3台商务办公笔记本实测:手写实现环境配置,告别卡半天 配置环境就卡半天?别怪机器慢,多半是你没选对工具链。在Java、Go或Python的项目现场, 手写实现…

2026/9/22 0:00:41 阅读更多 →
剑帝加点速查手册:3分钟搞懂核心逻辑

剑帝加点速查手册:3分钟搞懂核心逻辑

剑帝加点速查手册:3分钟搞懂核心逻辑 面试被问原理答不上来,是不是常态?别慌。很多开发者对着 GitHub 开源仓库里的代码发呆,看似简单实则暗藏玄机。今天这份【剑帝加点】速查手册,直接带你拆解核心实现,把面试必考的原理讲透。…

2026/9/22 0:00:41 阅读更多 →
手写实现图片压缩网站核心:搞定WebP转换与质量调优

手写实现图片压缩网站核心:搞定WebP转换与质量调优

手写实现图片压缩网站核心:搞定WebP转换与质量调优 复制来的代码跑不通不知道怎么调?别慌,这种“复制粘贴地狱”在开发圈太常见了。尤其是做 图片压缩网站…

2026/9/22 0:00:41 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/22 4:32:41 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/21 2:19:36 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/21 4:51:05 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/21 15:36:51 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/21 15:36:51 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/22 2:43:42 阅读更多 →