Merge pull request #121 from allenporter/mcp-sse-type-error

Fix SSE server uncaught TypeError due to incorrect routing
This commit is contained in:
David Soria Parra
2025-01-03 14:38:58 +00:00
committed by GitHub
5 changed files with 14 additions and 29 deletions

View File

@@ -423,9 +423,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(
@@ -437,14 +437,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),
],
)

View File

@@ -6,12 +6,12 @@ This module implements a Server-Sent Events (SSE) transport layer for MCP server
Example usage:
```
# Create an SSE transport at an endpoint
sse = SseServerTransport("/messages")
sse = SseServerTransport("/messages/")
# Create Starlette routes for SSE and message handling
routes = [
Route("/sse", endpoint=handle_sse),
Route("/messages", endpoint=handle_messages, methods=["POST"])
Mount("/messages/", app=sse.handle_post_message),
]
# Define handler functions
@@ -23,9 +23,6 @@ Example usage:
streams[0], streams[1], app.create_initialization_options()
)
async def handle_messages(request):
await sse.handle_post_message(request.scope, request.receive, request._send)
# Create and run Starlette app
starlette_app = Starlette(routes=routes)
uvicorn.run(starlette_app, host="0.0.0.0", port=port)