@@ -407,6 +407,7 @@ async def respond(
407407 server_id : Optional [str ],
408408 user : json ,
409409 session_id : str ,
410+ base_url : str ,
410411 ) -> None :
411412 """Respond to broadcast message is transport relevant to session_id is found locally
412413
@@ -425,7 +426,7 @@ async def respond(
425426 transport = self .get_session_sync (session_id )
426427 if transport :
427428 message = json .loads (self ._session_message .get ("message" ))
428- await self .generate_response (message = message , transport = transport , server_id = server_id , user = user )
429+ await self .generate_response (message = message , transport = transport , server_id = server_id , user = user , base_url = base_url )
429430
430431 elif self ._backend == "redis" :
431432 await self ._pubsub .subscribe (session_id )
@@ -440,7 +441,7 @@ async def respond(
440441 message = json .loads (message )
441442 transport = self .get_session_sync (session_id )
442443 if transport :
443- await self .generate_response (message = message , transport = transport , server_id = server_id , user = user )
444+ await self .generate_response (message = message , transport = transport , server_id = server_id , user = user , base_url = base_url )
444445 except asyncio .CancelledError :
445446 logger .info (f"PubSub listener for session { session_id } cancelled" )
446447 finally :
@@ -494,7 +495,7 @@ async def message_check_loop(session_id):
494495 transport = self .get_session_sync (session_id )
495496 if transport :
496497 logger .info ("Ready to respond" )
497- await self .generate_response (message = message , transport = transport , server_id = server_id , user = user )
498+ await self .generate_response (message = message , transport = transport , server_id = server_id , user = user , base_url = base_url )
498499
499500 await asyncio .to_thread (_db_remove , session_id , record .message )
500501
@@ -671,7 +672,7 @@ async def handle_initialize_logic(self, body: dict) -> InitializeResult:
671672 instructions = ("MCP Gateway providing federated tools, resources and prompts. Use /admin interface for configuration." ),
672673 )
673674
674- async def generate_response (self , message : json , transport : SSETransport , server_id : Optional [str ], user : dict ):
675+ async def generate_response (self , message : json , transport : SSETransport , server_id : Optional [str ], user : dict , base_url : str ):
675676 """
676677 Generates response according to SSE specifications
677678
@@ -745,9 +746,10 @@ async def generate_response(self, message: json, transport: SSETransport, server
745746 "id" : 1 ,
746747 }
747748 headers = {"Authorization" : f"Bearer { user ['token' ]} " , "Content-Type" : "application/json" }
749+ rpc_url = base_url + "/rpc"
748750 async with httpx .AsyncClient (timeout = settings .federation_timeout , verify = not settings .skip_ssl_verify ) as client :
749751 rpc_response = await client .post (
750- f"http://localhost: { settings . port } /rpc" ,
752+ url = rpc_url ,
751753 json = rpc_input ,
752754 headers = headers ,
753755 )
0 commit comments