Skip to content

Commit 6dccb93

Browse files
committed
updates
1 parent 874180d commit 6dccb93

File tree

7 files changed

+35
-61
lines changed

7 files changed

+35
-61
lines changed

charts/metamcp/Chart.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ apiVersion: v2
22
name: metamcp
33
description: MetaMCP aggregator Helm chart for Kubernetes
44
type: application
5-
version: 0.1.16
5+
version: 0.1.19
66
appVersion: "latest"
77
icon: https://icoretech.github.io/helm/charts/metamcp/logo.png
88
keywords:

charts/metamcp/README.md

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -205,11 +205,10 @@ provision:
205205
# Plain env (non-secret)
206206
env:
207207
LOG_LEVEL: debug
208-
# Secret-backed env: the provision Job reads Secret/<name> key=<key> and sets VAR=value when creating the server
209-
stdioSecretEnv:
210-
FIGMA_API_KEY:
211-
name: figma-mcp-env
212-
key: FIGMA_API_KEY
213-
FIGMA_PERSONAL_ACCESS_TOKEN:
214-
name: figma-mcp-env
215-
key: FIGMA_PERSONAL_ACCESS_TOKEN
208+
# Secret-backed env for STDIO: use envFrom
209+
# The provision Job reads Secret/figma-mcp-env and injects all key/values
210+
# into the MetaMCP server config (not into a Pod), so the STDIO process
211+
# sees them when MetaMCP launches it.
212+
envFrom:
213+
- secretRef:
214+
name: figma-mcp-env

charts/metamcp/README.md.gotmpl

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -147,11 +147,7 @@ provision:
147147
# Plain env (non-secret)
148148
env:
149149
LOG_LEVEL: debug
150-
# Secret-backed env: the provision Job reads Secret/<name> key=<key> and sets VAR=value when creating the server
151-
stdioSecretEnv:
152-
FIGMA_API_KEY:
153-
name: figma-mcp-env
154-
key: FIGMA_API_KEY
155-
FIGMA_PERSONAL_ACCESS_TOKEN:
156-
name: figma-mcp-env
157-
key: FIGMA_PERSONAL_ACCESS_TOKEN
150+
# Secret-backed env for STDIO: use envFrom to pull all keys from a Secret/ConfigMap
151+
envFrom:
152+
- secretRef:
153+
name: figma-mcp-env

charts/metamcp/scripts/provision.py

Lines changed: 21 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -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)
360369
except 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+

charts/metamcp/templates/hpa.yaml

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,4 @@ spec:
2727
type: Utilization
2828
averageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }}
2929
{{- end }}
30-
- type: Resource
31-
resource:
32-
name: memory
33-
target:
34-
type: Utilization
35-
averageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage | default 80 }}
3630
{{- end }}

charts/metamcp/templates/provision-config.yaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,9 @@ data:
1818
{{- $hasDeploy := or (hasKey $s "node") (or (hasKey $s "python") (hasKey $s "image")) -}}
1919
{{- $port := (default 3001 $s.port) -}}
2020
{{- $svcBase := (printf "%s-%s.%s.svc.cluster.local:%d" $fullname $name $ns ($port | int)) -}}
21-
{{- /* Build minimal server dict for the job */ -}}
21+
{{- /* Build server dict for the job, including STDIO env sources */ -}}
2222
{{- $item := dict "name" $name "enabled" (default true $s.enabled) "type" $s.type "url" $s.url "bearerToken" $s.bearerToken "headers" ($s.headers | default (dict)) "command" ($s.command | default "") "args" ($s.args | default (list)) "env" ($s.env | default (dict)) -}}
23+
{{- if (hasKey $s "envFrom") }}{{- $_ := set $item "envFrom" ($s.envFrom | default (list)) -}}{{- end -}}
2324
{{- if $hasDeploy }}{{- $_ := set $item "serviceBase" $svcBase -}}{{- end -}}
2425
{{- $outServers = append $outServers $item -}}
2526
{{- end -}}

charts/metamcp/values.schema.json

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -48,17 +48,6 @@
4848
"extraEnv": { "type": "array", "items": { "type": "object" } },
4949
"envFrom": { "type": "array", "items": { "type": "object" } },
5050
"secretEnv": { "type": "object", "additionalProperties": { "type": "string" } }
51-
,"stdioSecretEnv": {
52-
"type": "object",
53-
"additionalProperties": {
54-
"type": "object",
55-
"properties": {
56-
"name": { "type": "string" },
57-
"key": { "type": "string" }
58-
},
59-
"required": ["name"]
60-
}
61-
}
6251
,"port": { "type": ["integer","null"], "minimum": 1 }
6352
,"resources": { "type": "object" }
6453
,"securityContext": { "type": "object" }

0 commit comments

Comments
 (0)