[BUG] Cowork times out attaching a minimal local .mcpb extension
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
stdioserver - 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
- Create a minimal local
.mcpbextension with:
server.type: nodeserver.entry_point: dist/repro-cli-stdio.js- one
stdioMCP server - one read-only tool named
read_runtime_info - no OAuth
- no external API calls
- no user configuration
- Install it in Claude Desktop.
- Confirm the extension works at the app level: the server receives
initializeandtools/list. - Start a brand new Cowork session.
- Observe that the tool never appears in the session.
- Check
main.logand observe a 60-second timeout fromLocalMcpServerManager.
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.
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗