Skip to content

Commit bb67ae6

Browse files
committed
refactor: move StreamableHTTPASGIApp to streamable_http_manager module
Move StreamableHTTPASGIApp from streamable_http.py to streamable_http_manager.py since it directly depends on StreamableHTTPSessionManager. Claude-Generated-By: Claude Code (cli/claude-opus-4-5=100%) Claude-Steers: 0 Claude-Permission-Prompts: 2 Claude-Escapes: 0
1 parent 5d3c43d commit bb67ae6

File tree

3 files changed

+13
-16
lines changed

3 files changed

+13
-16
lines changed

src/mcp/server/lowlevel/server.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,8 +97,8 @@ async def main():
9797
from mcp.server.lowlevel.helper_types import ReadResourceContents
9898
from mcp.server.models import InitializationOptions
9999
from mcp.server.session import ServerSession
100-
from mcp.server.streamable_http import EventStore, StreamableHTTPASGIApp
101-
from mcp.server.streamable_http_manager import StreamableHTTPSessionManager
100+
from mcp.server.streamable_http import EventStore
101+
from mcp.server.streamable_http_manager import StreamableHTTPASGIApp, StreamableHTTPSessionManager
102102
from mcp.server.transport_security import TransportSecuritySettings
103103
from mcp.shared.context import RequestContext
104104
from mcp.shared.exceptions import McpError, UrlElicitationRequiredError

src/mcp/server/streamable_http.py

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,7 @@
1414
from contextlib import asynccontextmanager
1515
from dataclasses import dataclass
1616
from http import HTTPStatus
17-
from typing import TYPE_CHECKING, Any
18-
19-
if TYPE_CHECKING:
20-
from mcp.server.streamable_http_manager import StreamableHTTPSessionManager
17+
from typing import Any
2118

2219
import anyio
2320
from anyio.streams.memory import MemoryObjectReceiveStream, MemoryObjectSendStream
@@ -1057,13 +1054,3 @@ async def message_router(): # pragma: no cover
10571054
except Exception as e: # pragma: no cover
10581055
# During cleanup, we catch all exceptions since streams might be in various states
10591056
logger.debug(f"Error closing streams: {e}")
1060-
1061-
1062-
class StreamableHTTPASGIApp:
1063-
"""ASGI application for Streamable HTTP server transport."""
1064-
1065-
def __init__(self, session_manager: "StreamableHTTPSessionManager"):
1066-
self.session_manager = session_manager
1067-
1068-
async def __call__(self, scope: Scope, receive: Receive, send: Send) -> None: # pragma: no cover
1069-
await self.session_manager.handle_request(scope, receive, send)

src/mcp/server/streamable_http_manager.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -292,3 +292,13 @@ async def run_server(*, task_status: TaskStatus[None] = anyio.TASK_STATUS_IGNORE
292292
media_type="application/json",
293293
)
294294
await response(scope, receive, send)
295+
296+
297+
class StreamableHTTPASGIApp:
298+
"""ASGI application for Streamable HTTP server transport."""
299+
300+
def __init__(self, session_manager: StreamableHTTPSessionManager):
301+
self.session_manager = session_manager
302+
303+
async def __call__(self, scope: Scope, receive: Receive, send: Send) -> None: # pragma: no cover
304+
await self.session_manager.handle_request(scope, receive, send)

0 commit comments

Comments
 (0)