Merge pull request #77 from samihamine/fix/sse-transport-mount

fix: use Mount instead of Route for SSE message handling
This commit is contained in:
Jeremiah Lowin 2025-03-22 18:00:48 -04:00 committed by GitHub
commit 654397bf0a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -428,9 +428,9 @@ class FastMCP:
async def run_sse_async(self) -> None:
"""Run the server using SSE transport."""
from starlette.applications import Starlette
from starlette.routing import Route
from starlette.routing import Route, Mount
sse = SseServerTransport("/messages")
sse = SseServerTransport("/messages/")
async def handle_sse(request):
async with sse.connect_sse(
@ -442,14 +442,11 @@ class FastMCP:
self._mcp_server.create_initialization_options(),
)
async def handle_messages(request):
await sse.handle_post_message(request.scope, request.receive, request._send)
starlette_app = Starlette(
debug=self.settings.debug,
routes=[
Route("/sse", endpoint=handle_sse),
Route("/messages", endpoint=handle_messages, methods=["POST"]),
Mount("/messages/", app=sse.handle_post_message),
],
)