From 21ee0d3ea771bf7bb39d4b4dc81e6ba6ab289ddc Mon Sep 17 00:00:00 2001 From: Fabrizio Sandri <15068390+FabrizioSandri@users.noreply.github.com> Date: Sat, 12 Jul 2025 15:24:11 +0200 Subject: [PATCH] Fix OpenAPI empty parameters (#1128) --- src/fastmcp/server/openapi.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/fastmcp/server/openapi.py b/src/fastmcp/server/openapi.py index 924762485..e94ef179b 100644 --- a/src/fastmcp/server/openapi.py +++ b/src/fastmcp/server/openapi.py @@ -367,7 +367,11 @@ class OpenAPITool(Tool): ) # Default explode for query is True # Handle deepObject style for object parameters - if param_style == "deepObject" and isinstance(param_value, dict): + if ( + param_style == "deepObject" + and isinstance(param_value, dict) + and len(param_value) > 0 + ): if param_explode: # deepObject with explode=true: object properties become separate parameters # e.g., target[id]=123&target[type]=user @@ -386,6 +390,7 @@ class OpenAPITool(Tool): elif ( isinstance(param_value, list) and p.schema_.get("type") == "array" + and len(param_value) > 0 ): if param_explode: # When explode=True, we pass the array directly, which HTTPX will serialize