fix(mcp): return Response() from handle_sse to prevent NoneType error

When an MCP client disconnects, Starlette tries to call the return value
of the handle_sse endpoint as an ASGI response. Since the function had
no return statement it returned None, causing:

  TypeError: 'NoneType' object is not callable

The mcp library's own SseServerTransport docstring explicitly documents
this requirement. Fix by adding 'return Response()' and importing
starlette.responses.Response.
This commit is contained in:
HuajunGao
2026-02-28 14:54:43 +11:00
parent ded24b10da
commit ab64186a38

View File

@@ -15,6 +15,7 @@ from mcp.server import Server
from mcp.server.sse import SseServerTransport
from starlette.applications import Starlette
from starlette.requests import Request
from starlette.responses import Response
from starlette.routing import Mount, Route
from .resources import RESOURCE_TEMPLATES, RESOURCES, handle_resource
@@ -64,6 +65,7 @@ async def handle_sse(request: Request):
streams[1],
server.create_initialization_options(),
)
return Response()
def create_mcp_starlette_app() -> Starlette: