[BUG] Desktop Extension MCP servers not passed to Cowork VM despite being enabled in session config
Bug Report
Product: Claude Desktop (macOS)
Version: 1.1.3189 (1b7b58) — 2026-02-14T00:09:46.000Z
Related Issues: #20377 (closed as completed on Feb 14, but issue persists)
Description
Desktop Extension MCP servers (Filesystem, Context7, Control your Mac) are enabled and running correctly in Claude Desktop Chat mode, but are not forwarded to Cowork VM sessions. The --mcp-config argument passed to the Claude process inside the VM only includes SDK-type servers (Claude in Chrome), completely omitting all desktop extension MCP servers.
The session metadata (enabledMcpTools in the session JSON) correctly lists all local MCP tools as enabled, but the VM process spawner ignores them when constructing the --mcp-config and --allowedTools arguments.
Steps to Reproduce
- Install desktop extension MCP servers (e.g., Filesystem, Context7, Control your Mac) via Claude Desktop Extensions
- Verify they show as
"status": "running"in~/Library/Logs/Claude/mcp-info.json - Verify tools work correctly in Claude Desktop Chat mode (they do)
- Open a new Cowork session
- Ask Claude to list its available MCP tools
Result: Only mcp__Claude_in_Chrome__* tools are available. No Filesystem, Context7, or Control your Mac tools.
Expected Behavior
All enabled desktop extension MCP servers should be available to the Cowork VM, matching the enabledMcpTools configuration in the session JSON. The --mcp-config passed to the VM Claude process should include entries for Filesystem, Context7, and Control your Mac alongside the SDK-type servers.
Actual Behavior
The --mcp-config argument passed to the VM process only includes SDK-type servers:
{"mcpServers":{"Claude in Chrome":{"type":"sdk","name":"Claude in Chrome"}}}
Desktop extension servers are completely absent. Evidence from cowork_vm_node.log:
Current sessions (Feb 17, build 3189):
--allowedTools Task,Bash,Glob,Grep,Read,Edit,Write,NotebookEdit,WebFetch,TodoWrite,WebSearch,Skill,
mcp__mcp-registry__search_mcp_registry,mcp__mcp-registry__suggest_connectors,
mcp__plugins__search_plugins,mcp__plugins__suggest_plugin_install,
mcp__scheduled-tasks__list_scheduled_tasks,mcp__Claude_in_Chrome
--mcp-config {"mcpServers":{"Claude in Chrome":{"type":"sdk","name":"Claude in Chrome"}}}
No mcp__Filesystem__*, mcp__Context7__*, or mcp__Control_your_Mac__* in --allowedTools.
No Filesystem, Context7, or Control your Mac entries in --mcp-config.
Meanwhile, the session JSON correctly has them all enabled:
"enabledMcpTools": {
"local:Filesystem:edit_file": true,
"local:Filesystem:read_file": true,
"local:Filesystem:write_file": true,
"local:Context7:get-library-docs": true,
"local:Context7:resolve-library-id": true,
"local:Control your Mac:osascript": true
// ... all set to true
}
Additionally, the situation has regressed over successive builds. Older sessions (pre-Feb 13) at least included mcp-registry and cowork SDK servers in the config:
// Pre-Feb 13:
{"mcpServers":{"Claude in Chrome":...,"mcp-registry":...,"cowork":...}}
// Feb 17 (current):
{"mcpServers":{"Claude in Chrome":...}}
Troubleshooting Attempted
- Confirmed all 3 MCP servers show
"status": "running"inmcp-info.json - Confirmed all 3 servers initialize successfully in
mcp.log(handshake, tool listing, no errors) - Confirmed tools work correctly in Claude Desktop Chat mode
- Fully quit (Cmd+Q) and relaunched Claude Desktop
- Opened fresh Cowork sessions — same result
- Checked
cowork_vm_node.log— confirmed--mcp-confignever includes desktop extension servers
Environment
- OS: macOS ARM (Apple Silicon)
- Claude Desktop: 1.1.3189 (1b7b58) — built 2026-02-14
- MCP Server Transport: stdio (via desktop extensions)
- Affected Servers:
- Filesystem (
ant.dir.ant.anthropic.filesystem) — Node-based - Context7 (
context7) — Node-based - Control your Mac (
ant.dir.gh.k6l3.osascript) — Node-based - Works in: Claude Desktop Chat mode
- Broken in: Cowork mode (all sessions)
Additional Context
- Issue #20377 was closed as completed on Feb 14, 2026, but this build (also from Feb 14) still exhibits the exact same problem.
- The
mcp-info.jsonconfig andmcp.logconfirm all servers are running and healthy on the host side — the issue is exclusively in how the Cowork VM spawner constructs the--mcp-configargument. - The
enabledMcpToolssession metadata proves the Desktop app _knows_ about these tools and marks them as enabled — it just doesn't pass them through to the VM process. - All affected servers are Node-based desktop extensions using stdio transport. The only server that works in Cowork (
Claude in Chrome) usestype: "sdk"(internal IPC bridge).
17 Comments
Found 3 possible duplicate issues:
This issue will be automatically closed as a duplicate in 3 days.
🤖 Generated with Claude Code
Those are related issues, but it seems they still persist or were introduced again. Here are some additional logs:
mcp.log
session-enabledMcpTools.json
cowork-vm-node-spawn.log
mcp-info.json
I believe I'm dealing with a related issue on Windows 11.
Installed Metabase MCP from the Claude extension library and it works just fine in Claude Chat, but I'm getting the error:
Missing user:mcp_servers scopeand the current Cowork session only hasuser:inferencescope.Version: Claude 1.1.3363 (ee4247) 2026-02-17T15:55:21.000Z
After the recent update to
Claude 1.1.4328 (d8e391) 2026-02-25T17:04:36.000Z, the build in chrome and newly added scheduled tasks are working within cowork, but custom node based local one still don't work within cowork.The custom one listed above, so context7 and Control your Mac seem not to be passed / bridged into the cowork VM.
MCP Server | Status | Notes
-- | -- | --
Claude in Chrome | ✅ Working | Full tool access — tabs, navigation, screenshots, etc.
Filesystem | ✅ Working | Can mount directories and read/write files via mcp__cowork__ tools
Context7 | ❌ No tools exposed | Not available in Cowork
Control your Mac | ❌ No tools exposed | Not available in Cowork
ey @Klizzy,
I’m currently working on a Unity server MCP. It’s been working fine on my end (it’s actually been working since I started building it about four days ago). It was originally set up in Node, but I migrated it to MCPB following your latest message.
Unfortunately, I can’t get it to work for the rest of my team. Claude doesn’t detect it on their side and it doesn’t appear in the list of available connectors. However, on my end, it shows up correctly under Extensions → Developer.
Do you have any idea what might be causing this discrepancy?
Hello @francoios ,
was your MCP server running locally successfully within a cowork session, or only inside regular claude desktop chats- and code?
Remote MCP servers seems to work for some users, based on some related GH issues comments.
Actually i found out the issue with most of the MCP that weren't working.
It's related to maximum amount of tools, which is approx 40 within an MCP, so if you experience the same issue, it's mostly because of that.
Implementing a Proxy + lazy loading fix the thing !
@francoios
That's nice to hear and good to know. In my case the total tool amount is ~6, so it seam that is related to something else - at least for my case.
I'm running into this on Claude Desktop on MacOS (Claude 1.1.5368 (d12d02) 2026-03-05T17:29:33.000Z) and a bunch of the stuff I want to do requires mcps :-(
After the session starts -- I can say "no really the <mcp server> is installed and running" and it's like "oh! you're right".
This obv doesn't work for scheduled tasks to behave properly though when those tasks rely on the mcp. I've even adjusted the prompts to add:
IMPORTANT: The <mcp server> is installed, use it.Following up on this ticket. I've done additional debugging and can confirm the issue is not configuration-related.
What's verified on my machine:
Tableau extension (ant.dir.gh.tableau.tableau-mcp v1.13.10) is correctly installed in ~/Library/Application Support/Claude/extensions-installations.json
Extension settings file exists at Claude Extensions Settings/ant.dir.gh.tableau.tableau-mcp.json with isEnabled: true and valid PAT credentials
Tableau works correctly in Claude Desktop chat using this same extension
A colleague with an identical setup (same extension version, same config structure, same org) has Tableau working in Cowork
The problem:
Cowork does not surface the Tableau extension as an available tool despite the extension being properly installed and enabled. The Cowork connector registry returns no Tableau entry. This appears to be instance-specific, not org-wide.
Likely root cause:
This matches GitHub issues #28695 and #26259, where the Cowork OAuth token only includes user:inference but never requests user:mcp_servers, preventing extensions from loading in Cowork. Re-authentication does not resolve it because the re-auth flow also omits the required scope.
Already tried (no effect):
Uninstalling and reinstalling the Tableau extension
Generating a new PAT and reconfiguring
Restarting Claude Desktop
Is there a timeline for the fix?
Adding evidence of intermittent behavior on the same machine, same user, no config changes between sessions:
Three consecutive Cowork sessions on macOS (Claude 1.1.7714):
bold-pensive-bell—"App Framework"present in--mcp-config✅wonderful-stoic-johnson—"App Framework"missing from--mcp-config❌jolly-tender-lamport—"App Framework"back in--mcp-config✅Also reproduces on Windows — most recent spawn had the extension missing from config.
mcp-server-App Framework.logconfirms the server starts, completesinitialize, and returns all tools viatools/listcorrectly every single time on both platforms. The issue is entirely in the orchestrator's spawn config generation — it's a race condition that non-deterministically omits extensions.Additional observations:
.mcpbuploadMore detail here: https://github.com/anthropics/claude-code/issues/36405
Adding a data point that narrows this down to a timing/race condition rather than extensions being blanket-excluded.
I'm seeing the same desktop extension ("Google Docs & Sheets", custom
.mcpb) appear intermittently in--mcp-config— present in some sessions, absent in others, within the same app lifecycle. Other internal extensions exhibit the same behaviour.From
cowork_vm_node.logon 2026-03-25 (macOS ARM, VM bundlefb30784, SDK v2.1.78):New session spawned at 08:30:19 — Google Docs & Sheets missing from
mcpServers:[Spawn:create] name=blissful-gallant-newton
--mcp-config {"mcpServers":{..., "plugins":{"type":"sdk","name":"plugins"}, "":{"type":"sdk","name":""},...}}
Same session resumed at 08:36:56 — Google Docs & Sheets now present, along with another extension that was also missing at initial spawn:
[Spawn:create] name=blissful-gallant-newton --resume 2ceab011-...
--mcp-config {"mcpServers":{..., "Google Docs & Sheets":{"type":"sdk","name":"Google Docs & Sheets"}, "":{"type":"sdk","name":""}, "":{"type":"sdk","name":""},...}}
App quit at 08:41:50, VM rebooted. All subsequent new sessions are missing Google Docs & Sheets again, but a new UUID-identified server (
f5438224-...) appears that wasn't present before the restart:[Spawn:create] name=eloquent-peaceful-brahmagupta
--mcp-config {"mcpServers":{"f5438224-...":{"type":"sdk","name":"f5438224-..."}, ..., "":{"type":"sdk","name":""},...}}
So the
mcpServersconfig is being snapshotted at spawn time before all extensions have finished registering. Resumed sessions pick up the late registrations because the extensions have completed their handshake by then. After a VM restart the same extension canreappear under a UUID rather than its display name, which suggests registration state isn't persisted across VM lifecycles.
Aligns with @freeformz's finding that manually telling Claude
the MCP exists works mid-session — the server is running on the host, it's just absent from the spawn config.
Adding another affected extension: iMessage MCP (
ant.dir.ant.anthropic.imessage) is also not exposed to Cowork sessions despite being enabled in settings.All 4 tools (Search Contacts, Read iMessages, Get Unread iMessages, Send iMessage) are toggled on in the Cowork settings UI, but none appear in the session's deferred tools list. No error banner is shown — the failure is completely silent.
Other MCP extensions (Gmail, Slack, Google Calendar, ClickUp, Chrome, PagerDuty, Make.com, AWS) all connect fine in the same session.
Environment: macOS Apple Silicon, Claude Desktop latest version (March 29, 2026), Full Disk Access granted to Claude.app. iMessage extension v0.1.11 (with the FDA pre-check fix from #21737).
Filed as #40703, closing that as duplicate of this issue.
Following up on this as I'm still hitting the same issue on macOS 15.7.1 (24G231), build 2.1.87, and have dug into the session logs which might help narrow things down.
Key finding: the behaviour is intermittent, not a hard omission
After testing across multiple sessions with identical config, some local Desktop Extension connectors come through fine while others are missing — and which ones are absent varies between sessions. A session restart sometimes resolves it. This points to a race condition rather than a filtering bug.
Importantly, it's not all local connectors that fail — in the session below,
Fathom(10 tools) andGoogle Docs & Sheets(67 tools) both came through correctly aslocal:type connectors, whileInternalAPIConnector(6 tools) andComplianceTool(4 tools) did not. Same session, same config.Evidence from session logs
enabledMcpToolsinlocal_<session-id>.jsoncorrectly records all connectors as enabled:But
remoteMcpServersConfig— the actual config forwarded to the VM — only contains these 10 servers:InternalAPIConnectorandComplianceToolare absent entirely.FathomandGoogle Docs & Sheetsare also absent fromremoteMcpServersConfigbut are available in the session — so they must be reaching the VM via a different path, which makes the inconsistency harder to explain.Hypothesis
Whatever process populates
remoteMcpServersConfigis reading local server state at a point where some have finished initialising and some haven't. The ones that miss the window are silently dropped with no error. The fact that different connectors fail across different sessions — with no config change — is consistent with a timing/ordering issue during startup.Happy to share the full sanitised session JSON if it helps.
--
This is essentially blocking our entire organisation from properly using cowork as we depend on a lot of internal desktop extensions. Some acknowledgement from the core team would be appreciated, this thread is looking stale.
Closing for now — inactive for too long. Please open a new issue if this is still relevant.
This issue has been automatically locked since it was closed and has not had any activity for 7 days. If you're experiencing a similar issue, please file a new issue and reference this one if it's relevant.