44
44
from mcp .server .session import ServerSession , ServerSessionT
45
45
from mcp .server .sse import SseServerTransport
46
46
from mcp .server .stdio import stdio_server
47
- from mcp .server .streamable_http import EventStore
47
+ from mcp .server .streamable_http import EventStore , StreamableHTTPASGIApp
48
48
from mcp .server .streamable_http_manager import StreamableHTTPSessionManager
49
49
from mcp .server .transport_security import TransportSecuritySettings
50
50
from mcp .shared .context import LifespanContextT , RequestContext , RequestT
@@ -828,7 +828,6 @@ async def sse_endpoint(request: Request) -> Response:
828
828
def streamable_http_app (self ) -> Starlette :
829
829
"""Return an instance of the StreamableHTTP server app."""
830
830
from starlette .middleware import Middleware
831
- from starlette .routing import Mount
832
831
833
832
# Create session manager on first call (lazy initialization)
834
833
if self ._session_manager is None :
@@ -841,8 +840,7 @@ def streamable_http_app(self) -> Starlette:
841
840
)
842
841
843
842
# Create the ASGI handler
844
- async def handle_streamable_http (scope : Scope , receive : Receive , send : Send ) -> None :
845
- await self .session_manager .handle_request (scope , receive , send )
843
+ streamable_http_app = StreamableHTTPASGIApp (self ._session_manager )
846
844
847
845
# Create routes
848
846
routes : list [Route | Mount ] = []
@@ -889,17 +887,17 @@ async def handle_streamable_http(scope: Scope, receive: Receive, send: Send) ->
889
887
)
890
888
891
889
routes .append (
892
- Mount (
890
+ Route (
893
891
self .settings .streamable_http_path ,
894
- app = RequireAuthMiddleware (handle_streamable_http , required_scopes , resource_metadata_url ),
892
+ endpoint = RequireAuthMiddleware (streamable_http_app , required_scopes , resource_metadata_url ),
895
893
)
896
894
)
897
895
else :
898
896
# Auth is disabled, no wrapper needed
899
897
routes .append (
900
- Mount (
898
+ Route (
901
899
self .settings .streamable_http_path ,
902
- app = handle_streamable_http ,
900
+ endpoint = streamable_http_app ,
903
901
)
904
902
)
905
903
0 commit comments