Package com.tnsai.mcp.server
Class TnsAIToolProvider
java.lang.Object
com.tnsai.mcp.server.TnsAIToolProvider
- All Implemented Interfaces:
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.
-
Nested Class Summary
Nested classes/interfaces inherited from interface com.tnsai.mcp.server.ToolProvider
ToolProvider.ToolResult -
Method Summary
Modifier and TypeMethodDescriptionexecuteTool(String toolName, com.fasterxml.jackson.databind.JsonNode arguments) Executes a tool with the given arguments.static TnsAIToolProviderfrom(Collection<?> pojos, Collection<com.tnsai.tools.method.DynamicToolMethod> dynamicTools) Creates a provider from a mix of POJOs and dynamic tools.static TnsAIToolProviderfromDynamic(com.tnsai.tools.method.DynamicToolMethod... dynamicTools) Creates a provider from one or moreDynamicToolMethods — tools whose name, description, schema, and dispatch handler are supplied at construction time.static TnsAIToolProviderfromDynamic(List<com.tnsai.tools.method.DynamicToolMethod> dynamicTools) List-shaped overload offromDynamic(DynamicToolMethod...).static TnsAIToolProviderCreates a provider from POJO instances bearing@Tool-annotated methods (the function-shape pattern).intReturns the list of tools provided by this provider.
-
Method Details
-
fromPojos
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 moreDynamicToolMethods — 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 theToolinterface was retired)
-
fromDynamic
public static TnsAIToolProvider fromDynamic(List<com.tnsai.tools.method.DynamicToolMethod> dynamicTools) List-shaped overload offromDynamic(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@ToolmethodsdynamicTools- runtime-defined tools- Returns:
- a new provider
- Since:
- 0.7.0
-
listTools
Description copied from interface:ToolProviderReturns the list of tools provided by this provider.- Specified by:
listToolsin interfaceToolProvider- Returns:
- list of tool definitions
-
executeTool
public ToolProvider.ToolResult executeTool(String toolName, com.fasterxml.jackson.databind.JsonNode arguments) Description copied from interface:ToolProviderExecutes a tool with the given arguments.- Specified by:
executeToolin interfaceToolProvider- Parameters:
toolName- the name of the tool to executearguments- 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
- Returns:
- unmodifiable set of all tool names
-