From 1e66845e8a4306903bd7201a746fc5816cf509b7 Mon Sep 17 00:00:00 2001 From: hkr04 Date: Wed, 19 Mar 2025 18:43:03 +0800 Subject: [PATCH] stdio_client: fix bug with json --- src/mcp_stdio_client.cpp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/mcp_stdio_client.cpp b/src/mcp_stdio_client.cpp index a1ff47f..ae413b4 100644 --- a/src/mcp_stdio_client.cpp +++ b/src/mcp_stdio_client.cpp @@ -785,11 +785,14 @@ json stdio_client::send_jsonrpc(const request& req) { if (status == std::future_status::ready) { json response = response_future.get(); - if (response.contains("isError") && response["isError"].get()) { - int code = response["error"]["code"]; - std::string message = response["error"]["message"]; - - throw mcp_exception(static_cast(code), message); + if (response.contains("isError") && response["isError"].is_boolean() && response["isError"].get()) { + if (response.contains("error") && response["error"].is_object()) { + const auto& err_obj = response["error"]; + int code = err_obj.contains("code") ? err_obj["code"].get() : static_cast(error_code::internal_error); + std::string message = err_obj.value("message", ""); + // Handle error + throw mcp_exception(static_cast(code), message); + } } return response;