@@ -314,6 +314,17 @@ def mcp_client_params(available_toolboxes: dict, requested_toolboxes: list):
314314 if headers and isinstance (headers , dict ):
315315 for k , v in headers .items ():
316316 headers [k ] = swap_env (v )
317+ optional_headers = available_toolboxes [tb ]['server_params' ].get ('optional_headers' )
318+ # support {{ env SOMETHING }} for header values as well for e.g. tokens
319+ remove_key = {}
320+ if optional_headers and isinstance (optional_headers , dict ):
321+ for k , v in dict (optional_headers ).items ():
322+ try :
323+ optional_headers [k ] = swap_env (v )
324+ except LookupError as e :
325+ del optional_headers [k ]
326+ pass
327+ headers .update (optional_headers )
317328 # if None will default to float(5) in client code
318329 timeout = available_toolboxes [tb ]['server_params' ].get ('timeout' )
319330 server_params ['url' ] = available_toolboxes [tb ]['server_params' ].get ('url' )
@@ -329,6 +340,16 @@ def mcp_client_params(available_toolboxes: dict, requested_toolboxes: list):
329340 if headers and isinstance (headers , dict ):
330341 for k , v in headers .items ():
331342 headers [k ] = swap_env (v )
343+ optional_headers = available_toolboxes [tb ]['server_params' ].get ('optional_headers' )
344+ # support {{ env SOMETHING }} for header values as well for e.g. tokens
345+ if optional_headers and isinstance (optional_headers , dict ):
346+ for k , v in dict (optional_headers ).items ():
347+ try :
348+ optional_headers [k ] = swap_env (v )
349+ except LookupError as e :
350+ del optional_headers [k ]
351+ pass
352+ headers .update (optional_headers )
332353 # if None will default to float(5) in client code
333354 timeout = available_toolboxes [tb ]['server_params' ].get ('timeout' )
334355 server_params ['url' ] = available_toolboxes [tb ]['server_params' ].get ('url' )
0 commit comments