Skip to content

Figma remote MCP: Code Connect data always empty via Copilot CLI (get_code_connect_map returns {}), while another MCP client gets it for the same user/file/node #5025

Description

@YaRn-mmc

Describe the bug

Copilot CLI never receives Code Connect data from the Figma remote MCP server (https://mcp.figma.com/mcp). get_code_connect_map returns {}, and get_design_context output contains no CodeConnectSnippet elements.

Two other MCP clients (VS Code's Copilot Chat and the claude.ai Figma connector), logged in as the same Figma user and configured with the same server URL, get Code Connect data for the same file, node and arguments. Account, seat, login, file and server entry are identical, so this looks specific to the Copilot CLI's MCP client.

Affected version

GitHub Copilot CLI 1.0.90 (same result on 1.0.90-7 and 1.0.89)

Steps to reproduce the behavior

Run from a directory that is not a git repository (no repo hooks or MCP config involved):

  1. Fetch the Code Connect map of a component that has a published Code Connect template:

    copilot --model claude-sonnet-5 --allow-tool figma \
      --additional-mcp-config '{"mcpServers":{"figma":{"type":"http","url":"https://mcp.figma.com/mcp","tools":["get_code_connect_map"]}}}' \
      -p 'Call the figma MCP tool get_code_connect_map with fileKey "<file key>" and nodeId "<main component node id>". Print the raw JSON result only.'

    Result: {}

  2. Fetch the design context of the same node:

    copilot --model claude-sonnet-5 --allow-tool figma \
      --additional-mcp-config '{"mcpServers":{"figma":{"type":"http","url":"https://mcp.figma.com/mcp","tools":["get_design_context"]}}}' \
      -p 'Call the figma MCP tool get_design_context with fileKey "<file key>", nodeId "<same node id>", clientLanguages "typescript,tsx", clientFrameworks "react", excludeScreenshot true. Tell me how many times the text CodeConnectSnippet occurs in the tool output.'

    Result: 0 occurrences (plain generated code only).

  3. Make the same call in VS Code (Copilot Chat) and with the claude.ai Figma connector, same Figma user, same file and node.

The Figma server can be added by hand (https://mcp.figma.com/mcp) or installed from the CLI's MCP marketplace (com.figma.mcp/mcp, the same registry entry VS Code uses); the result is {} either way.

Expected behavior

The same Code Connect data the other client receives, e.g. for a component with a React template:

{"<node id>": {"label": "React", "hasTemplate": true, "snippetImports": ["import { TableRowCell } from '...'"], "snippet": "<TableRowCell align=\"right\">Cell</TableRowCell>"}, ...}

and CodeConnectSnippet wrappers in get_design_context (7 of them for this component, one per variant).

Additional context

Call (same user, file, node, arguments) Copilot CLI VS Code Copilot Chat claude.ai connector
get_code_connect_map on the component {} 7 mappings with snippets 7 mappings with snippets
get_design_context CodeConnectSnippet count 0 not measured 7
whoami same handle, same plans, Dev seat on the org plan not measured identical

VS Code is configured with the same URL: "com.figma.mcp/mcp": {"type": "http", "url": "https://mcp.figma.com/mcp", "gallery": "https://api.mcp.github.com", "version": "1.0.3"}. The registry record contains only that URL, no OAuth or client metadata.

Ruled out:

  • Account / seat / org: whoami through Copilot returns exactly what the other client returns.
  • Version / install method: 1.0.89, 1.0.90-7 and 1.0.90; manual config and marketplace install; fresh windows. Always {}.
  • Login: re-authenticated with /mcp. The first call afterwards failed with MCP tool catalog changed before tool "figma-get_code_connect_map" could be invoked; the next session returned {} again.
  • Label: passing codeConnectLabel: "React" explicitly makes no difference.
  • File / node: same result for a node in a project file and for the main component in the components file. Earlier sessions over several days, on three different files, all returned {} (4 of 4 calls) and none of 39 get_design_context results contained a CodeConnectSnippet.
  • Rate limits: dozens of Figma calls per day succeed with no rate-limit errors.
  • Timing: the Code Connect templates were published days earlier.

Separate, transient problem: right after re-authenticating, and in a later VS Code chat, the tool call failed with MCP tool catalog changed before tool "..." could be invoked; the tool came back on the next attempt (VS Code) or the next session (CLI). This looks related to #3125 / #4731 and is not the cause of the empty result above, which is consistent (9 of 9 calls) and has no error.

Environment: macOS (arm64), zsh, Figma user with a Dev seat on an organization plan. The CLI log shows the Figma server negotiating protocol version 2026-07-28.

Related: #4906 shows Figma's OAuth registration applies an allowlist on the client name, so the server does distinguish clients. I don't know whether Code Connect output is gated the same way. Others report get_code_connect_map returning {} on the remote server while the desktop server works (Figma forum: "can't get code connect map info from figma remote mcp server"), but those were resolved by publishing the library, which is already the case here.

Could you check whether the client info / capabilities the Copilot CLI sends on initialize differ in a way that makes Figma's server withhold Code Connect data? I can run further diagnostics or capture logs (--log-level) if useful.

Activity

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

    area:mcpMCP server configuration, discovery, connectivity, OAuth, policy, and registry

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions