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);
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> asyncToolSpecificaitons = McpToolUtils.toAsyncToolSpecifications(toolCallbacks);
次に、McpServer.AsyncSpecification
を使用してツール仕様を登録します。
McpServer.AsyncSpecification asyncSpec = ...
asyncSpec.tools(asyncToolSpecificaitons);
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);