diff --git a/src/mcp/server/fastmcp/server.py b/src/mcp/server/fastmcp/server.py index b698b0497..564946aef 100644 --- a/src/mcp/server/fastmcp/server.py +++ b/src/mcp/server/fastmcp/server.py @@ -828,7 +828,7 @@ async def sse_endpoint(request: Request) -> Response: def streamable_http_app(self) -> Starlette: """Return an instance of the StreamableHTTP server app.""" from starlette.middleware import Middleware - from starlette.routing import Mount + from starlette.routing import Route # Create session manager on first call (lazy initialization) if self._session_manager is None: @@ -845,7 +845,7 @@ async def handle_streamable_http(scope: Scope, receive: Receive, send: Send) -> await self.session_manager.handle_request(scope, receive, send) # Create routes - routes: list[Route | Mount] = [] + routes: list[Route] = [] middleware: list[Middleware] = [] required_scopes = [] @@ -889,17 +889,19 @@ async def handle_streamable_http(scope: Scope, receive: Receive, send: Send) -> ) routes.append( - Mount( + Route( self.settings.streamable_http_path, - app=RequireAuthMiddleware(handle_streamable_http, required_scopes, resource_metadata_url), + endpoint=RequireAuthMiddleware(handle_streamable_http, required_scopes, resource_metadata_url), + methods=["POST", "GET", "DELETE"], ) ) else: # Auth is disabled, no wrapper needed routes.append( - Mount( + Route( self.settings.streamable_http_path, - app=handle_streamable_http, + endpoint=handle_streamable_http, + methods=["POST", "GET", "DELETE"], ) )