DEV Community

Cover image for I Built a Unified MCP Gateway That Loads 150+ AI Tools Into Claude Desktop
Jonathan
Jonathan

Posted on • Edited on

I Built a Unified MCP Gateway That Loads 150+ AI Tools Into Claude Desktop

Here's What Actually Broke on Windows

And why I built it from a place most developers never talk about.


The Honest Part First

I'm not a CS grad. I don't have a job. I'm a recovering addict who found code as a way to rebuild something real from scratch.

A few years ago I started teaching myself to program. Not from a bootcamp or a degree — just grinding, failing, asking questions, and refusing to quit. Claude became my coding partner. Not just a tool — a genuine collaborator that met me where I was and helped me build things I had no business building yet.

This project is one of those things.


What I Built

FusionAL is a unified MCP (Model Context Protocol) gateway that loads 150+ AI tools into Claude Desktop via a single Docker container — on Windows, which nobody else had documented properly.

When it's running, Claude Desktop has access to:

  • arxiv — search and retrieve research papers
  • playwright — full browser automation
  • wikipedia, git, memory, fetch, time
  • node-code-sandbox — execute JavaScript safely
  • sequentialthinking — structured reasoning chains
  • duckduckgo — live web search
  • context7 — up-to-date library documentation
  • desktop-commander — terminal and file system control
  • 3 custom servers I built myself:
    • Business Intelligence MCP (natural language → SQL)
    • API Integration Hub (Slack, GitHub, Stripe)
    • Content Automation MCP (web scraping, RSS, monitoring)

One Docker command. 150+ tools. All talking to Claude through a single gateway.


The Six Things That Broke on Windows (That Nobody Documented)

This is the part that took weeks. Every tutorial assumed Mac or Linux. Windows was a completely different beast.

1. Wrong Socket Mount

Every guide says:

-v /var/run/docker.sock:/var/run/docker.sock
Enter fullscreen mode Exit fullscreen mode

On Windows with Docker Desktop + WSL2, the Unix socket at /var/run/docker.sock actually works — but only if Docker Desktop has WSL2 integration enabled. If you're using Windows named pipes (//./pipe/docker_engine) it fails silently with no useful error.

Fix: Keep the Unix socket mount. Make sure WSL2 integration is on in Docker Desktop settings.

2. %USERPROFILE% Not Expanding in Claude Desktop Launcher

Claude Desktop's config file doesn't expand Windows environment variables. So this:

"-v", "%USERPROFILE%\\.docker\\mcp:/mcp"
Enter fullscreen mode Exit fullscreen mode

Fails silently. The container launches but can't find any config files.

Fix: Hardcode the absolute path:

"-v", "C:/Users/puddi/.docker/mcp:/mcp"
Enter fullscreen mode Exit fullscreen mode

3. Puppeteer Downloading Chrome on Every Cold Start

The docker/mcp-gateway image supports a puppeteer server. On first load puppeteer downloads a full Chrome binary (~150MB). Claude Desktop has a 60-second MCP initialization timeout. Puppeteer blows past it every time.

The gateway appears to launch but Claude Desktop silently drops it.

Fix: Remove puppeteer from registry.yaml entirely. Playwright is already in the stack and does everything puppeteer does.

4. Wrong Image Name

Early docs referenced fusional as the gateway image. The actual Docker Hub image is docker/mcp-gateway.

Fix: Use docker/mcp-gateway exactly.

5. Malformed config.yaml

The config.yaml schema for the arxiv server requires a storage_path key in a specific nested structure. Getting it wrong causes the gateway to fail on arxiv init and cascade into other servers not loading.

Fix: Pass --config=/mcp/config.yaml explicitly and validate the schema matches what arxiv expects.

6. docker.exe Not in PATH

Claude Desktop launches MCP servers in a restricted environment that doesn't inherit your full system PATH. Calling docker directly fails.

Fix: Use the full absolute path to the binary:

"command": "C:\\Program Files\\Docker\\Docker\\resources\\bin\\docker.exe"
Enter fullscreen mode Exit fullscreen mode

The Working Config

Here's the exact claude_desktop_config.json that runs 150+ tools:

{
  "mcpServers": {
    "fusional-gateway": {
      "command": "C:\\Program Files\\Docker\\Docker\\resources\\bin\\docker.exe",
      "args": [
        "run",
        "-i",
        "--rm",
        "-v",
        "/var/run/docker.sock:/var/run/docker.sock",
        "-v",
        "C:/Users/YOUR_USERNAME/.docker/mcp:/mcp",
        "docker/mcp-gateway",
        "--catalog=/mcp/catalogs/docker-mcp.yaml",
        "--catalog=/mcp/catalogs/custom.yaml",
        "--registry=/mcp/registry.yaml",
        "--config=/mcp/config.yaml",
        "--transport=stdio"
      ]
    }
  }
}
Enter fullscreen mode Exit fullscreen mode

Replace YOUR_USERNAME with your actual Windows username.


The Custom Servers

The three servers I built are in a separate repo — the MCP Consulting Kit. Each is a FastAPI server with:

  • API key authentication
  • Rate limiting
  • Docker isolation
  • Shared security module across all three

Business Intelligence MCP — point it at any PostgreSQL, MySQL, or SQLite database and ask questions in plain English. It generates and runs the SQL, returns results.

API Integration Hub — Slack messaging, GitHub issue creation, Stripe customer lookups — all through natural language.

Content Automation MCP — scrape any webpage, extract links or tables, parse RSS feeds, monitor pages for changes.


What's Next

I'm turning this into a consulting service. If you're a business that wants Claude Desktop connected to your actual tools — your database, your Slack, your GitHub — I build and deploy that for you.

Both repos are fully open source, MIT licensed, free to use:


The Real Point

I built this because I needed to prove to myself I could. Not for a job interview. Not for a grade. Because building real things that work is how I stay grounded.

If you're learning to code from a hard place — no degree, no connections, no money — keep going. The tools available right now are unlike anything that existed five years ago. Claude will meet you where you are.

You just have to show up.


Questions? Drop them in the comments. I documented everything that broke so you don't have to spend weeks on it like I did.

Top comments (0)