Class AsyncMcpToolCallbackProvider

java.lang.Object
org.springframework.ai.mcp.AsyncMcpToolCallbackProvider
All Implemented Interfaces:
ToolCallbackProvider

public class AsyncMcpToolCallbackProvider extends Object implements ToolCallbackProvider
Provides MCP tools asynchronously from multiple MCP servers as Spring AI tool callbacks.

Discovers and exposes tools from configured MCP servers, enabling their use within Spring AI applications. Supports filtering and custom naming strategies for tools.

Since:
1.0.0
Author:
Christian Tzolov, YunKui Lu
  • Constructor Details

    • AsyncMcpToolCallbackProvider

      @Deprecated public AsyncMcpToolCallbackProvider(McpToolFilter toolFilter, List<io.modelcontextprotocol.client.McpAsyncClient> mcpClients)
      Deprecated.
      use builder() instead
      Creates a provider with tool filtering.
      Parameters:
      toolFilter - filter to apply to discovered tools
      mcpClients - MCP clients for tool discovery
    • AsyncMcpToolCallbackProvider

      @Deprecated public AsyncMcpToolCallbackProvider(List<io.modelcontextprotocol.client.McpAsyncClient> mcpClients)
      Deprecated.
      use builder() instead
      Creates a provider with default configuration.
      Parameters:
      mcpClients - MCP clients for tool discovery
      Throws:
      IllegalArgumentException - if mcpClients is null
    • AsyncMcpToolCallbackProvider

      @Deprecated public AsyncMcpToolCallbackProvider(McpToolFilter toolFilter, io.modelcontextprotocol.client.McpAsyncClient... mcpClients)
      Deprecated.
      use builder() instead
      Creates a provider with tool filtering.
      Parameters:
      toolFilter - filter for discovered tools
      mcpClients - MCP clients for tool discovery
    • AsyncMcpToolCallbackProvider

      @Deprecated public AsyncMcpToolCallbackProvider(io.modelcontextprotocol.client.McpAsyncClient... mcpClients)
      Deprecated.
      use builder() instead
      Creates a provider with default configuration.
      Parameters:
      mcpClients - MCP clients for tool discovery
  • Method Details

    • getToolCallbacks

      public ToolCallback[] getToolCallbacks()
      Discovers and returns all available tools from configured MCP servers.

      Retrieves tools asynchronously from each server, creates callbacks, and validates uniqueness. Blocks until all tools are discovered.

      Specified by:
      getToolCallbacks in interface ToolCallbackProvider
      Returns:
      array of tool callbacks for discovered tools
      Throws:
      IllegalStateException - if duplicate tool names exist
    • asyncToolCallbacks

      public static reactor.core.publisher.Flux<ToolCallback> asyncToolCallbacks(List<io.modelcontextprotocol.client.McpAsyncClient> mcpClients)
      Creates a reactive stream of tool callbacks from multiple MCP clients.

      Provides fully reactive tool discovery suitable for non-blocking applications. Combines tools from all clients into a single stream with name conflict validation.

      Parameters:
      mcpClients - MCP clients for tool discovery
      Returns:
      Flux of tool callbacks from all clients
    • builder

      public static AsyncMcpToolCallbackProvider.Builder builder()
      Creates a builder for constructing provider instances.
      Returns:
      new builder