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工具时,系统将执行以下流程:
初始化与校验
- 验证 MCP 中心服务的可用性
- 确认指定的服务器已存在且完成连接
- 验证待调用工具在目标服务器上已部署
- 基于工具的模式定义对入参进行校验
- 从服务器配置中提取超时时间设置(默认60秒)
执行与通信
- 系统选择适配的传输机制:
- 标准输入输出客户端传输:通过标准输入输出与本地进程通信
- 服务器发送事件客户端传输:通过服务器发送事件与 HTTP 服务器通信
- 发送携带有效服务器名称、工具名称和入参的请求
- 基于
@modelcontextprotocol/sdk开发包实现标准化通信交互 - 对请求执行过程进行追踪,并通过超时处理防止操作挂起
- 系统选择适配的传输机制:
响应处理
- 响应支持多种内容类型:
- 文本内容:纯文本格式的响应结果
- 图片内容:附带 MIME 类型信息的二进制图片数据
- 资源引用:用于访问服务器资源的统一资源标识符(与
access_mcp_resource工具联动)
- 系统检测
isError标识,判断是否需要执行错误处理逻辑 - 对结果进行格式化,适配 VJSP 界面的展示要求
- 响应支持多种内容类型:
资源与错误处理
- 采用弱引用设计模式,防止内存泄漏
- 通过连续错误计数器实现错误的追踪与管理
- 基于文件监听器监控服务器代码变更,触发自动重启
- 安全模型要求工具执行前需获得用户审批(已加入「始终允许」列表的工具除外)
安全与权限控制
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>