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.
This class acts as a tool provider for Spring AI, automatically discovering tools from an MCP server and making them available as Spring AI tools. It:
- Connects to an MCP server through a sync client
- Lists and retrieves available tools from the server
- Creates
McpToolCallback
instances for each discovered tool - Validates tool names to prevent duplicates
Example usage:
McpSyncClient mcpClient = // obtain MCP client
ToolCallbackProvider provider = new McpToolCallbackProvider(mcpClient);
// Get all available tools
ToolCallback[] tools = provider.getToolCallbacks();
- Since:
- 1.0.0
- Author:
- Christian Tzolov
- See Also:
-
ToolCallbackProvider
McpToolCallback
McpSyncClient
-
Constructor Summary
ConstructorsConstructorDescriptionSyncMcpToolCallbackProvider
(io.modelcontextprotocol.client.McpSyncClient mcpClient) Creates a newMcpToolCallbackProvider
instance. -
Method Summary
Modifier and TypeMethodDescriptionDiscovers and returns all available tools from the MCP server.static List<ToolCallback>
syncToolCallbacks
(List<io.modelcontextprotocol.client.McpSyncClient> mcpClients)
-
Constructor Details
-
SyncMcpToolCallbackProvider
public SyncMcpToolCallbackProvider(io.modelcontextprotocol.client.McpSyncClient mcpClient) Creates a newMcpToolCallbackProvider
instance.- Parameters:
mcpClient
- the MCP client to use for discovering tools
-
-
Method Details
-
getToolCallbacks
Discovers and returns all available tools from the MCP server.This method:
- Retrieves the list of tools from the MCP server
- Creates a
McpToolCallback
for each tool - Validates that there are no duplicate tool names
- 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)
-