MCP Utilities
MCP工具为将模型上下文协议与Spring AI应用程序集成提供基础支持。这些工具实现了Spring AI工具系统与MCP服务器之间的无缝通信,支持同步和异步操作。它们通常用于程序化MCP客户端和服务器配置和交互。为了更简化的配置,请考虑使用boot启动器。
ToolCallback工具
工具回调适配器
将MCP工具适配为Spring AI的工具接口,支持同步和异步执行。
同步
McpSyncClient mcpClient = // 获取MCP客户端
Tool mcpTool = // 获取MCP工具定义
ToolCallback callback = new SyncMcpToolCallback(mcpClient, mcpTool);
// 通过Spring AI接口使用工具
ToolDefinition definition = callback.getToolDefinition();
String result = callback.call("{\"param\": \"value\"}");
异步
McpAsyncClient mcpClient = // 获取MCP客户端
Tool mcpTool = // 获取MCP工具定义
ToolCallback callback = new AsyncMcpToolCallback(mcpClient, mcpTool);
// 通过Spring AI接口使用工具
ToolDefinition definition = callback.getToolDefinition();
String result = callback.call("{\"param\": \"value\"}");
工具回调提供器
发现并提供来自MCP客户端的工具。
同步
McpSyncClient mcpClient = // 获取MCP客户端
ToolCallbackProvider provider = new SyncMcpToolCallbackProvider(mcpClient);
// 获取所有可用工具
ToolCallback[] tools = provider.getToolCallbacks();
对于多个客户端:
List<McpSyncClient> clients = // 获取客户端列表
List<ToolCallback> callbacks = SyncMcpToolCallbackProvider.syncToolCallbacks(clients);
对于客户端子集的动态选择:
@Autowired
private List<McpSyncClient> mcpSyncClients;
public ToolCallbackProvider buildProvider(Set<String> allowedServerNames) {
// 按server.name()过滤
List<McpSyncClient> selected = mcpSyncClients.stream()
.filter(c -> allowedServerNames.contains(c.getServerInfo().name()))
.toList();
return new SyncMcpToolCallbackProvider(selected);
}
异步
McpAsyncClient mcpClient = // 获取MCP客户端
ToolCallbackProvider provider = new AsyncMcpToolCallbackProvider(mcpClient);
// 获取所有可用工具
ToolCallback[] tools = provider.getToolCallbacks();
McpToolUtils
ToolCallbacks到工具规范
将Spring AI工具回调转换为MCP工具规范:
同步
List<ToolCallback> toolCallbacks = // 获取工具回调
List<SyncToolSpecifications> syncToolSpecs = McpToolUtils.toSyncToolSpecifications(toolCallbacks);
然后您可以使用McpServer.SyncSpecification来注册工具规范:
McpServer.SyncSpecification syncSpec = ...
syncSpec.tools(syncToolSpecs);
异步
List<ToolCallback> toolCallbacks = // 获取工具回调
List<AsyncToolSpecification> asyncToolSpecs = McpToolUtils.toAsyncToolSpecifications(toolCallbacks);
然后您可以使用McpServer.AsyncSpecification来注册工具规范:
McpServer.AsyncSpecification asyncSpec = ...
asyncSpec.tools(asyncToolSpecs);
MCP客户端到工具回调
从MCP客户端获取工具回调:
同步
List<McpSyncClient> syncClients = // 获取同步客户端
List<ToolCallback> syncCallbacks = McpToolUtils.getToolCallbacksFromSyncClients(syncClients);
异步
List<McpAsyncClient> asyncClients = // 获取异步客户端
List<ToolCallback> asyncCallbacks = McpToolUtils.getToolCallbacksFromAsyncClients(asyncClients);
原生镜像支持
McpHints类为MCP模式类提供GraalVM原生镜像提示。此类在构建原生镜像时自动注册所有必要的MCP模式类的反射提示。