此版本仍在开发中,尚不被认为是稳定的。对于最新的快照版本,请使用 Spring AI 1.0.1spring-doc.cadn.net.cn

MCP 实用程序

MCP 实用程序为将模型上下文协议与 Spring AI 应用程序集成提供了基础支持。 这些实用程序可实现 Spring AI 的工具系统和 MCP 服务器之间的无缝通信,支持同步和异步作。 它们通常用于编程 MCP 客户端和服务器配置和交互。 要获得更简化的配置,请考虑使用Starters。spring-doc.cadn.net.cn

ToolCallback 实用程序

工具回调适配器

使 MCP 工具适应 Spring AI 的工具界面,并支持同步和异步执行。spring-doc.cadn.net.cn

McpSyncClient mcpClient = // obtain MCP client
Tool mcpTool = // obtain MCP tool definition
ToolCallback callback = new SyncMcpToolCallback(mcpClient, mcpTool);

// Use the tool through Spring AI's interfaces
ToolDefinition definition = callback.getToolDefinition();
String result = callback.call("{\"param\": \"value\"}");
McpAsyncClient mcpClient = // obtain MCP client
Tool mcpTool = // obtain MCP tool definition
ToolCallback callback = new AsyncMcpToolCallback(mcpClient, mcpTool);

// Use the tool through Spring AI's interfaces
ToolDefinition definition = callback.getToolDefinition();
String result = callback.call("{\"param\": \"value\"}");

工具回调提供程序

从 MCP 客户端发现并提供 MCP 工具。spring-doc.cadn.net.cn

McpSyncClient mcpClient = // obtain MCP client
ToolCallbackProvider provider = new SyncMcpToolCallbackProvider(mcpClient);

// Get all available tools
ToolCallback[] tools = provider.getToolCallbacks();

对于多个客户端:spring-doc.cadn.net.cn

List<McpSyncClient> clients = // obtain list of clients
List<ToolCallback> callbacks = SyncMcpToolCallbackProvider.syncToolCallbacks(clients);

用于动态选择客户端子集spring-doc.cadn.net.cn

@Autowired
private List<McpSyncClient> mcpSyncClients;

public ToolCallbackProvider buildProvider(Set<String> allowedServerNames) {
    // Filter by server.name().
    List<McpSyncClient> selected = mcpSyncClients.stream()
        .filter(c -> allowedServerNames.contains(c.getServerInfo().name()))
        .toList();

    return new SyncMcpToolCallbackProvider(selected);
}
McpAsyncClient mcpClient = // obtain MCP client
ToolCallbackProvider provider = new AsyncMcpToolCallbackProvider(mcpClient);

// Get all available tools
ToolCallback[] tools = provider.getToolCallbacks();

对于多个客户端:spring-doc.cadn.net.cn

List<McpAsyncClient> clients = // obtain list of clients
Flux<ToolCallback> callbacks = AsyncMcpToolCallbackProvider.asyncToolCallbacks(clients);

Mcp工具实用程序

ToolCallbacks 到 ToolSpecifications

将 Spring AI 工具回调转换为 MCP 工具规范:spring-doc.cadn.net.cn

List<ToolCallback> toolCallbacks = // obtain tool callbacks
List<SyncToolSpecifications> syncToolSpecs = McpToolUtils.toSyncToolSpecifications(toolCallbacks);

然后你可以使用McpServer.SyncSpecification要注册工具规格:spring-doc.cadn.net.cn

McpServer.SyncSpecification syncSpec = ...
syncSpec.tools(syncToolSpecs);
List<ToolCallback> toolCallbacks = // obtain tool callbacks
List<AsyncToolSpecification> asyncToolSpecifications = McpToolUtils.toAsyncToolSpecifications(toolCallbacks);

然后你可以使用McpServer.AsyncSpecification要注册工具规格:spring-doc.cadn.net.cn

McpServer.AsyncSpecification asyncSpec = ...
asyncSpec.tools(asyncToolSpecifications);

MCP 客户端到 ToolCallbacks

从 MCP 客户端获取工具回调spring-doc.cadn.net.cn

List<McpSyncClient> syncClients = // obtain sync clients
List<ToolCallback> syncCallbacks = McpToolUtils.getToolCallbacksFromSyncClients(syncClients);
List<McpAsyncClient> asyncClients = // obtain async clients
List<ToolCallback> asyncCallbacks = McpToolUtils.getToolCallbacksFromAsyncClients(asyncClients);

原生图像支持

McpHintsclass 为 MCP 模式类提供 GraalVM 本机镜像提示。 在构建本机映像时,此类会自动为 MCP 模式类注册所有必要的反射提示。spring-doc.cadn.net.cn