From b68722b917e1b221eaaabaa50065870b21e50a83 Mon Sep 17 00:00:00 2001 From: Jihaochang1 <358550956@qq.com> Date: Fri, 23 Oct 2026 15:21:12 +0800 Subject: [PATCH 1/2] fix: handle HEAD on SSE endpoint to prevent connection leaks (fixes #3736) --- src/mcp/server/sse.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/mcp/server/sse.py b/src/mcp/server/sse.py index d71ef25004..ca65e93254 100644 --- a/src/mcp/server/sse.py +++ b/src/mcp/server/sse.py @@ -15,6 +15,8 @@ # Define handler functions async def handle_sse(request): + if scope["method"] == "HEAD": + return Response(media_type="text/event-stream", headers={"Cache-Control": "no-store"}) async with sse.connect_sse( request.scope, request.receive, request._send ) as streams: From a466c65e4bc470a80c70a7d363cbccf84d4313e8 Mon Sep 17 00:00:00 2001 From: Jihaochang1 <358550956@qq.com> Date: Fri, 23 Oct 2026 18:29:15 +0800 Subject: [PATCH 2/2] fix: use get_origin() for typing.GenericAlias detection Fixes #3745 by checking the origin of type expressions instead of their class type. typing.Dict[str, Any] is a typing._GenericAlias, not a types.GenericAlias, so the previous check failed to match it. This ensures consistent behavior between typing.Dict and dict annotations, preventing silent schema changes when Ruff UP006 rewrites old-style annotations to modern syntax. --- src/mcp/server/mcpserver/utilities/func_metadata.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mcp/server/mcpserver/utilities/func_metadata.py b/src/mcp/server/mcpserver/utilities/func_metadata.py index 96d25ec5ab..f8dcd70412 100644 --- a/src/mcp/server/mcpserver/utilities/func_metadata.py +++ b/src/mcp/server/mcpserver/utilities/func_metadata.py @@ -500,7 +500,7 @@ def _create_output_model(original_annotation: Any, type_expr: Any, func_name: st wrap_output = True # Handle GenericAlias types (list[str], dict[str, int], Union[str, int], etc.) - elif isinstance(type_expr, GenericAlias): + elif get_origin(type_expr) is not None: origin = get_origin(type_expr) if origin is dict: