[BUG] Plugin's remote MCP server shadowed with no-ops when a disabled-but-installed Desktop extension exposes the same server name

Resolved 💬 3 comments Opened Apr 26, 2026 by khrynko Closed Apr 30, 2026

Preflight Checklist

  • [x] I have searched existing issues and this hasn't been reported yet
  • [x] This is a single bug report (please file separate reports for different bugs)
  • [x] I am using the latest version of Claude Code

What's Wrong?

When a Claude Desktop extension and a Claude Code plugin both expose an MCP
server with the same name (e.g. "figma"), Claude Desktop "shadows with no-ops"
the plugin's remote MCP server even when the Desktop extension is disabled.
Result: claude mcp list shows the plugin server as ✓ Connected, but its
tools never appear in new chat sessions' deferred-tools list.

What Should Happen?

Figma plugin mcp should be used

Error Messages/Logs

Steps to Reproduce

  1. Install Claude Code plugin figma@claude-plugins-official (cloud MCP at https://mcp.figma.com/mcp).
  2. Install (or have pre-installed) Claude Desktop extension ant.dir.ant.figma.figma (local Dev Mode MCP at 127.0.0.1:3845).
  3. Disable the Desktop extension via Settings → Extensions, but leave the files installed.
  4. Start a new chat.

Expected

mcp__plugin_figma_figma__use_figma (and the rest of the plugin's tool surface) is advertised in the chat's deferred-tools list.

Actual

Tools are silently absent. ToolSearch returns 0 matches. The chat can read but not write to Figma.

Smoking-gun log entry

~/Library/Logs/Claude/main.log:

[info] Plugin "figma@claude-plugins-official" has remote MCP servers (figma).
Shadowing with no-ops to prevent SDK double-load.

This message fires every time a chat session starts while the conflicting
Desktop extension's files are still on disk — even when its isEnabled flag
in Claude Extensions Settings is false.

Claude Model

None

Is this a regression?

I don't know

Last Working Version

_No response_

Claude Code Version

1.4758.0

Platform

Anthropic API

Operating System

macOS

Terminal/Shell

Terminal.app (macOS)

Additional Information

Why this is a bug

The shadow logic should consider extension-disabled state, not just file presence.
Or: shadowing should be visible to the user (UI warning, log surfacing) instead
of silently dropping tools. Currently the user sees ✓ Connected and assumes
the server is healthy — there's no signal that tools are being suppressed.

Environment

  • Claude Desktop: 1.4758.0
  • Claude Code CLI: 2.1.119
  • macOS: 26.3.1 (a) x86_64
  • Plugin: figma@claude-plugins-official v2.1.15 (https://mcp.figma.com/mcp)
  • Conflicting extension: ant.dir.ant.figma.figma (display_name "Figma", v1.0.8)

Evidence

Comparison across 5 sessions in the same project on the same machine on the
same day, all using identical config — only runtime registration differs:

| Session ID | UTC start | Plugin tools registered? |
|---|---|---|
| 3742a5b5 | 10:42 | ✅ (extension still enabled — both servers loaded) |
| 8f6a5ac0 | 10:59 | ✅ (extension enabled at start, disabled later) |
| 10c0b94e | 13:03 | ❌ "Shadowing with no-ops" |
| 0c3083ac | 13:15 | ❌ "Shadowing with no-ops" |
| c780855a | 13:52 | ❌ "Shadowing with no-ops" |

Disabling, toggling, and full app-quit/relaunch did not unstick the shadowing.
Only physically deleting the extension files restored plugin-tool advertising
to new chats.

View original on GitHub ↗

This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗