github / github/copilot-cli

MCP: Figma remote server (mcp.figma.com) fails to load — `-32601` on `server/discover` treated as fatal (works in VS Code)

Ouverte
#4,870 1 commentaire 4 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

triage
Langage dominant
Shell
Étoiles
11.2k
Forks
1.9k
Merge moyen
14 h 16 min
PR mergées (30 j)
6

Description

Figma MCP server fails to register tools — CLI marks it fatally failed on -32601 from server/discover

Summary

The Figma hosted MCP server (https://mcp.figma.com/mcp) authenticates and initializes
successfully, but the CLI never registers its tools. The CLI's discovery probe receives
-32601 Method not found, records it as a fatal server failure, and enters a
discover_and_start_root full-host-rebuild loop. Other HTTP MCP servers (e.g. MObbin) hit
the same discovery path but recover via "legacy initialize"; Figma's stricter -32601
response trips the fatal path, so Figma tools are never loaded.

Environment

  • GitHub Copilot CLI: 1.0.85 (Homebrew/npm install: /opt/homebrew/bin/copilot -> @github/copilot)
  • OS: macOS (arm64)
  • Figma MCP server negotiated protocol version: 2026-07-28 (fallback 2025-11-25)
  • Figma server advertises tools: tools: Some(ToolsCapability { list_changed: Some(true) })

Not the cause (ruled out)

  • Auth is fine. Logs show Successfully authenticated with figma; OAuth flow status success;
    valid client registration; keychain token present.
  • Endpoint is healthy. curl -i -X POST https://mcp.figma.com/mcp returns 401 with a
    valid www-authenticate OAuth challenge (scope="mcp:connect",
    authorization_uri="https://api.figma.com/.well-known/oauth-authorization-server").
  • Not fixed by enable/disable toggling, re-auth, or full CLI restart.

Observed log sequence (per retry cycle)

[WARNING] mcp::client: server/discover returned an unusable JSON response; retrying with legacy initialize
[INFO]    rmcp::service: Service initialized as client { protocol_version: "2026-07-28",
          capabilities: ... tools: Some(ToolsCapability { list_changed: Some(true) }) ... }
[INFO]    rmcp::service: serve finished { quit_reason: "Cancelled" }
[DEBUG]   rt_mcp::native_host: Recorded failure for server figma: MCP error -32601: Method not found.
[WARNING] copilot_runtime::session::mcp::agent_host: MCP error -32601: Method not found. { server: "figma" }
[DEBUG]   session::mcp::session_host: mcp discover_and_start_root { force: true }
[DEBUG]   session::mcp::session_host: mcp discover_and_start_root: full replace_host path
... loop repeats; figma transport worker crashes repeatedly:
[ERROR]   rmcp::transport::worker: worker quit with fatal: Transport channel closed,
          when Client(OAuthChallenge { ... mcp.figma.com ... status_code: 401 })

In one ~40s post-restart window: ~27 figma transport-worker crashes and ~14 full host rebuilds.

Root cause (hypothesis)

Figma upgraded its MCP server to protocol 2026-07-28, which returns a JSON-RPC
-32601 Method not found for the CLI's server/discover probe. CLI 1.0.85 treats that
-32601 on discovery as a fatal failure for the server (instead of falling back to legacy
initialize, as it does for a malformed/"unusable JSON" discover response). Because Figma is
marked failed, its tools are never registered, and the host is rebuilt in a loop.

Key differentiator: works in VS Code, fails in Copilot CLI (same endpoint)

The identical https://mcp.figma.com/mcp endpoint works in VS Code's MCP client but fails
in Copilot CLI. Standard MCP clients (VS Code, etc.) perform only the standard handshake
(initialize -> tools/list), which Figma answers correctly. Copilot CLI additionally issues
a non-standard server/discover probe first; Figma correctly returns -32601 Method not found for that unknown method, and the CLI records it as a fatal failure — even though its own
fallback initialize succeeds immediately after. This proves the issue is entirely client-side
(Copilot CLI), not an auth, config, network, or Figma-server problem.

Expected behavior

When server/discover returns -32601 Method not found, the CLI should fall back to the
standard initialize handshake (which succeeds here) and register the server's tools,
rather than recording a fatal failure and looping.

Suggested fix

Handle a -32601 response to server/discover the same way as an "unusable JSON" response:
retry with legacy initialize and continue, instead of marking the server fatally failed.

Workaround

Update to a newer CLI build that supports Figma's 2026-07-28 MCP protocol handshake.

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Suivez le chemin de découverte MCP de la CLI et comparez le traitement d’une réponse -32601 Method not found de server/discover avec le fallback existant pour un JSON inutilisable. Reproduisez le problème avec https://mcp.figma.com/mcp, puis vérifiez que l’initialize standard enregistre les outils annoncés sans consigner d’échec fatal ni reconstruire l’hôte à répétition.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Domaine
api, cli
Type d'issue
Bug
Difficulté
3/5
Temps estimé
1-2 jours
Activité
Active
Clarté
Clairement spécifiée
Accessibilité débutants
68/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.