MCP: Figma remote server (mcp.figma.com) fails to load — `-32601` on `server/discover` treated as fatal (works in VS Code)
还没有人认领这个 Issue。
- 主要语言
- Shell
- 星标
- 11.2k
- 派生
- 1.9k
- 平均合并
- 14 小时 16 分钟
- 30 天内合并 PR
- 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 statussuccess;
valid client registration; keychain token present. - Endpoint is healthy.
curl -i -X POST https://mcp.figma.com/mcpreturns401with a
validwww-authenticateOAuth 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.
贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
调研方向
追踪 CLI 的 MCP discovery 路径,并将 server/discover 的 -32601 Method not found 响应处理方式与现有的不可用 JSON fallback 进行比较。在 https://mcp.figma.com/mcp 上重现,然后验证标准 initialize 会注册所宣告的工具,而不会记录致命失败或反复重建 host。
由索引模型根据 Issue 内容生成。
评估
- 领域
- api, cli
- Issue 类型
- 缺陷
- 难度
- 3/5
- 预计耗时
- 1-2 天
- 活跃度
- 活跃
- 描述清晰度
- 描述清楚
- 新手友好度
- 68/100