MCP 实用工具 (MCP Utilities)
MCP 实用工具为将模型上下文协议 (Model Context Protocol) 与 Spring AI 应用程序集成提供了基础支持。这些实用工具实现了 Spring AI 工具系统与 MCP 服务器之间的无缝通信,支持同步和异步操作。它们通常用于编程式 MCP 客户端和服务器的配置及交互。如需更简化的配置,请考虑使用启动器 (boot starters)。
工具回调实用工具 (ToolCallback Utility)
工具回调适配器 (Tool Callback Adapter)
将 MCP 工具适配为 Spring AI 的工具接口,支持同步和异步执行。
同步 (Sync)
McpSyncClient mcpClient = // 获取 MCP 客户端
Tool mcpTool = // 获取 MCP 工具定义
ToolCallback callback = new SyncMcpToolCallback(mcpClient, mcpTool);
// 通过 Spring AI 接口使用工具
ToolDefinition definition = callback.getToolDefinition();
String result = callback.call("{\"param\": \"value\"}");
异步 (Async)
McpAsyncClient mcpClient = // 获取 MCP 客户端
Tool mcpTool = // 获取 MCP 工具定义
ToolCallback callback = new AsyncMcpToolCallback(mcpClient, mcpTool);
// 通过 Spring AI 接口使用工具
ToolDefinition definition = callback.getToolDefinition();
String result = callback.call("{\"param\": \"value\"}");
工具回调提供者 (Tool Callback Providers)
从 MCP 客户端发现并提供 MCP 工具。
同步 (Sync)
McpSyncClient mcpClient = // 获取 MCP 客户端
ToolCallbackProvider provider = new SyncMcpToolCallbackProvider(mcpClient);
// 获取所有可用工具
ToolCallback[] tools = provider.getToolCallbacks();
异步 (Async)
McpAsyncClient mcpClient = // 获取 MCP 客户端
ToolCallbackProvider provider = new AsyncMcpToolCallbackProvider(mcpClient);
// 获取所有可用工具
ToolCallback[] tools = provider.getToolCallbacks();
对于多个客户端:
List<McpAsyncClient> clients = // 获取客户端列表
Flux<ToolCallback> callbacks = AsyncMcpToolCallbackProvider.asyncToolCallbacks(clients);
McpToolUtils
ToolCallbacks 转 ToolSpecifications
将 Spring AI 工具回调转换为 MCP 工具规范:
同步 (Sync)
List<ToolCallback> toolCallbacks = // 获取工具回调
List<SyncToolSpecification> syncToolSpecifications = McpToolUtils.toSyncToolSpecifications(toolCallbacks);
异步 (Async)
List<ToolCallback> toolCallbacks = // 获取工具回调
List<AsyncToolSpecification> asyncToolSpecifications = McpToolUtils.toAsyncToolSpecifications(toolCallbacks);
然后您可以使用 McpServer.AsyncSpecification
注册工具规范:
McpServer.AsyncSpecification asyncSpec = ...
asyncSpec.tools(asyncToolSpecifications);
MCP 客户端转 ToolCallbacks
从 MCP 客户端获取工具回调
同步 (Sync)
List<McpSyncClient> syncClients = // 获取同步客户端
List<ToolCallback> syncCallbacks = McpToolUtils.getToolCallbacksFromSyncClients(syncClients);
异步 (Async)
List<McpAsyncClient> asyncClients = // 获取异步客户端
List<ToolCallback> asyncCallbacks = McpToolUtils.getToolCallbacksFromAsyncClients(asyncClients);
原生镜像支持 (Native Image Support)McpHints
类为 MCP 模式 (schema) 类提供 GraalVM 原生镜像提示 (hints)。在构建原生镜像时,此类会自动注册所有必要的 MCP 模式类的反射提示。
@ImportRuntimeHints(McpHints.class)
public class MyConfiguration { ... }
评论区