Class AsyncMcpToolCallback

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

public class AsyncMcpToolCallback extends Object implements org.springframework.ai.tool.ToolCallback
Implementation of ToolCallback that adapts MCP tools to Spring AI's tool interface with asynchronous execution support.

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 asynchronous execution of tool calls through the MCP client
  • Manages JSON serialization/deserialization of tool inputs and outputs

Example usage:


 McpAsyncClient mcpClient = // obtain MCP client
 Tool mcpTool = // obtain MCP tool definition
 ToolCallback callback = new AsyncMcpToolCallback(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
  • McpAsyncClient
  • McpSchema.Tool
  • Constructor Summary

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

    Modifier and Type
    Method
    Description
    call(String functionInput)
    Executes the tool with the provided input asynchronously.
    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

    • AsyncMcpToolCallback

      public AsyncMcpToolCallback(io.modelcontextprotocol.client.McpAsyncClient mcpClient, io.modelcontextprotocol.spec.McpSchema.Tool tool)
      Creates a new AsyncMcpToolCallback 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 asynchronously.

      This method:

      1. Converts the JSON input string to a map of arguments
      2. Calls the tool through the MCP client asynchronously
      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