How We Got Local MCP Servers Working in Claude Cowork (The Missing Guide)

Dev.to / 3/26/2026

💬 OpinionDeveloper Stack & InfrastructureIdeas & Deep AnalysisTools & Practical Usage

Key Points

  • The article explains that Claude Cowork runs in a sandboxed VM, which prevents local stdio-based MCP servers from connecting directly to child processes on the user’s machine.
  • It shows that MCP can still work in Cowork by combining two support mechanisms, rather than relying on the commonly repeated claim that MCP is unsupported.
  • First, it leverages an (undocumented) Claude Desktop SDK bridge that automatically forwards MCP servers configured in claude_desktop_config.json into the Cowork VM.
  • Second, it uses supergateway plus pm2 to make local MCP servers reachable and reliably running in production, with the author reporting 18+ servers working.
  • The post provides a complete working setup approach, including configuration examples, intended to serve as a “missing guide” for practitioners integrating MCP with Cowork.

TL;DR: Everyone says "MCP doesn't work in Cowork." We solved it using supergateway + pm2. It worked on the first try. Here's the full setup.

The Problem

Claude Code's Cowork mode runs inside a sandboxed VM. This means local stdio MCP servers — which run as child processes on your machine — simply can't connect. The VM has no access to your local processes.

The community response has been universal: "MCP is not supported in Cowork."

But that's not entirely true.

The Solution: Two Layers

We discovered that Cowork actually supports MCP through two different mechanisms — and by combining them, we got 18+ MCP servers working reliably in production.

Layer 1: Claude Desktop SDK Bridge (Built-in, Undocumented)

What most people don't realize: if you configure MCP servers in your claude_desktop_config.json, Claude Desktop automatically bridges them into the Cowork VM via its SDK layer.

// claude_desktop_config.json (on your local machine)
{
  "mcpServers": {
    "outlook-mcp": {
      "command": "node",
      "args": ["C:/apps/outlook-mcp/dist/index.js"]
    },
    "Windows-MCP": {
      "command": "npx",
      "args": ["-y", "@anthropic/windows-mcp"]
    }
  }
}

These show up in Cowork as "type": "sdk" — meaning Desktop proxies them transparently. No extra configuration needed.

This alone gives you access to any stdio MCP server you've configured locally.

Layer 2: supergateway HTTP Bridge (For Additional Servers)

For MCP servers that aren't in your Desktop config — or that you want to host on a separate machine — we use supergateway to convert stdio MCP servers into HTTP endpoints.

Architecture:

[Cowork VM] --HTTP--> [Your Server:8001-800x] --supergateway--> [MCP Server (stdio)]

Setup steps:

1. Install supergateway

npm install -g supergateway

2. Create a startup script for each MCP server

# start-mcp-servers.sh
supergateway --stdio "npx -y @anthropic/alphabanana-mcp" --port 8001 --baseUrl /mcp &
supergateway --stdio "npx -y @anthropic/mermaid-mcp" --port 8002 --baseUrl /mcp &
supergateway --stdio "npx -y @anthropic/pandoc-mcp" --port 8003 --baseUrl /mcp &
supergateway --stdio "npx -y @anthropic/antv-chart-mcp" --port 8004 --baseUrl /mcp &
supergateway --stdio "npx -y @anthropic/un-markdown-mcp" --port 8005 --baseUrl /mcp &

3. Use pm2 for process management

npm install -g pm2
pm2 start start-mcp-servers.sh --name mcp-bridge
pm2 save
pm2 startup  # auto-start on boot

4. Add to your project's .mcp.json

{
  "mcpServers": {
    "alphabanana": {
      "type": "streamable-http",
      "url": "http://localhost:8001/mcp"
    },
    "mermaid": {
      "type": "streamable-http",
      "url": "http://localhost:8002/mcp"
    }
  }
}

5. (Optional) Access from other machines via Tailscale

If your MCP host machine is on a Tailscale network, replace localhost with the Tailscale IP — and you can access these MCP servers from any device on your network.

The Full Architecture

Cowork VM
  |
  +-- SDK Bridge (automatic)
  |     +-- Claude Desktop proxies locally-configured MCPs
  |         +-- outlook-mcp
  |         +-- Windows-MCP
  |         +-- PDF Tools
  |         +-- Notion
  |         +-- Claude in Chrome
  |         +-- Playwright
  |         +-- Excel MCP
  |         +-- ... (any stdio MCP in claude_desktop_config.json)
  |
  +-- HTTP Bridge (supergateway)
        +-- Remote HTTP endpoints on your server
            +-- :8001 -> alphabanana (image generation)
            +-- :8002 -> mermaid (diagram preview)
            +-- :8003 -> pandoc (document conversion)
            +-- :8004 -> antv-chart (30+ chart types)
            +-- :8005 -> un-markdown (document publishing)

Results

This worked on the first attempt. We now have:

  • 18 MCP servers active simultaneously in Cowork
  • Zero downtime (pm2 auto-restarts on crash)
  • Full functionality — document generation, browser automation, email, calendar, Excel, charts, diagrams, all working inside Cowork

Why This Matters

The "MCP doesn't work in Cowork" narrative is holding back a lot of teams. With this two-layer approach, you get the full power of MCP inside Cowork sessions — which makes Claude Desktop + Cowork a genuinely viable team collaboration platform.

— Murat_construction_Germany