Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 3 additions & 6 deletions examples/servers/simple-prompt/mcp_simple_prompt/server.py
Original file line number Diff line number Diff line change
Expand Up @@ -90,9 +90,9 @@ async def get_prompt(
if transport == "sse":
from mcp.server.sse import SseServerTransport
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(
Expand All @@ -102,14 +102,11 @@ async def handle_sse(request):
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(
debug=True,
routes=[
Route("/sse", endpoint=handle_sse),
Route("/messages", endpoint=handle_messages, methods=["POST"]),
Mount("/messages/", app=sse.handle_post_message),
],
)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,9 +47,9 @@ async def read_resource(uri: AnyUrl) -> str | bytes:
if transport == "sse":
from mcp.server.sse import SseServerTransport
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(
Expand All @@ -59,14 +59,11 @@ async def handle_sse(request):
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(
debug=True,
routes=[
Route("/sse", endpoint=handle_sse),
Route("/messages", endpoint=handle_messages, methods=["POST"]),
Mount("/messages/", app=sse.handle_post_message),
],
)

Expand Down
9 changes: 3 additions & 6 deletions examples/servers/simple-tool/mcp_simple_tool/server.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,9 +60,9 @@ async def list_tools() -> list[types.Tool]:
if transport == "sse":
from mcp.server.sse import SseServerTransport
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(
Expand All @@ -72,14 +72,11 @@ async def handle_sse(request):
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(
debug=True,
routes=[
Route("/sse", endpoint=handle_sse),
Route("/messages", endpoint=handle_messages, methods=["POST"]),
Mount("/messages/", app=sse.handle_post_message),
],
)

Expand Down
9 changes: 3 additions & 6 deletions src/mcp/server/fastmcp/server.py
Original file line number Diff line number Diff line change
Expand Up @@ -423,9 +423,9 @@ async def run_stdio_async(self) -> None:
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(
Expand All @@ -437,14 +437,11 @@ async def handle_sse(request):
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),
],
)

Expand Down
7 changes: 2 additions & 5 deletions src/mcp/server/sse.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,12 @@
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
Expand All @@ -23,9 +23,6 @@ async def handle_sse(request):
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)
Expand Down