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);

ネイティブイメージのサポート

McpHints クラスは、MCP スキーマクラス用の GraalVM ネイティブイメージヒントを提供します。このクラスは、ネイティブイメージを構築するときに、MCP スキーマクラスに必要なすべてのリフレクションヒントを自動的に登録します。