MCP 工具
MCP 工具為將模型上下文協議與 Spring AI 應用程式整合提供了基礎支援。這些工具實現了 Spring AI 工具系統與 MCP 伺服器之間的無縫通訊,支援同步和非同步操作。它們通常用於 MCP 客戶端和伺服器的程式設計配置和互動。如需更精簡的配置,請考慮使用 Boot Starter。
ToolCallback 工具
工具回調適配器
將 MCP 工具適配到 Spring AI 的工具介面,支援同步和非同步執行。
-
同步
-
非同步
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 工具。
-
同步
-
非同步
McpSyncClient mcpClient = // obtain MCP client
ToolCallbackProvider provider = new SyncMcpToolCallbackProvider(mcpClient);
// Get all available tools
ToolCallback[] tools = provider.getToolCallbacks();
適用於多個客戶端
List<McpSyncClient> clients = // obtain list of clients
List<ToolCallback> callbacks = SyncMcpToolCallbackProvider.syncToolCallbacks(clients);
用於動態選擇部分客戶端
@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();
適用於多個客戶端
List<McpAsyncClient> clients = // obtain list of clients
Flux<ToolCallback> callbacks = AsyncMcpToolCallbackProvider.asyncToolCallbacks(clients);
McpToolUtils
ToolCallbacks 到 ToolSpecifications
將 Spring AI 工具回撥轉換為 MCP 工具規範
-
同步
-
非同步
List<ToolCallback> toolCallbacks = // obtain tool callbacks
List<SyncToolSpecifications> syncToolSpecs = McpToolUtils.toSyncToolSpecifications(toolCallbacks);
然後您可以使用 `McpServer.SyncSpecification` 註冊工具規範
McpServer.SyncSpecification syncSpec = ...
syncSpec.tools(syncToolSpecs);
List<ToolCallback> toolCallbacks = // obtain tool callbacks
List<AsyncToolSpecification> asyncToolSpecifications = McpToolUtils.toAsyncToolSpecifications(toolCallbacks);
然後您可以使用 `McpServer.AsyncSpecification` 註冊工具規範
McpServer.AsyncSpecification asyncSpec = ...
asyncSpec.tools(asyncToolSpecifications);
MCP 客戶端到 ToolCallbacks
從 MCP 客戶端獲取工具回撥
-
同步
-
非同步
List<McpSyncClient> syncClients = // obtain sync clients
List<ToolCallback> syncCallbacks = McpToolUtils.getToolCallbacksFromSyncClients(syncClients);
List<McpAsyncClient> asyncClients = // obtain async clients
List<ToolCallback> asyncCallbacks = McpToolUtils.getToolCallbacksFromAsyncClients(asyncClients);