Class McpToolExecutor
- All Implemented Interfaces:
ToolExecutor
- Since:
- 1.4.0
-
Constructor Summary
ConstructorsConstructorDescriptionMcpToolExecutor(McpClient mcpClient) McpToolExecutor(McpClient mcpClient, String fixedToolName) -
Method Summary
Modifier and TypeMethodDescriptionexecute(ToolExecutionRequest executionRequest, Object memoryId) Executes a tool request.executeAsync(ToolExecutionRequest executionRequest, InvocationContext invocationContext) Non-blocking counterpart ofToolExecutor.executeWithContext(ToolExecutionRequest, InvocationContext), invoked by the asynchronous AI Service tool loop (AI Service methods returningCompletableFutureorCompletionStage), which composes the returned future instead of waiting on a thread.executeWithContext(ToolExecutionRequest executionRequest, InvocationContext invocationContext) Executes a tool request.
-
Constructor Details
-
McpToolExecutor
-
McpToolExecutor
-
-
Method Details
-
execute
Description copied from interface:ToolExecutorExecutes a tool request.- Specified by:
executein interfaceToolExecutor- Parameters:
executionRequest- The tool execution request. Contains tool name and arguments.memoryId- The ID of the chat memory. .- Returns:
- The result of the tool execution that will be sent to the LLM.
-
executeWithContext
public ToolExecutionResult executeWithContext(ToolExecutionRequest executionRequest, InvocationContext invocationContext) Description copied from interface:ToolExecutorExecutes a tool request. Override this method if you wish to:- access the
InvocationParameterswhen passing extra data into the tool - propagate the tool result object (ToolExecutionResult.result()) into theToolExecution- Specified by:
executeWithContextin interfaceToolExecutor- Parameters:
executionRequest- The tool execution request. Contains tool name and arguments.invocationContext- The AI Service invocation context, containsChatMemoryID (seeMemoryIdfor more details), andInvocationParameters.- Returns:
- The result of the tool execution that will be sent to the LLM.
-
executeAsync
public CompletableFuture<ToolExecutionResult> executeAsync(ToolExecutionRequest executionRequest, InvocationContext invocationContext) Non-blocking counterpart ofToolExecutor.executeWithContext(ToolExecutionRequest, InvocationContext), invoked by the asynchronous AI Service tool loop (AI Service methods returningCompletableFutureorCompletionStage), which composes the returned future instead of waiting on a thread.The default implementation returns a failed future carrying
AsyncNotSupportedException: asynchronous AI Services are opt-in, and silently executing a tool synchronously there would block the thread delivering model responses without any visible signal. This failure is not passed to the tool error handlers (and thus never reaches the LLM) — it fails the AI Service invocation, making the gap visible.Override this method to use this tool with an asynchronous AI Service. If the tool performs I/O that can be initiated without holding a thread (e.g. it delegates to an asynchronous client), return that future. If blocking execution is acceptable, it can simply return
CompletableFuture.completedFuture(executeWithContext(request, context)).Errors may be signaled either synchronously (thrown from this method) or via a failed future; the AI Service applies the configured tool error handlers to both identically.
Non-blocking: delegates to
McpClient.executeToolAsync(ToolExecutionRequest, InvocationContext), so no thread is held while the tool executes on the MCP server.- Specified by:
executeAsyncin interfaceToolExecutor- Parameters:
executionRequest- The tool execution request. Contains tool name and arguments.invocationContext- The AI Service invocation context, containsChatMemoryID (seeMemoryIdfor more details), andInvocationParameters.- Returns:
- a
CompletableFutureof the result of the tool execution that will be sent to the LLM
-