diff --git a/mcp-core/src/main/java/io/modelcontextprotocol/spec/McpClientSession.java b/mcp-core/src/main/java/io/modelcontextprotocol/spec/McpClientSession.java index 0ba7ab3b8..109ac0dbf 100644 --- a/mcp-core/src/main/java/io/modelcontextprotocol/spec/McpClientSession.java +++ b/mcp-core/src/main/java/io/modelcontextprotocol/spec/McpClientSession.java @@ -283,7 +283,15 @@ public Mono sendRequest(String method, Object requestParams, TypeRef t deliveredResponseSink.complete(); } else { - deliveredResponseSink.next(this.transport.unmarshalFrom(jsonRpcResponse.result(), typeRef)); + var result = jsonRpcResponse.result(); + var unmarshalled = this.transport.unmarshalFrom(result, typeRef); + // https://github.com/modelcontextprotocol/java-sdk/issues/605 + if (unmarshalled != null) + deliveredResponseSink.next(unmarshalled); + else + // NB: next() cannot be called with null + deliveredResponseSink + .error(new IllegalStateException("Failed to unmarshal response: " + jsonRpcResponse)); } } });