Skip to content

Commit 74701dd

Browse files
author
Hoa Lam
committed
Fix NoneType return starlette/routing.py line 74,
1 parent ee8d1eb commit 74701dd

File tree

6 files changed

+17
-2
lines changed

6 files changed

+17
-2
lines changed

examples/servers/simple-prompt/mcp_simple_prompt/server.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ async def get_prompt(
9191
from mcp.server.sse import SseServerTransport
9292
from starlette.applications import Starlette
9393
from starlette.routing import Mount, Route
94+
from starlette.responses import Response
9495

9596
sse = SseServerTransport("/messages/")
9697

@@ -101,6 +102,7 @@ async def handle_sse(request):
101102
await app.run(
102103
streams[0], streams[1], app.create_initialization_options()
103104
)
105+
return Response("MCP SSE")
104106

105107
starlette_app = Starlette(
106108
debug=True,

examples/servers/simple-resource/mcp_simple_resource/server.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ async def read_resource(uri: FileUrl) -> str | bytes:
4747
from mcp.server.sse import SseServerTransport
4848
from starlette.applications import Starlette
4949
from starlette.routing import Mount, Route
50+
from starlette.responses import Response
5051

5152
sse = SseServerTransport("/messages/")
5253

@@ -57,6 +58,7 @@ async def handle_sse(request):
5758
await app.run(
5859
streams[0], streams[1], app.create_initialization_options()
5960
)
61+
return Response("MCP SSE")
6062

6163
starlette_app = Starlette(
6264
debug=True,

examples/servers/simple-tool/mcp_simple_tool/server.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,16 +61,17 @@ async def list_tools() -> list[types.Tool]:
6161
from mcp.server.sse import SseServerTransport
6262
from starlette.applications import Starlette
6363
from starlette.routing import Mount, Route
64+
from starlette.responses import Response
6465

6566
sse = SseServerTransport("/messages/")
66-
6767
async def handle_sse(request):
6868
async with sse.connect_sse(
6969
request.scope, request.receive, request._send
7070
) as streams:
7171
await app.run(
7272
streams[0], streams[1], app.create_initialization_options()
7373
)
74+
return Response("MCP SSE")
7475

7576
starlette_app = Starlette(
7677
debug=True,

src/mcp/server/fastmcp/server.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313

1414
import anyio
1515
import pydantic_core
16+
import starlette
17+
import starlette.responses
1618
import uvicorn
1719
from pydantic import BaseModel, Field
1820
from pydantic.networks import AnyUrl
@@ -475,6 +477,7 @@ async def run_stdio_async(self) -> None:
475477

476478
async def run_sse_async(self) -> None:
477479
"""Run the server using SSE transport."""
480+
from starlette.responses import Response
478481
from starlette.applications import Starlette
479482
from starlette.routing import Mount, Route
480483

@@ -489,6 +492,7 @@ async def handle_sse(request):
489492
streams[1],
490493
self._mcp_server.create_initialization_options(),
491494
)
495+
return Response("OK")
492496

493497
starlette_app = Starlette(
494498
debug=self.settings.debug,

src/mcp/server/sse.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
Example usage:
77
```
88
# Create an SSE transport at an endpoint
9+
from starlette.responses import Response
10+
911
sse = SseServerTransport("/messages/")
1012
1113
# Create Starlette routes for SSE and message handling
@@ -22,6 +24,7 @@ async def handle_sse(request):
2224
await app.run(
2325
streams[0], streams[1], app.create_initialization_options()
2426
)
27+
return Response("MCP SSE")
2528
2629
# Create and run Starlette app
2730
starlette_app = Starlette(routes=routes)

tests/shared/test_sse.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,16 +80,19 @@ async def handle_call_tool(name: str, args: dict) -> list[TextContent]:
8080
# Test fixtures
8181
def make_server_app() -> Starlette:
8282
"""Create test Starlette app with SSE transport"""
83+
from starlette.responses import Response
84+
8385
sse = SseServerTransport("/messages/")
8486
server = ServerTest()
8587

86-
async def handle_sse(request: Request) -> None:
88+
async def handle_sse(request: Request) -> Response:
8789
async with sse.connect_sse(
8890
request.scope, request.receive, request._send
8991
) as streams:
9092
await server.run(
9193
streams[0], streams[1], server.create_initialization_options()
9294
)
95+
return Response("MCP SSE")
9396

9497
app = Starlette(
9598
routes=[

0 commit comments

Comments
 (0)