Class TnsAIToolProvider

java.lang.Object
com.tnsai.mcp.server.TnsAIToolProvider
All Implemented Interfaces:
ToolProvider

public class TnsAIToolProvider extends Object implements ToolProvider
Bridges TnsAI tools to MCP by implementing ToolProvider.

Backed by a single ToolMethodRegistry + ToolMethodDispatcher. Both POJO @Tool methods (discovered by reflection into StaticToolMethod) and runtime-defined DynamicToolMethods join the same registry.

Usage

POJO @Tool methods


 McpServer server = McpServer.builder()
     .serverName("TnsAI-Tools")
     .addToolProvider(TnsAIToolProvider.fromPojos(
         new EmailTools(creds),
         new SquareTools(token)))
     .build();
 

Dynamic tools (e.g. MCP proxies)


 TnsAIToolProvider provider = TnsAIToolProvider.fromDynamic(myDynamicTool);
 

Mixed


 TnsAIToolProvider provider = TnsAIToolProvider.from(
     List.of(new EmailTools(creds)),
     List.of(myDynamicTool));
 

Pre-0.7.0 this class also exposed a fromTools(Tool...) factory backed by the legacy com.tnsai.annotations.Tool interface; that interface was retired in v0.7.0 (RFC #188 closeout) and its consumers migrated to the function-shape POJO pattern or to DynamicToolMethod for dynamic-name proxies.

  • Method Details

    • fromPojos

      public static TnsAIToolProvider fromPojos(Object... pojos)
      Creates a provider from POJO instances bearing @Tool-annotated methods (the function-shape pattern). Each discovered method becomes a separate MCP tool with a JSON schema reflected from the method's Java parameter types.
      Parameters:
      pojos - one or more POJO instances
      Returns:
      a new provider
      Throws:
      IllegalArgumentException - if two POJO methods resolve to the same tool name
      Since:
      0.5.7
    • fromDynamic

      public static TnsAIToolProvider fromDynamic(com.tnsai.tools.method.DynamicToolMethod... dynamicTools)
      Creates a provider from one or more DynamicToolMethods — tools whose name, description, schema, and dispatch handler are supplied at construction time. Use for tools whose identity is only known at runtime (e.g. MCP proxies).
      Parameters:
      dynamicTools - the runtime-defined tools
      Returns:
      a new provider
      Throws:
      IllegalArgumentException - if two tools share a name
      Since:
      0.7.0 (replaced fromTools(Tool...) when the Tool interface was retired)
    • fromDynamic

      public static TnsAIToolProvider fromDynamic(List<com.tnsai.tools.method.DynamicToolMethod> dynamicTools)
      List-shaped overload of fromDynamic(DynamicToolMethod...).
    • from

      public static TnsAIToolProvider from(Collection<?> pojos, Collection<com.tnsai.tools.method.DynamicToolMethod> dynamicTools)
      Creates a provider from a mix of POJOs and dynamic tools.
      Parameters:
      pojos - POJO instances bearing @Tool methods
      dynamicTools - runtime-defined tools
      Returns:
      a new provider
      Since:
      0.7.0
    • listTools

      public List<McpToolDefinition> listTools()
      Description copied from interface: ToolProvider
      Returns the list of tools provided by this provider.
      Specified by:
      listTools in interface ToolProvider
      Returns:
      list of tool definitions
    • executeTool

      public ToolProvider.ToolResult executeTool(String toolName, com.fasterxml.jackson.databind.JsonNode arguments)
      Description copied from interface: ToolProvider
      Executes a tool with the given arguments.
      Specified by:
      executeTool in interface ToolProvider
      Parameters:
      toolName - the name of the tool to execute
      arguments - the tool arguments as JSON
      Returns:
      the result of the tool execution
    • getToolCount

      public int getToolCount()
      Returns:
      the total number of tools (POJO methods + dynamic)
    • getToolNames

      public Set<String> getToolNames()
      Returns:
      unmodifiable set of all tool names