Package org.springframework.ai.mcp
Class AsyncMcpToolCallbackProvider
java.lang.Object
org.springframework.ai.mcp.AsyncMcpToolCallbackProvider
- All Implemented Interfaces:
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
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic final class
Builder forAsyncMcpToolCallbackProvider
configuration. -
Constructor Summary
ConstructorsConstructorDescriptionAsyncMcpToolCallbackProvider
(io.modelcontextprotocol.client.McpAsyncClient... mcpClients) Deprecated.AsyncMcpToolCallbackProvider
(List<io.modelcontextprotocol.client.McpAsyncClient> mcpClients) Deprecated.usebuilder()
insteadAsyncMcpToolCallbackProvider
(McpToolFilter toolFilter, io.modelcontextprotocol.client.McpAsyncClient... mcpClients) Deprecated.usebuilder()
insteadAsyncMcpToolCallbackProvider
(McpToolFilter toolFilter, List<io.modelcontextprotocol.client.McpAsyncClient> mcpClients) Deprecated.usebuilder()
instead -
Method Summary
Modifier and TypeMethodDescriptionstatic reactor.core.publisher.Flux<ToolCallback>
asyncToolCallbacks
(List<io.modelcontextprotocol.client.McpAsyncClient> mcpClients) Creates a reactive stream of tool callbacks from multiple MCP clients.builder()
Creates a builder for constructing provider instances.Discovers and returns all available tools from configured MCP servers.
-
Constructor Details
-
AsyncMcpToolCallbackProvider
@Deprecated public AsyncMcpToolCallbackProvider(McpToolFilter toolFilter, List<io.modelcontextprotocol.client.McpAsyncClient> mcpClients) Deprecated.usebuilder()
insteadCreates a provider with tool filtering.- Parameters:
toolFilter
- filter to apply to discovered toolsmcpClients
- MCP clients for tool discovery
-
AsyncMcpToolCallbackProvider
@Deprecated public AsyncMcpToolCallbackProvider(List<io.modelcontextprotocol.client.McpAsyncClient> mcpClients) Deprecated.usebuilder()
insteadCreates 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.usebuilder()
insteadCreates a provider with tool filtering.- Parameters:
toolFilter
- filter for discovered toolsmcpClients
- MCP clients for tool discovery
-
AsyncMcpToolCallbackProvider
@Deprecated public AsyncMcpToolCallbackProvider(io.modelcontextprotocol.client.McpAsyncClient... mcpClients) Deprecated.usebuilder()
insteadCreates a provider with default configuration.- Parameters:
mcpClients
- MCP clients for tool discovery
-
-
Method Details
-
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 interfaceToolCallbackProvider
- 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
Creates a builder for constructing provider instances.- Returns:
- new builder
-
builder()
instead