Skip to main content

use_mcp_tool

use_mcp_tool工具支持与连接的模型上下文协议(MCP)服务器提供的外部工具交互。它通过标准化协议扩展了Roo的领域特定功能。


参数

该工具接受以下参数:

  • server_name (必需): 提供工具的MCP服务器名称
  • tool_name (必需): 要执行的工具名称
  • arguments (必需/可选): 包含工具输入参数的JSON对象,遵循工具的输入模式。对于不需要输入的工具可能是可选的

功能说明

该工具通过标准化协议与外部MCP服务器交互,执行以下关键操作:

  1. 工具发现与验证

    • 自动发现已连接的MCP服务器
    • 验证服务器提供的工具列表和功能描述
    • 检查工具参数模式是否符合预期
  2. 参数处理

    • 使用Zod模式严格验证输入参数
    • 自动转换参数类型确保兼容性
    • 处理可选参数和默认值
  3. 执行流程

    • 通过最佳可用传输机制(Stdio/SSE/HTTP)与服务器通信
    • 管理执行超时(默认60秒,可配置1-3600秒)
    • 处理中断和重试逻辑
  4. 响应处理

    • 支持多种响应类型:文本、图像、资源引用
    • 自动解析和格式化响应内容
    • 处理错误响应和异常情况
  5. 资源管理

    • 使用WeakRef防止内存泄漏
    • 自动清理未使用的资源
    • 跟踪和管理服务器连接状态

使用场景

  • 需要核心工具不可用的专用功能时
  • 需要领域特定操作时
  • 需要与外部系统或服务集成时
  • 处理需要特定处理或分析的数据时
  • 通过标准化接口访问专有工具时

主要特性

  • 使用@modelcontextprotocol/sdk库的标准化MCP协议
  • 支持多种传输机制(StdioClientTransport、StreamableHTTPClientTransport和SSEClientTransport)
  • 使用Zod模式验证在客户端和服务器端验证参数
  • 处理多种响应内容类型:文本、图像和资源引用
  • 通过自动重启管理服务器生命周期(当服务器代码更改时)
  • 提供"始终允许"机制绕过可信工具的审批
  • 与配套的access_mcp_resource工具配合使用获取资源
  • 维护适当的错误跟踪和处理失败操作
  • 支持可配置超时(1-3600秒,默认:60秒)
  • 允许文件监视器自动检测和重新加载服务器更改

限制

  • 依赖外部MCP服务器的可用性和连接
  • 仅限于连接服务器提供的工具
  • 不同MCP服务器的工具能力不同
  • 网络问题可能影响可靠性和性能
  • 执行前需要用户批准(除非在"始终允许"列表中)
  • 不能同时执行多个MCP工具操作

服务器配置

MCP服务器可以在全局或项目级别配置:

  • 全局配置: 通过VS Code中的itBuilder扩展设置管理。这些设置适用于所有项目,除非被覆盖。
  • 项目级配置: 在项目根目录的.roo/mcp.json文件中定义。
    • 这允许项目特定的服务器设置。
    • 项目级服务器优先于同名的全局服务器。
    • 由于.roo/mcp.json可以提交到版本控制,它简化了与团队共享配置。

工作原理

当调用use_mcp_tool工具时,它遵循以下流程:

  1. 初始化和验证

    • 系统验证MCP hub是否可用
    • 确认指定的服务器存在并已连接
    • 验证请求的工具在服务器上存在
    • 根据工具的模式定义验证参数
    • 从服务器配置中提取超时设置(默认:60秒)
  2. 执行和通信

    • 系统选择合适的传输机制:
      • StdioClientTransport: 通过标准I/O与本地进程通信
      • SSEClientTransport: 通过服务器发送事件与HTTP服务器通信
      • StreamableHTTPClientTransport: 通过可流式HTTP事件与HTTP服务器通信
    • 发送带有验证过的服务器名称、工具名称和参数的请求
    • 通信使用@modelcontextprotocol/sdk库进行标准化交互
    • 请求执行通过超时处理跟踪以防止挂起操作
  3. 响应处理

    • 响应可以包括多种内容类型:
      • 文本内容: 纯文本响应
      • 图像内容: 带有MIME类型信息的二进制图像数据
      • 资源引用: 访问服务器资源的URI(与access_mcp_resource配合使用)
    • 系统检查isError标志以确定是否需要错误处理
    • 结果格式化为在Roo界面中显示
  4. 资源和错误处理

    • 系统使用WeakRef模式防止内存泄漏
    • 连续错误计数器跟踪和管理错误
    • 文件监视器监控服务器代码更改并触发自动重启
    • 安全模型要求工具执行前获得批准(除非在"始终允许"列表中)

安全和权限

MCP架构提供多项安全功能:

  • 用户必须在执行前批准工具使用(默认)
  • 特定工具可以标记为"始终允许"列表中的自动批准
  • 服务器配置通过Zod模式验证确保完整性
  • 可配置超时防止挂起操作(1-3600秒)
  • 可以通过UI启用或禁用服务器连接

使用示例

  • 使用服务器端处理工具分析专用数据格式
  • 通过托管在外部服务器上的AI模型生成图像或其他媒体
  • 执行复杂的领域特定计算而无需本地实现
  • 通过受控接口访问专有API或服务
  • 从专用数据库或数据源检索数据

用法示例

请求带有文本响应的天气预报数据:

<use_mcp_tool>
<server_name>weather-server</server_name>
<tool_name>get_forecast</tool_name>
<arguments>
{
"city": "San Francisco",
"days": 5,
"format": "text"
}
</arguments>
</use_mcp_tool>

使用返回JSON的专用工具分析源代码:

<use_mcp_tool>
<server_name>code-analysis</server_name>
<tool_name>complexity_metrics</tool_name>
<arguments>
{
"language": "typescript",
"file_path": "src/app.ts",
"include_functions": true,
"metrics": ["cyclomatic", "cognitive"]
}
</arguments>
</use_mcp_tool>

使用特定参数生成图像:

<use_mcp_tool>
<server_name>image-generation</server_name>
<tool_name>create_image</tool_name>
<arguments>
{
"prompt": "A futuristic city with flying cars",
"style": "photorealistic",
"dimensions": {
"width": 1024,
"height": 768
},
"format": "webp"
}
</arguments>
</use_mcp_tool>

通过返回资源引用的工具访问资源:

<use_mcp_tool>
<server_name>database-connector</server_name>
<tool_name>query_and_store</tool_name>
<arguments>
{
"database": "users",
"type": "select",
"fields": ["name", "email", "last_login"],
"where": {
"status": "active"
},
"store_as": "active_users"
}
</arguments>
</use_mcp_tool>

不需要参数的工具:

<use_mcp_tool>
<server_name>system-monitor</server_name>
<tool_name>get_current_status</tool_name>
<arguments>
{}
</arguments>
</use_mcp_tool>