access_mcp_resource
了解 `access_mcp_resource` 工具如何从模型上下文协议服务器检索数据,以便为 Roo Code 任务提供额外上下文。
access_mcp_resource 工具从连接的模型上下文协议(MCP)服务器暴露的资源中检索数据。它允许 Roo 访问文件、API 响应、文档或系统信息,这些信息为任务提供了额外的上下文。
参数
该工具接受这些参数:
- server_name (必需):提供资源的 MCP 服务器名称
- uri (必需):标识要访问的特定资源的 URI
功能
该工具连接到 MCP 服务器并从其暴露的资源中获取数据。与执行操作的 use_mcp_tool 不同,此工具专门检索用作任务上下文的信息。
使用时机
- 当 Roo 需要来自外部系统的额外上下文时
- 当 Roo 需要从专业的 MCP 服务器访问特定领域的数据时
- 当 Roo 需要检索由 MCP 服务器托管的参考文档时
- 当 Roo 需要通过 MCP 集成来自外部 API 的实时数据时
主要功能
- 从 MCP 资源检索文本和图像数据
- 执行资源访问前需要用户批准
- 使用基于 URI 的寻址来精确标识资源
- 与模型上下文协议 SDK 集成
- 根据内容类型适当地显示资源内容
- 支持超时以实现可靠的网络操作
- 处理服务器连接状态(已连接、正在连接、已断开)
- 从连接的服务器发现可用资源
- 处理带有元数据的结构化响应数据
- 特殊处理图像内容以进行适当渲染
局限性
- 依赖于外部 MCP 服务器的可用性和连接状态
- 仅限于连接的服务器提供的资源
- 无法访问来自已禁用服务器的资源
- 网络问题可能影响可靠性和性能
- 资源访问受配置的超时限制
- URI 格式由特定的 MCP 服务器实现决定
- 不具备离线或缓存的资源访问能力
工作原理
调用 access_mcp_resource 工具时,它遵循此过程:
- 连接验证:
- 验证 MCP 中心是否可用并已初始化。
- 确认指定的服务器存在于连接列表中。
- 检查服务器是否已禁用(如果已禁用则返回错误)。
- 用户批准:
- 向用户呈现资源访问请求以供批准。
- 提供服务器名称和资源 URI 以供用户验证。
- 仅在用户批准资源访问后才继续。
- 资源请求:
- 使用模型上下文协议 SDK 与服务器通信。
- 通过 MCP 中心向服务器发出
resources/read请求。 - 应用配置的超时以防止在无响应的服务器上挂起。
- 响应处理:
- 接收带有元数据和内容数组的结构化响应。
- 处理文本内容以向用户显示。
- 特殊处理图像数据以进行适当显示。
- 将处理后的资源数据返回给 Roo,以用于当前任务。
资源类型
MCP 服务器可以提供两种主要类型的资源:
- 标准资源:
- 具有特定 URI 的固定资源。
- 具有定义的名称、描述和 MIME 类型。
- 无需参数即可直接访问。
- 通常代表静态数据或实时信息。
- 资源模板:
- 带有 URI 中占位符值的参数化资源。
- 允许根据提供的参数动态生成资源。
- 可以表示查询或数据的过滤视图。
- 更灵活,但需要额外的 URI 格式。
使用示例
- 在协助 API 开发时,Roo 会从 MCP 资源中检索端点规范,以确保正确实施。
- 在协助数据可视化时,Roo 会访问来自已连接的 MCP 服务器的当前数据样本。
- 在处理特定领域时,Roo 会检索技术文档以提供准确的指导。
- 在生成特定行业的代码时,Roo 会引用文档资源中的合规性要求。
访问当前天气数据:
<access_mcp_resource>
<server_name>weather-server</server_name>
<uri>weather://san-francisco/current</uri>
</access_mcp_resource>
检索 API 文档:
<access_mcp_resource>
<server_name>api-docs</server_name>
<uri>docs://payment-service/endpoints</uri>
</access_mcp_resource>
访问特定领域知识:
<access_mcp_resource>
<server_name>knowledge-base</server_name>
<uri>kb://medical/terminology/common</uri>
</access_mcp_resource>
获取系统配置:
<access_mcp_resource>
<server_name>infra-monitor</server_name>
<uri>config://production/database</uri>
</access_mcp_resource>