Claude Desktop: LocalMcpServerManager doesn't reconnect after extension settings change, breaking code tab MCP tools

Resolved 💬 2 comments Opened Mar 9, 2026 by ssalzman-kobold Closed Mar 12, 2026

Bug Description

Changing a Claude Desktop Extension's settings (e.g., updating a URL in user_config) causes the MCP server process to restart. After this restart, the LocalMcpServerManager (which manages MCP connections for code tabs) never reconnects. All new code tab sessions created after the settings change launch without the extension's tools, even though:

  • The MCP server itself restarts successfully
  • Chat tabs continue to work fine
  • LocalPluginsReader continues to find the plugin
  • The extension is enabled and not on the blocklist

The only fix is a full Claude Desktop restart.

Steps to Reproduce

  1. Install a local MCP extension (e.g., a .mcpb Claude Extension)
  2. Open a code tab — confirm extension tools are available and working
  3. Go to the extension's settings and change a config value (e.g., update a URL)
  4. Open a new code tab — extension tools are missing

Expected Behavior

New code tab sessions should get the extension's MCP tools after a settings change, just like chat tabs do.

Actual Behavior

The LocalMcpServerManager connects on the first code tab session after app launch, but after an extension settings change triggers an MCP process restart, it never reconnects. All subsequent code tab sessions are created without the extension tools.

Log Evidence

Working session (first code tab after app launch):

09:20:10 [info] Starting local session local_906192ee in /Users/.../workspace
09:20:10 [info] [LocalMcpServerManager] Connecting to KoBold JupyterHub MCP
09:20:10 [info] [LocalMcpServerManager] Connected to KoBold JupyterHub MCP (6 tools)
09:20:10 [info] [CCD] Passing 1 plugin(s) to SDK (skills: 1, local: 0)

Between sessions — extension settings changed, MCP process restarts:

10:49:00 [info] Config file written
(MCP server log) Server transport closed unexpectedly
(MCP server log) Server disconnected
(MCP server log) Initializing server...  ← restarts fine
(MCP server log) Server started and connected successfully
(MCP server log) tools/list → 6 tools  ← MCP server is healthy

Broken session (new code tab after settings change):

11:44:38 [info] Starting local session local_2b00d2d0 in /Users/.../workspace/localmcp
11:44:38 [info] Using Claude Code binary at: .../claude-code/2.1.64/claude
11:44:38 [info] [CCD] Passing 1 plugin(s) to SDK (skills: 1, local: 0)
                       ^^^ NO LocalMcpServerManager connection attempt

Note that LocalPluginsReader continues finding the plugin after the break:

10:49:03 [info] [LocalPluginsReader] Found 1 local plugins
10:56:19 [info] [LocalPluginsReader] Found 1 local plugins  
12:06:14 [info] [LocalPluginsReader] Found 1 local plugins

But LocalMcpServerManager never reconnects — the last connection was at 09:20:10.

Environment

  • Claude Desktop (macOS)
  • Claude Code binary: 2.1.64
  • Extension type: .mcpb (local stdio-based Node.js MCP server)
  • The MCP server process is managed via UtilityProcess with built-in Node.js

Workaround

Fully restart Claude Desktop after changing extension settings.

View original on GitHub ↗

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