From 6d5331ddddc873e07baaa4704d30f559f925d2d7 Mon Sep 17 00:00:00 2001 From: Terrence Date: Sat, 24 May 2025 03:06:01 +0800 Subject: [PATCH] [MCP] extend tools/list payload size to 8000 --- main/idf_component.yml | 2 +- main/mcp_server.cc | 18 +++++++++++++----- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/main/idf_component.yml b/main/idf_component.yml index 47820c16..0a18f68f 100644 --- a/main/idf_component.yml +++ b/main/idf_component.yml @@ -11,7 +11,7 @@ dependencies: 78/esp_lcd_nv3023: ~1.0.0 78/esp-wifi-connect: ~2.4.2 78/esp-opus-encoder: ~2.3.2 - 78/esp-ml307: ~2.0.2 + 78/esp-ml307: ~2.0.3 78/xiaozhi-fonts: ~1.3.2 espressif/led_strip: ^2.5.5 espressif/esp_codec_dev: ~1.3.2 diff --git a/main/mcp_server.cc b/main/mcp_server.cc index 0e86ae39..16559250 100644 --- a/main/mcp_server.cc +++ b/main/mcp_server.cc @@ -124,8 +124,10 @@ void McpServer::ParseMessage(const cJSON* json) { if (method_str == "initialize") { auto app_desc = esp_app_get_description(); - ReplyResult(id_int, "{\"protocolVersion\":\"2024-11-05\",\"capabilities\":{\"tools\":{}}," - "\"serverInfo\":{\"name\":\"" BOARD_NAME "\",\"version\":\"" + std::string(app_desc->version) + "\"}}"); + std::string message = "{\"protocolVersion\":\"2024-11-05\",\"capabilities\":{\"tools\":{}},\"serverInfo\":{\"name\":\"" BOARD_NAME "\",\"version\":\""; + message += app_desc->version; + message += "\"}}"; + ReplyResult(id_int, message); } else if (method_str == "tools/list") { std::string cursor_str = ""; if (params != nullptr) { @@ -161,18 +163,24 @@ void McpServer::ParseMessage(const cJSON* json) { } void McpServer::ReplyResult(int id, const std::string& result) { - std::string payload = "{\"jsonrpc\":\"2.0\",\"id\":" + std::to_string(id) + ",\"result\":" + result + "}"; + std::string payload = "{\"jsonrpc\":\"2.0\",\"id\":"; + payload += std::to_string(id) + ",\"result\":"; + payload += result; + payload += "}"; Application::GetInstance().SendMcpMessage(payload); } void McpServer::ReplyError(int id, const std::string& message) { std::string payload = "{\"jsonrpc\":\"2.0\",\"id\":"; - payload += std::to_string(id) + ",\"error\":{\"message\":\"" + message + "\"}}"; + payload += std::to_string(id); + payload += ",\"error\":{\"message\":\""; + payload += message; + payload += "\"}}"; Application::GetInstance().SendMcpMessage(payload); } void McpServer::GetToolsList(int id, const std::string& cursor) { - const int max_payload_size = 1400; // ML307 MQTT publish size limit + const int max_payload_size = 8000; std::string json = "{\"tools\":["; bool found_cursor = cursor.empty();