99
1010from __future__ import annotations
1111
12- __all__ = ["MCP_CLEANUP_TIMEOUT" , "build_mcp_servers" , "mcp_session_task" ]
12+ __all__ = ["MCP_CLEANUP_TIMEOUT" , "build_mcp_servers" , "mcp_session_task" , "register_transport" ]
1313
1414import asyncio
1515import logging
16- from types import MappingProxyType
16+
1717from typing import TYPE_CHECKING , Any , Callable
1818
1919from agents .mcp import MCPServerSse , MCPServerStdio , MCPServerStreamableHttp , create_static_tool_filter
@@ -48,15 +48,15 @@ def __init__(self, server: MCPNamespaceWrap, process: StreamableMCPThread | None
4848MCP_TRANSPORT_REGISTRY : dict [str , MCPServerBuilder ] = {}
4949
5050
51- def _register_transport (kind : str ) -> Callable [[MCPServerBuilder ], MCPServerBuilder ]:
51+ def register_transport (kind : str ) -> Callable [[MCPServerBuilder ], MCPServerBuilder ]:
5252 """Decorator to register an MCP transport builder."""
5353 def decorator (builder : MCPServerBuilder ) -> MCPServerBuilder :
5454 MCP_TRANSPORT_REGISTRY [kind ] = builder
5555 return builder
5656 return decorator
5757
5858
59- @_register_transport ("stdio" )
59+ @register_transport ("stdio" )
6060def _build_stdio (tb : str , params : dict [str , Any ], tool_filter : Any , client_session_timeout : int , confirms : list [str ]) -> MCPServerEntry :
6161 if params .get ("reconnecting" , False ):
6262 mcp_server = ReconnectingMCPServerStdio (
@@ -77,7 +77,7 @@ def _build_stdio(tb: str, params: dict[str, Any], tool_filter: Any, client_sessi
7777 return MCPServerEntry (MCPNamespaceWrap (confirms , mcp_server ), None , name = tb )
7878
7979
80- @_register_transport ("sse" )
80+ @register_transport ("sse" )
8181def _build_sse (tb : str , params : dict [str , Any ], tool_filter : Any , client_session_timeout : int , confirms : list [str ]) -> MCPServerEntry :
8282 mcp_server = MCPServerSse (
8383 name = tb ,
@@ -88,7 +88,7 @@ def _build_sse(tb: str, params: dict[str, Any], tool_filter: Any, client_session
8888 return MCPServerEntry (MCPNamespaceWrap (confirms , mcp_server ), None , name = tb )
8989
9090
91- @_register_transport ("streamable" )
91+ @register_transport ("streamable" )
9292def _build_streamable (tb : str , params : dict [str , Any ], tool_filter : Any , client_session_timeout : int , confirms : list [str ]) -> MCPServerEntry :
9393 server_proc = None
9494 if "command" in params :
@@ -115,11 +115,6 @@ def _print_err(line: str) -> None:
115115 return MCPServerEntry (MCPNamespaceWrap (confirms , mcp_server ), server_proc , name = tb )
116116
117117
118- # Freeze the registry after all transports are registered to prevent
119- # accidental mutation in tests or at runtime.
120- MCP_TRANSPORT_REGISTRY = MappingProxyType (MCP_TRANSPORT_REGISTRY )
121-
122-
123118def build_mcp_servers (
124119 available_tools : AvailableTools ,
125120 toolboxes : list [str ],
0 commit comments