Lzh on GitHub

use_mcp_tool

use_mcp_tool 工具支持与由连接的 Model Context Protocol (MCP) 服务器提供的外部工具进行交互。它通过标准化协议以特定领域的功能扩展了 Roo 的能力。

use_mcp_tool 工具支持与由连接的 Model Context Protocol (MCP) 服务器提供的外部工具进行交互。它通过标准化协议以特定领域的功能扩展了 Roo 的能力。

参数

该工具接受以下参数:

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

功能

该工具允许 Roo 访问由外部 MCP 服务器提供的专业功能。每个 MCP 服务器都可以提供具有独特功能的多个工具,从而将 Roo 扩展到其内置功能之外。该系统根据模式验证参数、管理服务器连接并处理各种内容类型的响应(文本、图像、资源)。

使用时机

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

主要功能

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

局限性

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

服务器配置

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

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

工作原理

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

  1. 初始化和验证
  • 系统验证 MCP 中心是否可用。
  • 确认指定的服务器存在并已连接。
  • 验证服务器上是否存在所请求的工具。
  • 根据工具的模式定义验证参数。
  • 从服务器配置中提取超时设置(默认值:60 秒)。
  1. 执行和通信
  • 系统选择适当的传输机制:
    • StdioClientTransport:用于通过标准 I/O 与本地进程通信。
    • SSEClientTransport:用于通过 Server-Sent Events 与 HTTP 服务器通信。
    • StreamableHTTPClientTransport:用于通过 Streamable HTTP Events 与 HTTP 服务器通信。
  • 发送带有已验证的服务器名称、工具名称和参数的请求。
  • 通信使用 @modelcontextprotocol/sdk 库进行标准化交互。
  • 跟踪请求执行,并进行超时处理以防止操作挂起。
  1. 响应处理
  • 响应可以包含多种内容类型:
    • 文本内容:纯文本响应。
    • 图像内容:带有 MIME 类型信息的二进制图像数据。
    • 资源引用:用于访问服务器资源的 URI(与 access_mcp_resource 一起使用)。
  • 系统检查 isError 标志以确定是否需要错误处理。
  • 结果被格式化以便在 Roo 界面中显示。
  1. 资源和错误处理
  • 系统使用 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>