mirror of
https://github.com/aljazceru/mcp-python-sdk.git
synced 2025-12-22 08:14:22 +01:00
Merge pull request #121 from allenporter/mcp-sse-type-error
Fix SSE server uncaught TypeError due to incorrect routing
This commit is contained in:
@@ -90,9 +90,9 @@ def main(port: int, transport: str) -> int:
|
|||||||
if transport == "sse":
|
if transport == "sse":
|
||||||
from mcp.server.sse import SseServerTransport
|
from mcp.server.sse import SseServerTransport
|
||||||
from starlette.applications import Starlette
|
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 def handle_sse(request):
|
||||||
async with sse.connect_sse(
|
async with sse.connect_sse(
|
||||||
@@ -102,14 +102,11 @@ def main(port: int, transport: str) -> int:
|
|||||||
streams[0], streams[1], app.create_initialization_options()
|
streams[0], streams[1], app.create_initialization_options()
|
||||||
)
|
)
|
||||||
|
|
||||||
async def handle_messages(request):
|
|
||||||
await sse.handle_post_message(request.scope, request.receive, request._send)
|
|
||||||
|
|
||||||
starlette_app = Starlette(
|
starlette_app = Starlette(
|
||||||
debug=True,
|
debug=True,
|
||||||
routes=[
|
routes=[
|
||||||
Route("/sse", endpoint=handle_sse),
|
Route("/sse", endpoint=handle_sse),
|
||||||
Route("/messages", endpoint=handle_messages, methods=["POST"]),
|
Mount("/messages/", app=sse.handle_post_message),
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -47,9 +47,9 @@ def main(port: int, transport: str) -> int:
|
|||||||
if transport == "sse":
|
if transport == "sse":
|
||||||
from mcp.server.sse import SseServerTransport
|
from mcp.server.sse import SseServerTransport
|
||||||
from starlette.applications import Starlette
|
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 def handle_sse(request):
|
||||||
async with sse.connect_sse(
|
async with sse.connect_sse(
|
||||||
@@ -59,14 +59,11 @@ def main(port: int, transport: str) -> int:
|
|||||||
streams[0], streams[1], app.create_initialization_options()
|
streams[0], streams[1], app.create_initialization_options()
|
||||||
)
|
)
|
||||||
|
|
||||||
async def handle_messages(request):
|
|
||||||
await sse.handle_post_message(request.scope, request.receive, request._send)
|
|
||||||
|
|
||||||
starlette_app = Starlette(
|
starlette_app = Starlette(
|
||||||
debug=True,
|
debug=True,
|
||||||
routes=[
|
routes=[
|
||||||
Route("/sse", endpoint=handle_sse),
|
Route("/sse", endpoint=handle_sse),
|
||||||
Route("/messages", endpoint=handle_messages, methods=["POST"]),
|
Mount("/messages/", app=sse.handle_post_message),
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -60,9 +60,9 @@ def main(port: int, transport: str) -> int:
|
|||||||
if transport == "sse":
|
if transport == "sse":
|
||||||
from mcp.server.sse import SseServerTransport
|
from mcp.server.sse import SseServerTransport
|
||||||
from starlette.applications import Starlette
|
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 def handle_sse(request):
|
||||||
async with sse.connect_sse(
|
async with sse.connect_sse(
|
||||||
@@ -72,14 +72,11 @@ def main(port: int, transport: str) -> int:
|
|||||||
streams[0], streams[1], app.create_initialization_options()
|
streams[0], streams[1], app.create_initialization_options()
|
||||||
)
|
)
|
||||||
|
|
||||||
async def handle_messages(request):
|
|
||||||
await sse.handle_post_message(request.scope, request.receive, request._send)
|
|
||||||
|
|
||||||
starlette_app = Starlette(
|
starlette_app = Starlette(
|
||||||
debug=True,
|
debug=True,
|
||||||
routes=[
|
routes=[
|
||||||
Route("/sse", endpoint=handle_sse),
|
Route("/sse", endpoint=handle_sse),
|
||||||
Route("/messages", endpoint=handle_messages, methods=["POST"]),
|
Mount("/messages/", app=sse.handle_post_message),
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -423,9 +423,9 @@ class FastMCP:
|
|||||||
async def run_sse_async(self) -> None:
|
async def run_sse_async(self) -> None:
|
||||||
"""Run the server using SSE transport."""
|
"""Run the server using SSE transport."""
|
||||||
from starlette.applications import Starlette
|
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 def handle_sse(request):
|
||||||
async with sse.connect_sse(
|
async with sse.connect_sse(
|
||||||
@@ -437,14 +437,11 @@ class FastMCP:
|
|||||||
self._mcp_server.create_initialization_options(),
|
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(
|
starlette_app = Starlette(
|
||||||
debug=self.settings.debug,
|
debug=self.settings.debug,
|
||||||
routes=[
|
routes=[
|
||||||
Route("/sse", endpoint=handle_sse),
|
Route("/sse", endpoint=handle_sse),
|
||||||
Route("/messages", endpoint=handle_messages, methods=["POST"]),
|
Mount("/messages/", app=sse.handle_post_message),
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -6,12 +6,12 @@ This module implements a Server-Sent Events (SSE) transport layer for MCP server
|
|||||||
Example usage:
|
Example usage:
|
||||||
```
|
```
|
||||||
# Create an SSE transport at an endpoint
|
# Create an SSE transport at an endpoint
|
||||||
sse = SseServerTransport("/messages")
|
sse = SseServerTransport("/messages/")
|
||||||
|
|
||||||
# Create Starlette routes for SSE and message handling
|
# Create Starlette routes for SSE and message handling
|
||||||
routes = [
|
routes = [
|
||||||
Route("/sse", endpoint=handle_sse),
|
Route("/sse", endpoint=handle_sse),
|
||||||
Route("/messages", endpoint=handle_messages, methods=["POST"])
|
Mount("/messages/", app=sse.handle_post_message),
|
||||||
]
|
]
|
||||||
|
|
||||||
# Define handler functions
|
# Define handler functions
|
||||||
@@ -23,9 +23,6 @@ Example usage:
|
|||||||
streams[0], streams[1], app.create_initialization_options()
|
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
|
# Create and run Starlette app
|
||||||
starlette_app = Starlette(routes=routes)
|
starlette_app = Starlette(routes=routes)
|
||||||
uvicorn.run(starlette_app, host="0.0.0.0", port=port)
|
uvicorn.run(starlette_app, host="0.0.0.0", port=port)
|
||||||
|
|||||||
Reference in New Issue
Block a user