[BUG] Cowork times out attaching a minimal local .mcpb extension

Resolved 💬 2 comments Opened Mar 31, 2026 by cpinto Closed May 5, 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?

Claude Cowork cannot attach a minimal local .mcpb extension into a session. I created a repro extension with one read-only tool (read_runtime_info), no OAuth, no external APIs, no user configuration, and the app-level MCP handshake succeeds. But once Cowork starts a session, LocalMcpServerManager times out and the tool never appears in-session.

This looks independent of any specific connector implementation because the repro bundle is just:

  • one Node stdio server
  • one read-only tool
  • no network or auth
  • no writes

What Should Happen?

Cowork should attach the local extension when the session starts and expose the single read_runtime_info tool.

Error Messages/Logs

main.log
2026-03-31 17:58:58 [info] [LocalMcpServerManager] Connecting to Cowork Local MCP Repro
2026-03-31 17:58:58 [info] Using UtilityProcess for extension Cowork Local MCP Repro: appConfig.isUsingBuiltInNodeForMcp is true and built-in node is compatible
2026-03-31 17:59:58 [error] [LocalMcpServerManager] Failed to connect to Cowork Local MCP Repro: MCP error -32001: Request timed out

mcp-server-Cowork Local MCP Repro.log
2026-03-31T09:57:49.685Z [Cowork Local MCP Repro] [info] Initializing server...
2026-03-31T09:57:49.692Z [Cowork Local MCP Repro] [info] Using built-in Node.js for MCP server: Cowork Local MCP Repro
2026-03-31T09:57:49.710Z [Cowork Local MCP Repro] [info] Server started and connected successfully
2026-03-31T09:57:49.960Z [Cowork Local MCP Repro] [info] Message from client: {"method":"initialize",...}
2026-03-31T09:57:50.163Z [Cowork Local MCP Repro] [info] Message from server: {"result":{"tools":[{"name":"read_runtime_info",...}]}}
# No corresponding session-level initialize/tools/list appears for the timed-out Cowork attach.

local debug log from the repro entrypoint
2026-03-31T09:58:59.359Z ... "entrypoint":"repro-cli-stdio"
"execPath":"/usr/local/bin/node"
"nodeVersion":"v14.17.3"
"arch":"x64"

The last part is especially suspicious because main.log claims Cowork is using the built-in compatible Node runtime, but the repro process for the timed-out session attach reports /usr/local/bin/node v14.17.3 x64.

Steps to Reproduce

  1. Create a minimal local .mcpb extension with:
  • server.type: node
  • server.entry_point: dist/repro-cli-stdio.js
  • one stdio MCP server
  • one read-only tool named read_runtime_info
  • no OAuth
  • no external API calls
  • no user configuration
  1. Install it in Claude Desktop.
  2. Confirm the extension works at the app level: the server receives initialize and tools/list.
  3. Start a brand new Cowork session.
  4. Observe that the tool never appears in the session.
  5. Check main.log and observe a 60-second timeout from LocalMcpServerManager.

Claude Model

Opus

Is this a regression?

I don't know

Last Working Version

N/A

Claude Code Version

2.1.86 (Claude Code)

Platform

Anthropic API

Operating System

macOS

Terminal/Shell

Terminal.app (macOS)

Additional Information

Claude Desktop app version on this machine is 1.1.9669.

The app-level extension runtime is healthy:

  • the repro server starts
  • completes initialize
  • returns the single tool in tools/list

The failure only happens when Cowork tries to attach the same local extension into the session.

I can provide the minimal repro bundle/source if useful, but the important point is that this reproduces with a one-tool local extension and does not depend on any third-party API, auth flow, or complex connector logic.

View original on GitHub ↗

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