Package org.springframework.ai.mcp
Class SyncMcpToolCallbackProvider
java.lang.Object
org.springframework.ai.mcp.SyncMcpToolCallbackProvider
- All Implemented Interfaces:
ToolCallbackProvider
Implementation of
ToolCallbackProvider
that discovers and provides MCP tools
from one or more MCP servers.
This class acts as a tool provider for Spring AI, automatically discovering tools from multiple MCP servers and making them available as Spring AI tools. It:
- Connects to one or more MCP servers through sync clients
- Lists and retrieves available tools from all connected servers
- Creates
SyncMcpToolCallback
instances for each discovered tool - Validates tool names to prevent duplicates across all servers
Example usage with a single client:
McpSyncClient mcpClient = // obtain MCP client
ToolCallbackProvider provider = new SyncMcpToolCallbackProvider(mcpClient);
// Get all available tools
ToolCallback[] tools = provider.getToolCallbacks();
Example usage with multiple clients:
List<McpSyncClient> mcpClients = // obtain multiple MCP clients
ToolCallbackProvider provider = new SyncMcpToolCallbackProvider(mcpClients);
// Get tools from all clients
ToolCallback[] tools = provider.getToolCallbacks();
- Since:
- 1.0.0
- Author:
- Christian Tzolov
- See Also:
-
ToolCallbackProvider
SyncMcpToolCallback
McpSyncClient
-
Constructor Summary
ConstructorsConstructorDescriptionSyncMcpToolCallbackProvider
(io.modelcontextprotocol.client.McpSyncClient... mcpClients) SyncMcpToolCallbackProvider
(List<io.modelcontextprotocol.client.McpSyncClient> mcpClients) Creates a newSyncMcpToolCallbackProvider
instance with a list of MCP clients. -
Method Summary
Modifier and TypeMethodDescriptionDiscovers and returns all available tools from all connected MCP servers.static List<ToolCallback>
syncToolCallbacks
(List<io.modelcontextprotocol.client.McpSyncClient> mcpClients) Creates a consolidated list of tool callbacks from multiple MCP clients.
-
Constructor Details
-
SyncMcpToolCallbackProvider
Creates a newSyncMcpToolCallbackProvider
instance with a list of MCP clients.- Parameters:
mcpClients
- the list of MCP clients to use for discovering tools
-
SyncMcpToolCallbackProvider
public SyncMcpToolCallbackProvider(io.modelcontextprotocol.client.McpSyncClient... mcpClients)
-
-
Method Details
-
getToolCallbacks
Discovers and returns all available tools from all connected MCP servers.This method:
- Retrieves the list of tools from each connected MCP server
- Creates a
SyncMcpToolCallback
for each discovered tool - Validates that there are no duplicate tool names across all servers
- Specified by:
getToolCallbacks
in interfaceToolCallbackProvider
- Returns:
- an array of tool callbacks, one for each discovered tool
- Throws:
IllegalStateException
- if duplicate tool names are found
-
syncToolCallbacks
public static List<ToolCallback> syncToolCallbacks(List<io.modelcontextprotocol.client.McpSyncClient> mcpClients) Creates a consolidated list of tool callbacks from multiple MCP clients.This utility method provides a convenient way to create tool callbacks from multiple MCP clients in a single operation. It:
- Takes a list of MCP clients as input
- Creates a provider instance to manage all clients
- Retrieves tools from all clients and combines them into a single list
- Ensures there are no naming conflicts between tools from different clients
- Parameters:
mcpClients
- the list of MCP clients to create callbacks from- Returns:
- a list of tool callbacks from all provided clients
-