Skip to content

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

Closed

Description

@Just-Jan

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.

Activity

  1. AudunSorheim commented on Sep 16, 2026

    @AudunSorheim

    Same issue in gh copilot app

  2. andyhunti commented on Sep 17, 2026

    @andyhunti

    Still seeing this in CLI 1.0.86-2

  3. makania commented on Sep 17, 2026

    @makania

    Possible related token/config-caching issue (separate from the discovery -32601)

    Separate from the server/discover -32601 you've isolated as client-side — I hit a related OAuth token-caching problem on the same Figma server. It won't be the root cause of the tool-discovery failure (you've correctly ruled auth out), but it may be contributing to the re-auth churn and repeated OAuthChallenge/401 host rebuilds in your logs, so noting it here in case it's useful.

    Contributing factor: an empty "headers": {} object in the server entry in ~/.copilot/mcp-config.json.

    My Figma entry originally looked like this:

    "figma": {
      "type": "http",
      "url": "https://mcp.figma.com/mcp",
      "tools": ["*"],
      "headers": {}
    }

    The empty "headers": {} appears to make the CLI's internal cache key — the one used to name/locate the saved OAuth token file under ~/.copilot/mcp-oauth-config/ — unstable. In my case, listing that directory before and after auth showed two different token files written for the same auth event, and the token loaded on the next run didn't match the one written at auth time. So a valid, non-expired token existed on disk but was never picked up, forcing a fresh /mcp auth figma on every CLI restart.

    Fix: remove the empty headers key entirely, so the entry is just:

    "figma": {
      "type": "http",
      "url": "https://mcp.figma.com/mcp",
      "tools": ["*"]
    }

    After that, /mcp auth figma persisted across restarts and tool discovery succeeded reliably for me.

  4. ItsikBin commented on Sep 17, 2026

    @ItsikBin

    same here, tried to figure it out in the last several hours

  5. miguellgramacho96 commented on Sep 17, 2026

    @miguellgramacho96

    What github copilot cli version are you using as the current workaround @Just-Jan ?

  6. miguellgramacho96 commented on Sep 18, 2026

    @miguellgramacho96

    Still seeing this issue in 1.0.86.
    I can also confirm that the integration with figma still works for vscode.

  7. andyhunti commented on Sep 19, 2026

    @andyhunti

    No longer seeing this issue with 1.0.87 mac & windows. Auth successful.

  8. Just-Jan commented on Sep 20, 2026

    @Just-Jan
    Author

    I tested the new 1.0.87 release and can confirm that the issue is resolved. The Figma MCP is now working as expected.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions