From 9c412b79c143eda5bbb3fc182a46cd014e8188b9 Mon Sep 17 00:00:00 2001 From: fangjie33 Date: Thu, 16 Oct 2025 09:45:28 +0800 Subject: [PATCH] fix: invalid check condition and use Utils.isEmpty instead of tool.outputSchema()!=null Signed-off-by: fangjie --- .../client/McpAsyncClient.java | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/mcp-core/src/main/java/io/modelcontextprotocol/client/McpAsyncClient.java b/mcp-core/src/main/java/io/modelcontextprotocol/client/McpAsyncClient.java index 53a05aec3..bfd801272 100644 --- a/mcp-core/src/main/java/io/modelcontextprotocol/client/McpAsyncClient.java +++ b/mcp-core/src/main/java/io/modelcontextprotocol/client/McpAsyncClient.java @@ -300,17 +300,17 @@ public class McpAsyncClient { return Mono.empty(); } - return this.listToolsInternal(init, McpSchema.FIRST_PAGE).doOnNext(listToolsResult -> { - listToolsResult.tools() - .forEach(tool -> logger.debug("Tool {} schema: {}", tool.name(), tool.outputSchema())); - if (enableCallToolSchemaCaching && listToolsResult.tools() != null) { - // Cache tools output schema - listToolsResult.tools() - .stream() - .filter(tool -> tool.outputSchema() != null) - .forEach(tool -> this.toolsOutputSchemaCache.put(tool.name(), tool.outputSchema())); - } - }).then(); + return this.listToolsInternal(init, McpSchema.FIRST_PAGE) + .doOnNext(listToolsResult -> + listToolsResult.tools() + .stream() + .filter(tool -> !Utils.isEmpty(tool.outputSchema())) + .forEach(tool -> { + logger.debug("Tool {} schema: {}", tool.name(), tool.outputSchema()); + // Put tool output schema to cache + this.toolsOutputSchemaCache.put(tool.name(), tool.outputSchema()); + }) + ).then(); }; this.initializer = new LifecycleInitializer(clientCapabilities, clientInfo, transport.protocolVersions(),