MCP ユーティリティ
MCP ユーティリティは、モデルコンテキストプロトコルを Spring AI アプリケーションに統合するための基本的なサポートを提供します。これらのユーティリティにより、Spring AI のツールシステムと MCP サーバー間のシームレスな通信が可能になり、同期操作と非同期操作の両方がサポートされます。これらは通常、プログラムによる MCP クライアントとサーバーの構成と対話に使用されます。より合理化された構成のために、Boot スターターの使用を検討してください。
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);