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)

オープン
#4,870 コメント 1 件 リアクション 4 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

triage
主要言語
Shell
スター
11.2k
フォーク
1.9k
平均マージ
14時間 16分
マージ済み PR(30日)
6

説明

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.

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

調査の方向性

CLI の MCP discovery パスを追跡し、server/discover-32601 Method not found 応答の処理を、既存の使用できない JSON に対するフォールバックと比較します。https://mcp.figma.com/mcp に対して再現し、その後、標準の initialize によって提示されたツールが登録され、致命的な失敗が記録されたり host が繰り返し再構築されたりしないことを確認します。

索引モデルが issue の本文から書いたものです。

評価

領域
api, cli
issue の種類
バグ
難易度
3/5
見積もり時間
1〜2日
活発さ
活発
明瞭さ
明確に書かれている
初心者へのやさしさ
68/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。