Class SyncMcpToolCallbackProvider

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

public class SyncMcpToolCallbackProvider extends Object implements 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:
  • Constructor Details

    • SyncMcpToolCallbackProvider

      public SyncMcpToolCallbackProvider(List<io.modelcontextprotocol.client.McpSyncClient> mcpClients)
      Creates a new SyncMcpToolCallbackProvider 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

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

      This method:

      1. Retrieves the list of tools from each connected MCP server
      2. Creates a SyncMcpToolCallback for each discovered tool
      3. Validates that there are no duplicate tool names across all servers
      Specified by:
      getToolCallbacks in interface ToolCallbackProvider
      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:

      1. Takes a list of MCP clients as input
      2. Creates a provider instance to manage all clients
      3. Retrieves tools from all clients and combines them into a single list
      4. 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