diff --git a/backend/open_webui/routers/configs.py b/backend/open_webui/routers/configs.py index 5070850896..0e88b7a929 100644 --- a/backend/open_webui/routers/configs.py +++ b/backend/open_webui/routers/configs.py @@ -144,7 +144,7 @@ class ToolServerConnection(BaseModel): path: str type: Optional[str] = "openapi" # openapi, mcp auth_type: Optional[str] - headers: Optional[dict] + headers: Optional[dict | str] = None key: Optional[str] config: Optional[dict] @@ -286,7 +286,7 @@ async def verify_tool_servers_config( if token: headers = {"Authorization": f"Bearer {token}"} - if form_data.headers: + if form_data.headers and isinstance(form_data.headers, dict): if headers is None: headers = {} headers.update(form_data.headers) @@ -332,7 +332,7 @@ async def verify_tool_servers_config( if token: headers = {"Authorization": f"Bearer {token}"} - if form_data.headers: + if form_data.headers and isinstance(form_data.headers, dict): if headers is None: headers = {} headers.update(form_data.headers) diff --git a/backend/open_webui/utils/middleware.py b/backend/open_webui/utils/middleware.py index 720a9eb1a7..cb96b2f885 100644 --- a/backend/open_webui/utils/middleware.py +++ b/backend/open_webui/utils/middleware.py @@ -1380,7 +1380,7 @@ async def process_chat_payload(request, form_data, user, metadata, model): oauth_token = None connection_headers = mcp_server_connection.get("headers", None) - if connection_headers: + if connection_headers and isinstance(connection_headers, dict): for key, value in connection_headers.items(): headers[key] = value diff --git a/backend/open_webui/utils/tools.py b/backend/open_webui/utils/tools.py index f14b3ce8ff..f493f5bf65 100644 --- a/backend/open_webui/utils/tools.py +++ b/backend/open_webui/utils/tools.py @@ -180,7 +180,7 @@ async def get_tools( ) connection_headers = tool_server_connection.get("headers", None) - if connection_headers: + if connection_headers and isinstance(connection_headers, dict): for key, value in connection_headers.items(): headers[key] = value