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 Summary

    Constructors
    Constructor
    Description
    SyncMcpToolCallbackProvider(io.modelcontextprotocol.client.McpSyncClient... mcpClients)
    Creates a new SyncMcpToolCallbackProvider instance with one or more MCP clients.
    SyncMcpToolCallbackProvider(BiPredicate<io.modelcontextprotocol.client.McpSyncClient,io.modelcontextprotocol.spec.McpSchema.Tool> toolFilter, io.modelcontextprotocol.client.McpSyncClient... mcpClients)
    Creates a new SyncMcpToolCallbackProvider instance with one or more MCP clients.
    SyncMcpToolCallbackProvider(BiPredicate<io.modelcontextprotocol.client.McpSyncClient,io.modelcontextprotocol.spec.McpSchema.Tool> toolFilter, List<io.modelcontextprotocol.client.McpSyncClient> mcpClients)
    Creates a new SyncMcpToolCallbackProvider instance with a list of MCP clients.
    SyncMcpToolCallbackProvider(List<io.modelcontextprotocol.client.McpSyncClient> mcpClients)
    Creates a new SyncMcpToolCallbackProvider instance with a list of MCP clients.
  • Method Summary

    Modifier and Type
    Method
    Description
    Discovers and returns all available tools from all connected MCP servers.
    syncToolCallbacks(List<io.modelcontextprotocol.client.McpSyncClient> mcpClients)
    Creates a consolidated list of tool callbacks from multiple MCP clients.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • SyncMcpToolCallbackProvider

      public SyncMcpToolCallbackProvider(BiPredicate<io.modelcontextprotocol.client.McpSyncClient,io.modelcontextprotocol.spec.McpSchema.Tool> toolFilter, 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
      toolFilter - a filter to apply to each discovered tool
    • 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(BiPredicate<io.modelcontextprotocol.client.McpSyncClient,io.modelcontextprotocol.spec.McpSchema.Tool> toolFilter, io.modelcontextprotocol.client.McpSyncClient... mcpClients)
      Creates a new SyncMcpToolCallbackProvider instance with one or more MCP clients.
      Parameters:
      mcpClients - the MCP clients to use for discovering tools
      toolFilter - a filter to apply to each discovered tool
    • SyncMcpToolCallbackProvider

      public SyncMcpToolCallbackProvider(io.modelcontextprotocol.client.McpSyncClient... mcpClients)
      Creates a new SyncMcpToolCallbackProvider instance with one or more MCP clients.
      Parameters:
      mcpClients - the MCP clients to use for discovering tools
  • 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