Skip to content

use_mcp_tool

use_mcp_tool 工具支持与已连接的模型上下文协议(Model Context Protocol,MCP)服务器所提供的外部工具进行交互。该工具通过标准化协议为 VJSP 拓展了领域专属的功能能力。

参数说明

本工具接收以下参数:

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

功能概述

本工具支持 VJSP 调用外部 MCP 服务器提供的专业功能。每台 MCP 服务器可提供多款具备独特能力的工具,突破 VJSP 原生功能的边界。系统会基于模式对入参进行校验,管理服务器连接,并处理多种内容类型的响应(文本、图片、资源)。

适用场景

  • 需使用核心工具未提供的专业功能时
  • 需执行领域专属操作时
  • 需与外部系统或服务集成时
  • 需对数据进行特定处理或分析时
  • 需通过标准化接口调用专有工具时

核心特性

  • 基于@modelcontextprotocol/sdk开发包,采用标准化 MCP 协议
  • 支持多种传输机制(标准输入输出客户端传输、服务器发送事件客户端传输)
  • 基于 Zod 模式校验框架,在客户端和服务端双向校验入参
  • 支持处理多种响应内容类型:文本、图片、资源引用
  • 支持服务器生命周期管理,服务器代码变更时自动重启
  • 提供「始终允许」机制,可跳过可信工具的执行审批流程
  • 与配套的access_mcp_resource工具联动,实现资源检索
  • 对失败操作进行完善的错误追踪与处理
  • 支持可配置超时时间(1-3600秒,默认60秒)
  • 支持文件监听器,自动检测服务器代码变更并触发重载

局限性

  • 依赖可用且已完成连接的外部 MCP 服务器
  • 仅能调用已连接服务器所提供的工具
  • 不同 MCP 服务器的工具能力存在差异
  • 网络问题会影响服务的可靠性与性能
  • 工具执行前需用户审批(已加入「始终允许」列表的工具除外)
  • 不支持同时执行多个 MCP 工具操作

服务器配置

MCP 服务器支持全局配置和项目级配置两种方式:

  • 全局配置:通过 VS Code 中的 VJSP 拓展设置进行管理,配置对所有项目生效,可被项目级配置覆盖。
  • 项目级配置:在项目根目录的.vjsp/mcp.json文件中定义,支持为特定项目配置专属服务器。
  • 若全局配置与项目级配置存在同名服务器,项目级配置优先级更高。
  • .vjsp/mcp.json文件可提交至版本控制系统,便于团队共享配置。

工作流程

调用use_mcp_tool工具时,系统将执行以下流程:

  1. 初始化与校验

    • 验证 MCP 中心服务的可用性
    • 确认指定的服务器已存在且完成连接
    • 验证待调用工具在目标服务器上已部署
    • 基于工具的模式定义对入参进行校验
    • 从服务器配置中提取超时时间设置(默认60秒)
  2. 执行与通信

    • 系统选择适配的传输机制:
      • 标准输入输出客户端传输:通过标准输入输出与本地进程通信
      • 服务器发送事件客户端传输:通过服务器发送事件与 HTTP 服务器通信
    • 发送携带有效服务器名称、工具名称和入参的请求
    • 基于@modelcontextprotocol/sdk开发包实现标准化通信交互
    • 对请求执行过程进行追踪,并通过超时处理防止操作挂起
  3. 响应处理

    • 响应支持多种内容类型:
      • 文本内容:纯文本格式的响应结果
      • 图片内容:附带 MIME 类型信息的二进制图片数据
      • 资源引用:用于访问服务器资源的统一资源标识符(与access_mcp_resource工具联动)
    • 系统检测isError标识,判断是否需要执行错误处理逻辑
    • 对结果进行格式化,适配 VJSP 界面的展示要求
  4. 资源与错误处理

    • 采用弱引用设计模式,防止内存泄漏
    • 通过连续错误计数器实现错误的追踪与管理
    • 基于文件监听器监控服务器代码变更,触发自动重启
    • 安全模型要求工具执行前需获得用户审批(已加入「始终允许」列表的工具除外)

安全与权限控制

MCP 架构提供多项安全特性:

  • 工具执行前默认需获得用户审批
  • 可将指定工具标记为「始终允许」,实现自动审批执行
  • 通过Zod模式校验服务器配置,保障配置完整性
  • 支持可配置超时时间,防止操作挂起(1-3600秒)
  • 可通过可视化界面启用或禁用服务器连接

典型应用示例

  • 借助服务端处理工具,分析专业数据格式
  • 通过部署在外部服务器的AI模型,生成图片或其他媒体资源
  • 无需本地实现,直接执行复杂的领域专属计算
  • 通过受控接口访问专有应用程序编程接口或服务
  • 从专业数据库或数据源中检索数据

用法示例

调用工具获取文本格式的天气预报数据

<use_mcp_tool>
<server_name>weather-server</server_name>
<tool_name>get_forecast</tool_name>
<arguments>
{
  "city": "旧金山",
  "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": "一座拥有飞行汽车的未来城市",
  "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>