@@ -59,15 +59,31 @@ def signin(retries=8, delay=1.5):
5959 r = sess .post (f"{ BACKEND } /api/auth/sign-in/email" , headers = {'Content-Type' :'application/json' ,'Host' : SVC }, json = {'email' : ADMIN_EMAIL ,'password' : ADMIN_PASSWORD }, timeout = 6 )
6060 if r .status_code == 200 :
6161 try :
62- # Accept cookie from response plus token header fallback
62+ # Accept token from JSON (multiple possible shapes) or fall back to session cookie
6363 host = SVC .split (':' )[0 ]
64- token = r .json ().get ('token' )
64+ token = None
65+ try :
66+ j = r .json ()
67+ token = (
68+ j .get ('token' )
69+ or j .get ('sessionToken' )
70+ or (j .get ('data' ) or {}).get ('token' )
71+ or (j .get ('data' ) or {}).get ('sessionToken' )
72+ )
73+ except Exception :
74+ token = None
75+ if not token :
76+ # try to read cookie set by server and mirror it under our in-cluster host
77+ for c in sess .cookies :
78+ if c .name == 'better-auth.session_token' and c .value :
79+ token = c .value
80+ break
6581 if token :
6682 try :
6783 sess .cookies .set ('better-auth.session_token' , token , domain = host , path = '/' )
6884 except Exception :
6985 sess .cookies .set ('better-auth.session_token' , token )
70- sess .headers ['Authorization' ] = f"Bearer { token } "
86+ sess .headers ['Authorization' ] = f"Bearer { token } "
7187 # Persist cookies to mozilla jar and reload next time
7288 try :
7389 mozjar .clear ()
@@ -208,14 +224,7 @@ def k8s_get_configmap_data(name: str):
208224 env_map = {}
209225 if s .get ('env' ) and isinstance (s ['env' ], dict ):
210226 env_map .update ({k :str (v ) for k ,v in s ['env' ].items ()})
211- # Resolve stdioSecretEnv: { VAR: { name: <secret>, key: <key> (defaults to VAR) } }
212- sec = s .get ('stdioSecretEnv' )
213- if sec and isinstance (sec , dict ):
214- for var , ref in sec .items ():
215- if isinstance (ref , dict ) and ref .get ('name' ):
216- val = k8s_get_secret_val (ref ['name' ], ref .get ('key' ) or var )
217- if val is not None :
218- env_map [var ] = val
227+ # STDIO envFrom: resolve Secrets/ConfigMaps into env for MetaMCP-registered servers
219228 # Resolve envFrom (Secrets/ConfigMaps): pull all key=val pairs into env
220229 for src in (s .get ('envFrom' ) or []):
221230 if not isinstance (src , dict ):
@@ -359,18 +368,4 @@ def list_servers():
359368 trpc_post ('/trpc/frontend/frontend.mcpServers.update' , payload )
360369except Exception :
361370 pass
362- def k8s_get_secret_val (name : str , key : str ):
363- try :
364- token = open ('/var/run/secrets/kubernetes.io/serviceaccount/token' ,'r' ).read ().strip ()
365- cacert = '/var/run/secrets/kubernetes.io/serviceaccount/ca.crt'
366- ns = NS
367- url = f"https://kubernetes.default.svc/api/v1/namespaces/{ ns } /secrets/{ name } "
368- r = requests .get (url , headers = {'Authorization' : f'Bearer { token } ' }, verify = cacert , timeout = 5 )
369- if r .status_code == 200 :
370- data = r .json ().get ('data' ,{})
371- b = data .get (key )
372- if b :
373- return base64 .b64decode (b ).decode ()
374- except Exception :
375- pass
376- return None
371+
0 commit comments