☰
Datawhale速通AI编程开发:Roo Code + DeepSeek 第4章 MCP 配置与 settings.json 骨架笔记
2026/9/28 20:00:08 网站建设 项目流程

1. 从一次「连接失败」说起:Roo Code 接上 DeepSeek 后,MCP 到底卡在哪

如果你跟着 Datawhale 速通 AI 编程开发教程走到第 4 章,大概率已经完成了 Roo Code 接入 DeepSeek 的模型配置,能正常对话、能改代码。但到了 MCP 这一节,很多人会突然卡住:明明main.py写好了,settings.json也照着填了,Roo Code 的 MCP 面板却一直转圈,或者点开就报Connection failed。

MCP 全称 Model Context Protocol,你可以把它理解成「给 AI 装外挂」的协议。Roo Code 本身只会聊天和读写文件,但通过 MCP,它可以调用你本地写的小服务——比如查数据库、跑脚本、读某个私有 API。DeepSeek 负责「想」,MCP 负责「做」,两者配合才能让 AI 编程从「给建议」变成「真动手」。

这一章的核心动作其实就三件事:写一个能被调用的 MCP 服务、在settings.json里声明它、然后验证 Roo Code 能不能连上。听起来简单,但坑几乎全在「路径」和「环境」上。下面我按可复制的顺序拆开讲,你跟着做就能在本地复现第 4 章流程。

2. 前置准备:TaoToken 与 Roo Code 的模型侧配置

在折腾 MCP 之前,先确认模型侧是通的。Roo Code 支持自定义 OpenAI 兼容接口,如果你用 TaoToken 作为模型接入层,配置会简单很多——它提供统一的 API 入口,DeepSeek 系列模型可以直接在模型对话里试跑。

你需要先拿到一个可用的 API Key。打开 TaoToken 的 API Keys 管理页(https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite),新建一个 Key 并复制。然后在 Roo Code 的设置里,把 Provider 选成 OpenAI Compatible,Base URL 填https://taotoken.net/api,模型名填你实际要用的 DeepSeek 模型标识。

这里有个容易忽略的点:Roo Code 的模型配置和 MCP 配置是两套独立的东西。模型通了不代表 MCP 能连,MCP 连上了也不代表模型会主动调用它。第 4 章的作业要求「通过与 AI 交互的方式部署一个 MCP 服务」,本质是让你先手动把服务跑起来,再让 Roo Code 通过 MCP 协议去调用它。

如果你还没配好模型,可以先到模型对话页(https://taotoken.net/chat?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite)确认 Key 能正常出结果,再回来做 MCP。接入文档在 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite,里面有 Base URL 和鉴权头的完整说明。

3. 可复制配置:settings.json 骨架与 MCP 服务声明

第 4 章最核心的交付物就是这段settings.json。Roo Code 的 MCP 配置入口在设置面板的 MCP Servers 区域,点开后可以直接编辑 JSON。骨架长这样:

{ "mcpServers": { "hello": { "command": "/绝对路径/到/虚拟环境/bin/python", "args": [ "/绝对路径/到/main.py" ], "cwd": "/绝对路径/到/项目目录" } } }

三个字段的含义必须分清,这是排障的关键:

字段作用常见错误
command用哪个解释器启动服务填了系统 python 而非虚拟环境的 python
args传给解释器的脚本路径用了相对路径,Roo Code 找不到文件
cwd服务工作目录省略后服务内相对路径读取失败

command一定要指向你创建虚拟环境时那个环境里的 python。比如你用 conda 建了roo环境,那路径通常是~/miniconda3/envs/roo/bin/python(macOS/Linux)或C:\Users\你\miniconda3\envs\roo\python.exe(Windows)。填系统默认 python 是最常见的翻车点——因为系统 python 里根本没装mcp包。

args和cwd都建议用绝对路径。相对路径在 Roo Code 启动子进程时,工作目录未必是你以为的那个,很容易出现「文件明明在,就是找不到」。

服务端代码可以直接用第 4 章给的main.py,它基于FastMCP注册了一个greet工具。关键结构是:用@self.server.tool()装饰器把函数暴露成工具,FastMCP 会自动从函数签名和 docstring 里提取参数说明。启动时调用self.server.run(),服务就会以 stdio 方式等待 Roo Code 连接。

写完代码后,先在终端手动验证服务能起来:

conda activate roo python /绝对路径/到/main.py

如果看到日志里打出「MCP服务启动中」和「等待连接」,说明服务本身没问题,问题就只剩 Roo Code 侧的配置了。

4. 逐项验证:启动检查、日志确认、调用回显

配置填完别急着点保存,按下面三步走,每步都有明确的成功信号。

第一步,启动检查。在 Roo Code 的 MCP 面板点「Retry Connection」。如果配置正确,服务名旁边会出现绿色状态点,或者显示已连接的工具数量。如果一直转圈,先回到终端确认服务能独立启动——终端能起、Roo Code 起不来,九成是command路径填错。

第二步,日志确认。Roo Code 的 MCP 面板通常有日志入口,点开能看到子进程的 stdout/stderr。成功连接时,你会看到服务端打印的启动日志。如果日志里出现ModuleNotFoundError: No module named 'mcp',说明command指向的 python 没装 mcp 包,回去检查虚拟环境路径。

第三步,调用回显。在 Roo Code 对话里让它调用hello服务的greet工具,比如输入「用 hello 服务跟 TaoToken 打个招呼」。模型会发起工具调用,服务端日志会打印「收到问候请求,name: TaoToken」和「返回结果: Hello TaoToken!」,对话里也会显示工具返回的内容。这三步全过,第 4 章的 MCP 环节就算跑通了。

如果你在验证模型调用时想单独测试工具回显,可以到模型对话页(https://taotoken.net/chat?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite)配合调试,确认模型侧和工具侧是两条独立的链路。

5. 本篇常见错排查:从 localhost 打不开到端口映射

第 4 章笔记里还提到一个高频问题:Roo Code 引导你装了 Node.js 后,让你运行code index.html && start http://localhost:5500,结果浏览器显示 localhost 打不开。这个报错和 MCP 本身无关,但同属「AI 让你跑命令,你不理解原理」的典型场景。

原因很简单:start http://localhost:5500只是让浏览器去访问 5500 端口,但没有任何服务在 5500 端口上监听。code index.html只是用编辑器打开文件,并没有启动服务器。所谓「映射」,就是把一个本地目录通过 HTTP 服务暴露到某个端口上。

正确做法是装一个轻量 HTTP 服务:

npm install -g http-server http-server -p 5500 -o

-p 5500指定端口,-o自动打开浏览器。这时 5500 端口才有真正的服务在跑,localhost 才能打开。

回到 MCP 场景,类似的「想当然」错误还有几个:

  • command填了python而不是绝对路径,Roo Code 在非交互环境下找不到 PATH 里的 python。
  • args里脚本路径带空格没加引号,被拆成多个参数。
  • 虚拟环境建了但没装mcp包,只装了fastmcp是不够的,from mcp.server.fastmcp import FastMCP依赖mcp主包。
  • 服务端代码里if __name__ == "__main__"写错缩进,导致run()根本没执行。

排查顺序建议固定为:终端能否独立启动 → 日志有无报错 → 路径是否绝对 → 包是否装全。按这个顺序走,基本不会绕远路。

6. 继续往下走:把 MCP 接进你的日常编码流

第 4 章的 MCP 配置只是起点。跑通hello服务后,你可以把同样的骨架套到真实场景:写一个读本地 SQLite 的服务、一个调内部 API 的服务、一个跑测试脚本的服务。settings.json的结构不变,只是mcpServers下多几个条目。

如果你打算长期用 Roo Code 做 Agent 式编码,建议把模型侧统一走 TaoToken 的 Coding Plan(https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite),这样模型调用和 MCP 工具调用分开管理,排障时能快速定位是模型没响应还是工具没连上。配置细节参考接入文档(https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite),里面有完整的 Base URL 和鉴权示例。

最后留一个我踩过的坑:改完settings.json后,Roo Code 有时不会自动重载 MCP 配置,需要手动点一次 Retry Connection,或者重启窗口。如果你确认路径和包都没问题但就是连不上,先重启再排查,能省不少时间。

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

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

立即咨询