1818class SimpleStreamablePrivateGateway :
1919 """Simple MCP streamable private gateway client without authentication."""
2020
21- def __init__ (self , server_url : str , transport_type : str = "streamable-http" ):
21+ def __init__ (self , server_url : str , server_hostname : str , transport_type : str = "streamable-http" ):
2222 self .server_url = server_url
23+ self .server_hostname = server_hostname
2324 self .transport_type = transport_type
2425 self .session : ClientSession | None = None
2526
@@ -29,11 +30,14 @@ async def connect(self):
2930
3031 try :
3132 print ("📡 Opening StreamableHTTP transport connection..." )
33+ # Note: terminate_on_close=False prevents SSL handshake failures during exit
34+ # Some servers may not handle session termination gracefully over SSL
3235 async with streamablehttp_client (
3336 url = self .server_url ,
34- headers = {"Host" : "mcp.deepwiki.com" },
35- extensions = {"sni_hostname" : "mcp.deepwiki.com" },
37+ headers = {"Host" : self . server_hostname },
38+ extensions = {"sni_hostname" : self . server_hostname },
3639 timeout = timedelta (seconds = 60 ),
40+ terminate_on_close = False , # Skip session termination to avoid SSL errors
3741 ) as (read_stream , write_stream , get_session_id ):
3842 await self ._run_session (read_stream , write_stream , get_session_id )
3943
@@ -118,6 +122,7 @@ async def interactive_loop(self):
118122 continue
119123
120124 if command == "quit" :
125+ print ("👋 Goodbye!" )
121126 break
122127
123128 elif command == "list" :
@@ -151,6 +156,7 @@ async def interactive_loop(self):
151156 print ("\n \n 👋 Goodbye!" )
152157 break
153158 except EOFError :
159+ print ("\n 👋 Goodbye!" )
154160 break
155161
156162
@@ -159,15 +165,17 @@ async def main():
159165 # Default server URL - can be overridden with environment variable
160166 # Most MCP streamable HTTP servers use /mcp as the endpoint
161167 server_port = os .getenv ("MCP_SERVER_PORT" , "8000" )
168+ server_hostname = os .getenv ("MCP_SERVER_HOSTNAME" , "localhost" )
162169 transport_type = "streamable-http"
163170 server_url = f"https://localhost:{ server_port } /mcp"
164171
165172 print ("🚀 Simple Streamable Private Gateway" )
166173 print (f"Connecting to: { server_url } " )
174+ print (f"Server hostname: { server_hostname } " )
167175 print (f"Transport type: { transport_type } " )
168176
169177 # Start connection flow
170- client = SimpleStreamablePrivateGateway (server_url , transport_type )
178+ client = SimpleStreamablePrivateGateway (server_url , server_hostname , transport_type )
171179 await client .connect ()
172180
173181
0 commit comments