「速通AI编程开发」共学(四):使用Roo Code思考总结和MCP服务使用
一、共学课程来源
Datawhale通过开源学习模式,助力AI学习者与知识连接,与人连接,与场景连接,推动AI人才培养。
「速通AI编程开发」的课程地址为:https://www.datawhale.cn/learn/summary/102
学习初衷
希望通过共学,能速通AI编程开发,熟悉全流程,与各位大佬共同进步!
二、Roo Code问题答疑后的思考总结
编程软件对比
对应软件 | RooCode | Cursor | Trae | Windsurf |
---|---|---|---|---|
价格 | 免费 | 新用户14天免费试用,Pro用户20美元/月 | 目前免费 | Pro用户15美元/月 |
是否支持调用第三方API | 支持 | ask模式支持第三方api,agents模式需要Pro/Bussiness订阅才能支持 | 支持。但仅支持部分第三方API服务商(Anthropic、Deep Seek、火山引擎、硅基流动、阿里云和腾讯云) | 不支持 |
火山引擎模型配置
API Key管理页面
https://console.volcengine.com/ark/region:ark+cn-beijing/apiKey?apikey=%7B%7D
点击【创建API Key】,输入自定义名称,点击【创建】。
开通想接入的模型
点击【开通管理】,选择自己想接入的模型,点击【开通服务】。
有代金券的可以勾选使用代金券,然后勾选我同意,点击【立即开通】。
点击【去控制台】。
导入Roo Code调用
- API Provider选择
OpenAI Compatible
- Base URL:
https://ark.cn-beijing.volces.com/api/v3
- API key:刚新建的API key
- Model:自己开通的模型ID
使用公开的推理接入点
在【开通管理】中点击刚刚开通的模型,并复制Model ID
将Model ID粘贴到Roo Code的Model中。
使用自定义推理接入点
打开模型推理-->在线推理,点击自定义推理接入点–>创建推理接入点。
填写接入点名称、描述、选择自己刚才开通的模型、点击确认接入。
如果选了微开通的模型,会提示:该模型未开通,开通后可创建推理接入点。
接入完后,此页面的ID即为Model ID。粘贴到Roo Code的Model中。
选择 API Key 并复制
选择已有API Key或创建新的API Key
配置临时环境变量,如图是Mac系统的配置命令,其他系统配置命令详见火山引擎官方文档
export ARK_API_KEY="YOUR_API_KEY" //将<ARK_API_KEY>替换为您的方舟 API Key
echo $ARK_API_KEY //执行该命令,验证该环境变量是否生效
Roo Code提示词输出语言修改(中文)
目前Roo Code最新版本取消了语言修改的设置,只需要将vscode界面设置为中文即可输出中文。
在扩展中安装中文语言包插件,重启VS Code,Roo Code的提示词输出就变成中文啦~
大模型陷入循环
无法解决报错/只思考不干活
Roo Code陷入循环,点击cancel(取消任务)
然后重新输入修复报错的指令,即新建一个任务执行。
遇到的报错及解决方案
问题:
Roo is having trouble…
Roo Code uses complex prompts and iterative task execution that may be challenging for less capable models.
For best results, it’s recommended to use Claude 3.7 Sonnet for its advanced agentic coding capabilities.
解决:
点击Proceed Anyways,同时确保勾选Auto- approve下的Retry failed requests开启
配置/打开快捷键
以配置【终端】快捷键为例
输入顺手的快捷键即可
三、MCP服务介绍
MCP(Model Context Protocol)是模型上下文协议,是一种标准化协议,用于连接AI智能体与各种外部工具和数据源,一种专为AI应用而设计的“USB-C端口”。
以上图片来自https://articles.zsxq.com/id_1lerlgix46p8.html
在Roo Code中:MCP是一种允许Roo Code与本地运行的MCP服务器进行通信的协议。这些服务器提供额外的工具和资源,可以显著扩展Roo Code的功能。通过MCP服务,可以实现:
- 功能扩展:添加Roo Code原生不支持的新功能
- 数据整合:将外部数据源与Roo Code连接
- 自定义工具:创建适合特定工作流程的专用工具
MCP服务的工作原理
引用场景:用户要通过外部程序向其他人打招呼。
- 服务注册:用户在本地启动MCP服务器,并在Roo Code中注册向其他人打招呼的服务,这个步骤是同时进行的;
- 功能暴露:MCP服务器向Roo Code暴露一系列工具和功能;
- 用户请求: 用户向大语言模型发送一个请求,如:“请向学习者打招呼”;
- 模型判断:大语言模型分析用户请求,判断它是否需要外部工具。 如果需要,如需要向学习者打招呼,它会生成一个包含工具名称和参数的JSON 对象;
- 工具调用:Roo Code 接收到这个JSON 对象,并调用相应的工具;
- 工具响应 :工具执行操作,并将结果返回给Roo Code。 例如,打招呼 API 返回确认执行的信息;
- 模型响应: Roo Code利用工具返回的信息,生成最终的、用户友好的回复。 如:“Hello 学习者!”
整个过程如下图所示:
MCP服务实际上是一个遵循特定协议的服务器,它与Roo Code进行通信,提供各种功能接口。
MCP与传统API对比
以上图片来自https://articles.zsxq.com/id_1lerlgix46p8.html
使用python创建一个MCP服务
准备工作
通常会使用Node.js或Python来构建服务。在开始前请确保:
- 已安装Node.js或Python
- 了解基本的HTTP服务器概念
- 有一定的JavaScript或Python编程经验
我们这里演示使用python创建一个简单的mcp服务,功能是用于打招呼。
使用Python创建简单的MCP服务
首先创建一个新的项目文件夹,并安装MCP:
mkdir python-mcp-server
cd python-mcp-server
pip install mcp
创建一个main.py文件,内容如下:
# 导入必要的模块
import logging
from mcp.server.fastmcp import FastMCP
# 设置日志配置
logging.basicConfig(
level=logging.INFO, format="%(asctime)s - %(name)s - %(levelname)s - %(message)s"
)
logger = logging.getLogger(__name__)
class HelloService:
"""一个简单的 MCP 问候服务
这个服务提供一个基础的问候工具,可以根据提供的名字返回问候语。
它展示了如何创建一个基本的 MCP 服务器并注册工具。
"""
def __init__(self):
# 创建一个 FastMCP 服务器实例
# FastMCP 是 MCP 的高级抽象,它简化了服务器的创建和管理
self.server = FastMCP("hello-service")
# 使用装饰器注册工具
# FastMCP 会自动从函数签名和文档字符串中提取工具的描述和参数信息
@self.server.tool()
async def greet(name: str = "World") -> str:
"""基础问候服务
Args:
name (str): 要问候的名字,默认为 "World"
Returns:
str: 问候语
"""
logger.info(f"收到问候请求,name: {name}")
result = f"Hello {name}!"
logger.info(f"返回结果: {result}")
return result
def run(self):
"""运行服务器
这个方法启动 MCP 服务器并处理来自客户端的请求。
服务器会一直运行,直到发生错误或被手动停止。
"""
try:
logger.info("✅ MCP服务启动中...")
logger.info("服务名称: hello-service")
logger.info("等待连接...")
# FastMCP 的 run 方法会自动处理:
# - 服务器初始化
# - 连接管理
# - 请求处理
# - 错误处理
self.server.run()
except Exception as e:
logger.error(f"❌ 服务异常: {str(e)}")
raise
if __name__ == "__main__":
# 创建服务实例并运行
service = HelloService()
service.run()
运行服务器:
python3 main.py
至此,这个Python版本的MCP服务提供了一个简单的打招呼工具。
添加MCP服务
添加现有的MCP服务:
点击Roo Code菜单栏中的"MCP Servers",启用"Enable MCP Servers"和"Enable MCP Server Creation"。
点击"编辑MCP设置(Edit MCP Settings)",会出现一个cline_mcp_settings.json文件
编辑cline_mcp_settings.json文件(由于json中不允许出现注释,所以在实际编辑文件中,请去掉注释//):
{
"mcpServers": {
"hello-service": // 添加的mcp服务名称
{
"command": "/Users/xxx/bin/python", // 由于mcp服务调用python运行,这里添加python的绝对路径
"args": [
"/Users/xxx/main.py"
], // mcp服务的main.py的绝对路径
"cwd": "/Users/xxx" // mcp服务项目的绝对路径
}
}
}
保存后cline_mcp_settings.json文件,Roo Code会自动连接并启用该服务。
出现红框里的提示,证明MCP服务添加并连接成功。
在Roo Code调用MCP服务
回到Roo Code主界面,确保Auto-approve选项里“Use MCP Servers”选项开启.可以输入一下提示词进行测试:
向学习者打招呼
Roo Code会要求你调用已经链接的MCP服务器,并且成功响应。
MCP服务的未来发展
目前MCP服务潜力尚未完全开发,随着MCP协议的不断发展,我们可以期待:
- 更丰富的协议特性:支持更复杂的交互模式和数据类型
- 社区驱动的服务生态:更多开源MCP服务的出现
- 专业领域服务:针对特定行业和领域的专业MCP服务
- 服务集成平台:简化MCP服务的发现、部署和管理的平台
四、总结
本次共学的课程将告一段落,但课程内容太干了,学习过程中踉踉跄跄,仍需继续学习和实践。感谢这段时间课程作者安老师的答疑和各位助教的督促!
MCP服务为Roo Code提供了强大的扩展能力,使其能够连接到外部数据源和工具。通过创建自定义MCP服务,我们可以根据自己的需求和工作流程定制Roo Code的能力,从而更高效地完成各种任务。
无论是简单的工具扩展,还是复杂的数据整合和分析,MCP服务都为AI辅助编程提供了无限可能。随着对MCP服务的熟悉和深入理解,希望我们能创建越来越强大的工具来增强AI编程体验。道阻且长,行则将至。
五、MCP学习资料分享
MCP官方项目
MCP文档
精选MCP服务器
适合初学者的MCP资源站(包含Server、Client资源及案例分享等)
AI编程萌新必看:从0到1写一个 MCP服务,附优秀MCP导航站,复制粘贴就能用
MCP技术科普
【精选】 MCP 科普资料——IMA共享知识库