mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-07-31 19:16:29 +00:00
fix(mcp): make Figma remote OAuth work via DCR allowlist defaults
Figma's mcp.figma.com register endpoint is a client_name allowlist (Claude Code / Codex succeed; Hermes Agent 403s) and returns a client secret while advertising auth_method=none, then requires the secret on token exchange. Auto-set client_name + client_secret_post for Figma hosts, pass oauth cfg through login/add paths, force interactive OAuth for hermes mcp login from non-TTY desktop shells, and ship a catalog entry. Proven: hermes mcp login figma → 26 tools.
This commit is contained in:
parent
3c388db06b
commit
1eb5ee1eaa
7 changed files with 304 additions and 16 deletions
|
|
@ -13190,15 +13190,18 @@ def _run_dashboard_mcp_oauth(flow, cfg: dict) -> None:
|
|||
# (Figma's MCP catalog, etc.) 403 the register call before any
|
||||
# authorization URL exists — surface what's actually happening
|
||||
# instead of a bare "403 Forbidden".
|
||||
lowered = msg.lower()
|
||||
if "403" in msg and ("regist" in lowered or "forbidden" in lowered):
|
||||
msg = (
|
||||
f"'{flow.server_name}' only allows pre-approved OAuth clients — it rejected "
|
||||
"client registration (403), so no browser flow can start. "
|
||||
"Options: add a pre-registered client to this server's entry "
|
||||
"(oauth: {client_id: ..., client_secret: ...}), or use the "
|
||||
"provider's stdio / API-key server instead."
|
||||
try:
|
||||
from tools.mcp_oauth import humanize_oauth_registration_error
|
||||
|
||||
humanized = humanize_oauth_registration_error(
|
||||
flow.server_name,
|
||||
exc,
|
||||
server_url=cfg.get("url") if isinstance(cfg, dict) else None,
|
||||
)
|
||||
if humanized:
|
||||
msg = humanized
|
||||
except Exception:
|
||||
pass
|
||||
flow.mark_error(msg)
|
||||
finally:
|
||||
flow.mark_worker_done()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue