Package org.springframework.ai.mcp
Class AsyncMcpToolCallbackProvider
java.lang.Object
org.springframework.ai.mcp.AsyncMcpToolCallbackProvider
- All Implemented Interfaces:
EventListener,ToolCallbackProvider,org.springframework.context.ApplicationListener<McpToolsChangedEvent>
public class AsyncMcpToolCallbackProvider
extends Object
implements ToolCallbackProvider, org.springframework.context.ApplicationListener<McpToolsChangedEvent>
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 classBuilder forAsyncMcpToolCallbackProviderconfiguration. -
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.voidInvalidates the cached tool callbacks, forcing re-discovery on next request.voidMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.springframework.context.ApplicationListener
supportsAsyncExecution
-
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:
getToolCallbacksin interfaceToolCallbackProvider- Returns:
- array of tool callbacks for discovered tools
- Throws:
IllegalStateException- if duplicate tool names exist
-
invalidateCache
public void invalidateCache()Invalidates the cached tool callbacks, forcing re-discovery on next request. -
onApplicationEvent
- Specified by:
onApplicationEventin interfaceorg.springframework.context.ApplicationListener<McpToolsChangedEvent>
-
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