Class SyncMcpToolCallback

java.lang.Object
org.springframework.ai.mcp.SyncMcpToolCallback
All Implemented Interfaces:
org.springframework.ai.tool.ToolCallback

public class SyncMcpToolCallback extends Object implements org.springframework.ai.tool.ToolCallback
Implementation of ToolCallback that adapts MCP tools to Spring AI's tool interface.

This class acts as a bridge between the Model Context Protocol (MCP) and Spring AI's tool system, allowing MCP tools to be used seamlessly within Spring AI applications. It:

  • Converts MCP tool definitions to Spring AI tool definitions
  • Handles the execution of tool calls through the MCP client
  • Manages JSON serialization/deserialization of tool inputs and outputs

Example usage:


 McpSyncClient mcpClient = // obtain MCP client
 Tool mcpTool = // obtain MCP tool definition
 ToolCallback callback = new McpToolCallback(mcpClient, mcpTool);

 // Use the tool through Spring AI's interfaces
 ToolDefinition definition = callback.getToolDefinition();
 String result = callback.call("{\"param\": \"value\"}");
 
Author:
Christian Tzolov
See Also:
  • ToolCallback
  • McpSyncClient
  • McpSchema.Tool
  • Constructor Summary

    Constructors
    Constructor
    Description
    SyncMcpToolCallback(io.modelcontextprotocol.client.McpSyncClient mcpClient, io.modelcontextprotocol.spec.McpSchema.Tool tool)
    Creates a new SyncMcpToolCallback instance.
  • Method Summary

    Modifier and Type
    Method
    Description
    call(String functionInput)
    Executes the tool with the provided input.
    call(String toolArguments, org.springframework.ai.chat.model.ToolContext toolContext)
     
    org.springframework.ai.tool.definition.ToolDefinition
    Returns a Spring AI tool definition adapted from the MCP tool.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    Methods inherited from interface org.springframework.ai.tool.ToolCallback

    getToolMetadata
  • Constructor Details

    • SyncMcpToolCallback

      public SyncMcpToolCallback(io.modelcontextprotocol.client.McpSyncClient mcpClient, io.modelcontextprotocol.spec.McpSchema.Tool tool)
      Creates a new SyncMcpToolCallback instance.
      Parameters:
      mcpClient - the MCP client to use for tool execution
      tool - the MCP tool definition to adapt
  • Method Details

    • getToolDefinition

      public org.springframework.ai.tool.definition.ToolDefinition getToolDefinition()
      Returns a Spring AI tool definition adapted from the MCP tool.

      The tool definition includes:

      • The tool's name from the MCP definition
      • The tool's description from the MCP definition
      • The input schema converted to JSON format
      Specified by:
      getToolDefinition in interface org.springframework.ai.tool.ToolCallback
      Returns:
      the Spring AI tool definition
    • call

      public String call(String functionInput)
      Executes the tool with the provided input.

      This method:

      1. Converts the JSON input string to a map of arguments
      2. Calls the tool through the MCP client
      3. Converts the tool's response content to a JSON string
      Specified by:
      call in interface org.springframework.ai.tool.ToolCallback
      Parameters:
      functionInput - the tool input as a JSON string
      Returns:
      the tool's response as a JSON string
    • call

      public String call(String toolArguments, org.springframework.ai.chat.model.ToolContext toolContext)
      Specified by:
      call in interface org.springframework.ai.tool.ToolCallback