From 0956e9a67cc53a6deda1b395b76640814234cb14 Mon Sep 17 00:00:00 2001 From: Keyur Doshi Date: Wed, 5 Nov 2025 19:08:58 +0530 Subject: [PATCH] fix required due to fastmcp update --- services/chatbot/src/mcpserver/server.py | 2 ++ services/chatbot/src/mcpserver/tool_helpers.py | 15 +++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/services/chatbot/src/mcpserver/server.py b/services/chatbot/src/mcpserver/server.py index 1d9b0d9d..8cb8998a 100644 --- a/services/chatbot/src/mcpserver/server.py +++ b/services/chatbot/src/mcpserver/server.py @@ -6,6 +6,7 @@ import httpx from fastmcp import FastMCP +from .tool_helpers import fix_array_responses_in_spec from .config import Config # Configure logging @@ -77,6 +78,7 @@ def get_http_client(): # Load your OpenAPI spec with open(Config.OPENAPI_SPEC, "r") as f: openapi_spec = json.load(f) +openapi_spec = fix_array_responses_in_spec(openapi_spec) # Create the MCP server mcp = FastMCP.from_openapi( diff --git a/services/chatbot/src/mcpserver/tool_helpers.py b/services/chatbot/src/mcpserver/tool_helpers.py index 9f0e38cc..38c4f306 100644 --- a/services/chatbot/src/mcpserver/tool_helpers.py +++ b/services/chatbot/src/mcpserver/tool_helpers.py @@ -12,3 +12,18 @@ async def get_any_api_key(): if doc and "openai_api_key" in doc: return doc["openai_api_key"] return None + +def fix_array_responses_in_spec(spec): + for path_item in spec.get("paths", {}).values(): + for method, operation in path_item.items(): + if method not in ["get", "post", "put", "patch", "delete"]: + continue + + for response in operation.get("responses", {}).values(): + for media in response.get("content", {}).values(): + schema = media.get("schema", {}) + + if schema.get("type") == "array": + del media["schema"] + + return spec \ No newline at end of file