fix MCPHub group publishing and recovery

This commit is contained in:
Mikei386 committed 2026-08-26 11:42:39 +02:00
1 parent 167448d778
commit 9ae7d22618
5 files changed
+67 -4

No files matched your search

+15 -2
View File
@@ -149,10 +149,23 @@ def _install(name: str, config: dict[str, Any]) -> str:
}, ensure_ascii=False)
def _group_id(name: str) -> str:
result = _request("GET", "/groups")
rows = result.get("data", []) if isinstance(result, dict) else []
match = next(
(row for row in rows
if isinstance(row, dict) and (row.get("name") == name or row.get("id") == name)),
None,
)
if not isinstance(match, dict) or not match.get("id"):
raise HubError(f"MCPHub group does not exist: {name}")
return str(match["id"])
def _add_to_group(name: str, tools: list[str] | None = None) -> Any:
if not CLIENT_GROUP:
return {"skipped": "no-client-group"}
group = urllib.parse.quote(CLIENT_GROUP, safe="")
group = urllib.parse.quote(_group_id(CLIENT_GROUP), safe="")
configs = _request("GET", f"/groups/{group}/server-configs")
rows = configs.get("data", []) if isinstance(configs, dict) else []
present = any(isinstance(row, dict) and row.get("name") == name for row in rows)
@@ -238,7 +251,7 @@ def mcphub_admin_publish_to_hermes(name: str, tools: list[str] | None = None) ->
def mcphub_admin_unpublish_from_hermes(name: str) -> str:
"""Remove one server from the central Hermes group without uninstalling or disabling the server itself."""
name = _name(name)
group = urllib.parse.quote(CLIENT_GROUP, safe="")
group = urllib.parse.quote(_group_id(CLIENT_GROUP), safe="")
result = _request("DELETE", f"/groups/{group}/servers/{urllib.parse.quote(name, safe='')}")
return json.dumps({"unpublished": name, "group": CLIENT_GROUP, "result": _redact(result)}, ensure_ascii=False)