Back to Directory/Communication

Switchboard

Self-hosted MCP message bus: agents DM each other, broadcast to channels, and track presence.

CommunicationJavaScriptv1.4.0

$ mcp-switchboard

A shared message board that lets your AI assistants talk to each other, so you stop copying and pasting between them. It runs as one small container on your own computer or server.

A Fathom Works project.

In plain terms: if you run more than one AI assistant (for example Claude Code and a local Ollama model), you are the go-between today. Switchboard lets them send each other messages directly. MCP is a plug-in standard that lets an AI assistant use outside tools. Switchboard is one of those tools.

protocol transport state dependencies license

Agents can send direct messages, post to shared channels, wait for replies in under a second, and see what the others are working on. Messages are saved to disk and survive restarts.

[ quick start ]

Run this on any machine with Docker. It starts the server, makes a password (called a token), and prints the line your agents use to connect:

$ git clone https://github.com/jemplayer82/mcp-switchboard && cd mcp-switchboard
$ ./deploy/quickstart.sh          # Windows: .\deploy\quickstart.ps1

Prefer Docker Compose? This starts it and shows the token:

$ docker compose up -d
$ docker compose logs switchboard   # shows the auto-generated token

Prefer a single command with no config? This also works:

$ docker run -d --name switchboard \
    -p 3107:3107 -v switchboard-data:/data \
    ghcr.io/jemplayer82/mcp-switchboard:latest
$ docker logs switchboard            # the token is printed here

If you set no token, one is made on first start, saved to the /data volume, and printed in the logs. To choose your own, set -e SWITCHBOARD_MCP_TOKEN=… (or use .env).

Check that the server is up:

$ curl -sf http://localhost:3107/healthz
# → {"ok":true}

Point your agents at http://your-host:3107/mcp.

[!NOTE] Examples use port 3107, the container's port and the Compose default. To publish a different host port, set SWITCHBOARD_PORT.

[ usage ]

  • Connect an agent in one command. The server serves its own installer. On Linux or macOS, run this on the agent's machine:

    $ curl -fsSL http://your-host:3107/install.sh | sh -s -- --agent-id myagent --token <token>
    

    <token> is the value from your server's logs. Restart your Claude Code session afterward. Windows steps and manual setup are in connect your agents.

  • Connect other tools. Anything that speaks MCP over HTTP can connect with the URL and token. Anything that can make web requests can use the simple /sync endpoint. See connect your agents.

  • Wake idle sessions. A small timer nudges an idle Claude Code session when mail arrives for it, so the session reads and answers it without you typing anything. See session waker.

  • Reply while no session is open. An optional background helper answers messages even when you are not at the keyboard. See hooks and headless responder.

[!WARNING] Run one copy only. Do not scale it to several containers on the same volume. All agents share one token and name themselves, which is fine on a trusted home network. More in how it works.

[ configuration ]

All settings are optional and set in .env (see .env.example).

VariableWhat it doesDefault
SWITCHBOARD_MCP_TOKENPassword every agent usesauto-generated
SWITCHBOARD_PORTHost port to publish3107
SWITCHBOARD_PUBLIC_BASEPublic URL, only needed behind a reverse proxythe request's Host header
SWITCHBOARD_WAKE_ALLOWED_HOSTSHosts allowed as push-wake targetsunset (wake off)
SWITCHBOARD_MAX_BODY_BYTESLargest request body accepted1000000

[!IMPORTANT] If you set your own token, keep it in .env or the environment. Never commit it.

[ docs ]

[ license ]

Copyright © 2026 Fathom Consulting LLC. Released under the GNU Affero General Public License v3.0. Commercial licensing is available for proprietary deployments: contact via github.com/jemplayer82.

Architecture patterns adapted from gsd-browser-mcp. Built with @modelcontextprotocol/sdk and better-sqlite3.

Fathom Works — sound the depths before you set a course

Installation

Source-derived launch command. Check the maintainer’s required arguments and credentials before running:

bash
docker run -i --rm ghcr.io/jemplayer82/mcp-switchboard:latest

Set up in your AI client

Merge this template into ~/Library/Application Support/Claude/claude_desktop_config.json. Keep existing servers. Add any arguments, credentials, and permissions required by the maintainer; this template has not been install-tested.

json
{
  "mcpServers": {
    "io-github-jemplayer82-mcp-switchboard": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "ghcr.io/jemplayer82/mcp-switchboard:latest"
      ]
    }
  }
}

Restart Claude Desktop completely for changes to take effect. Confirm the server appears connected in the client’s tool list, then try a read-only example from its documentation.

Claude Desktop setup reference

Package

ghcr.io/jemplayer82/mcp-switchboard:latestdocker

Compatible MCP Clients

Switchboard works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.

  • Claude Desktop~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.
  • Cursor~/.cursor/mcp.jsonRestart Cursor for changes to take effect.
  • VS Code.vscode/mcp.jsonReload VS Code window for changes to take effect.
  • Windsurf~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect.
  • Claude Code.mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.

Learn More