fix MCPHub group publishing and recovery
This commit is contained in:
1 parent
167448d778
commit
9ae7d22618
5 files changed
+67
-4
No files matched your search
@@ -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)
|
||||
|
||||
|
||||
Reference in new issue
Block a user