MCP 工具

本站(springdoc.cn)中的内容来源于 spring.io ,原始版权归属于 spring.io。由 springdoc.cn 进行翻译,整理。可供个人学习、研究,未经许可,不得进行任何转载、商用或与之相关的行为。 商标声明:Spring 是 Pivotal Software, Inc. 在美国以及其他国家的商标。

MCP 工具为 Model Context Protocol 与 Spring AI 应用的集成提供基础支持。这些工具实现 Spring AI 工具系统与 MCP 服务器间的无缝通信,同时支持同步和异步操作。通常用于以编程方式配置和交互 MCP 客户端及服务器。若需简化配置流程,建议使用 Boot Starter。

ToolCallback

ToolCallback Adapter

适配 MCP 工具至 Spring AI 工具接口,同时支持同步与异步执行模式。

  • Sync

  • Async

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\"}");

ToolCallback Provider

发现并提供来自 MCP 客户端的 MCP 工具。

  • Sync

  • Async

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

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

For multiple clients:

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

For multiple clients:

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

McpToolUtil

ToolCallbacks 转换为 ToolSpecifications

将 Spring AI 工具回调转换为 MCP 工具规范:

  • Sync

  • Async

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

then you can use the McpServer.SyncSpecification to register the tool specifications:

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

then you can use the McpServer.AsyncSpecification to register the tool specifications:

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

MCP Clients 转换为 ToolCallbacks

从 MCP 客户端获取工具回调。

  • Sync

  • Async

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 Schema 类提供 GraalVM 原生镜像提示。在构建原生镜像时,该类会自动注册 MCP Schema 类所需的所有反射提示。