cdc78fc9d5
Moving the HTTP transport and auth imports under TYPE_CHECKING made typing.get_type_hints() raise NameError on public methods it used to resolve on: MCPServer.streamable_http_app / sse_app / run_sse_async / run_streamable_http_async / session_manager and Server.streamable_http_app / session_manager (EventStore, TransportSecuritySettings, StreamableHTTPSessionManager, AuthSettings, OAuthAuthorizationServerProvider, TokenVerifier were typing-only names in real annotations). Two of those types get web-framework-free homes so the server modules can import them for real without loading starlette: the resumability contract (EventStore, EventMessage, EventCallback, EventId, StreamId) moves to mcp.server.event_store, and mcp.server.transport_security keeps only the pydantic TransportSecuritySettings while its starlette middleware moves beside the transports. Both old import paths keep working with the same objects. The session manager and the OAuth annotations are spelled through the lazy mcp.server namespace instead (the trick already used for Client.server), so they evaluate on demand and MCPServer stops importing the OAuth provider stack at module load. The starlette-owned annotations of the app builders (Starlette, Route, Request/Response) stay typing-only; get_type_hints on those methods needs starlette's names supplied by the caller.