9.3 MCP Utilities

53 阅读2分钟

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模式类的反射提示。

其他资源