Skip to content

Commit 5901810

Browse files
committed
metamcp: include required fields in update payloads (url for HTTP/SSE, command for STDIO) to avoid 400 validation errors; bump to 0.1.26
1 parent 596903f commit 5901810

File tree

2 files changed

+26
-29
lines changed

2 files changed

+26
-29
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.25
5+
version: 0.1.26
66
appVersion: "latest"
77
icon: https://icoretech.github.io/helm/charts/metamcp/logo.png
88
keywords:

charts/metamcp/scripts/provision.py

Lines changed: 25 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -263,41 +263,38 @@ def k8s_get_configmap_data(name: str):
263263
try:
264264
current = srv_info.get(name, {})
265265
patch = {'uuid': current.get('uuid'), 'name': name, 'type': st}
266-
changed = False
267-
if desired_url and (current.get('url') or '') != desired_url:
268-
patch['url'] = desired_url; changed = True
269-
if 'bearerToken' in body and (current.get('bearerToken') or '') != body.get('bearerToken'):
270-
patch['bearerToken'] = body['bearerToken']; changed = True
266+
# Always include required field for HTTP/SSE: url
267+
if desired_url:
268+
patch['url'] = desired_url
269+
# Optional fields
270+
if 'bearerToken' in body:
271+
patch['bearerToken'] = body['bearerToken']
271272
if 'headers' in body:
272-
# best-effort compare
273-
cur_headers = current.get('headers') or {}
274-
if cur_headers != body['headers']:
275-
patch['headers'] = body['headers']; changed = True
276-
if changed:
277-
r = trpc_post('/trpc/frontend/frontend.mcpServers.update', patch)
278-
if r.ok:
279-
log(f"server updated: {name}")
280-
else:
281-
log(f"WARN server update {name} -> {r.status_code}: {r.text[:160]}")
273+
patch['headers'] = body['headers']
274+
r = trpc_post('/trpc/frontend/frontend.mcpServers.update', patch)
275+
if r.ok:
276+
log(f"server updated: {name}")
277+
else:
278+
log(f"WARN server update {name} -> {r.status_code}: {r.text[:160]}")
282279
except Exception:
283280
pass
284281
elif UPDATE_EXISTING and st == 'STDIO':
285282
try:
286283
current = srv_info.get(name, {})
287284
patch = {'uuid': current.get('uuid'), 'name': name, 'type': st}
288-
changed = False
289-
if desired_cmd is not None and (current.get('command') or '') != desired_cmd:
290-
patch['command'] = desired_cmd; changed = True
291-
if desired_args is not None and (current.get('args') or []) != desired_args:
292-
patch['args'] = desired_args; changed = True
293-
if desired_env is not None and (current.get('env') or {}) != desired_env:
294-
patch['env'] = desired_env; changed = True
295-
if changed:
296-
r = trpc_post('/trpc/frontend/frontend.mcpServers.update', patch)
297-
if r.ok:
298-
log(f"server updated: {name}")
299-
else:
300-
log(f"WARN server update {name} -> {r.status_code}: {r.text[:160]}")
285+
# Always include required field for STDIO: command
286+
if desired_cmd is not None:
287+
patch['command'] = desired_cmd
288+
# Include args/env when provided
289+
if desired_args is not None:
290+
patch['args'] = desired_args
291+
if desired_env is not None:
292+
patch['env'] = desired_env
293+
r = trpc_post('/trpc/frontend/frontend.mcpServers.update', patch)
294+
if r.ok:
295+
log(f"server updated: {name}")
296+
else:
297+
log(f"WARN server update {name} -> {r.status_code}: {r.text[:160]}")
301298
except Exception:
302299
pass
303300
continue

0 commit comments

Comments
 (0)