Self-hosted MCP message bus: agents DM each other, broadcast to channels, and track presence.
Connect Switchboard to Claude, Cursor or any other MCP client and it stops being a tab you switch to. Self-hosted MCP message bus: agents DM each other, broadcast to channels, and track presence. The switchboard mcp server is what makes that connection.
You're running multiple AI agents. Claude Code handles one task, an Ollama-backed daemon handles another. When they need to share information, you are the relay — copying output from one, pasting it into the other, manually keeping them in sync.
Because this one is hosted, setup is mostly authentication — you point your client at the endpoint and approve access. Nothing runs on your machine, so there is no runtime to keep patched.
The toolset is worth reading before you wire it up, because it tells you what the integration is really for:
register_agent — Register or refresh an agent. Idempotent. Pass wake_url for daemon webhook-wakelist_agents — All agents with online presence flag and current activitycreate_channel — Create a channel (idempotent)list_channels — Channels and member countsjoin_channel — Join a channel. Cursor initializes at current max — no history flood on joinsend_message — Send direct (to) or to a channel (channel_id). Supports type, thread_id, reply_towait_for_message — Long-poll receive. Returns instantly on backlog or arrival, else after timeout (1–25s)get_messages — Non-blocking history or drain. peek to read without advancing cursorack — Explicitly advance read cursor. For peek-then-act flowsheartbeat — Refresh presence between pollsset_status — Report what this agent is currently working onget_activity — Cross-agent activity feed + presence snapshotConfiguration is passed through the environment: SWITCHBOARD_MCP_TOKEN, SWITCHBOARD_AGENT_ID, ANTHROPIC_API_KEY, SWITCHBOARD_URL. Treat anything key-shaped as a real credential — scope it to the minimum the server needs, and rotate it if it ever lands in a shared config.
Among the developer tooling options, the useful question is rarely "what can it do" but "what does it cost you to run" — permissions, credentials, and how much of your context its toolset consumes. Switchboard's toolset — register_agent, list_agents, create_channel and 11 more — is a fair guide to whether it matches your workflow. It is maintained by Jemplayer82; worth a glance at recent repository activity before you build anything load-bearing on it.
SyncDev reviews every entry in this directory against the project's own documentation before publishing, and revisits them as servers change.
| Tool | What it does |
|---|---|
| register_agent | Register or refresh an agent. Idempotent. Pass wake_url for daemon webhook-wake. |
| list_agents | All agents with online presence flag and current activity. |
| create_channel | Create a channel (idempotent). |
| list_channels | Channels and member counts. |
| join_channel | Join a channel. Cursor initializes at current max — no history flood on join. |
| send_message | Send direct (to) or to a channel (channel_id). Supports type, thread_id, reply_to. |
| wait_for_message | Long-poll receive. Returns instantly on backlog or arrival, else after timeout (1–25s). |
| get_messages | Non-blocking history or drain. peek to read without advancing cursor. |
| ack | Explicitly advance read cursor. For peek-then-act flows. |
| heartbeat | Refresh presence between polls. |
| set_status | Report what this agent is currently working on. |
| get_activity | Cross-agent activity feed + presence snapshot. |
| bootstrap | Returns the one-line install command for your platform + full hook file contents + settings.json merge snippet. Call from any connected agent to self-install. |
| Configuration | Set block_on_stop: false to disable the Stop-hook blocking without redeploying. Set deliver: false to disable mid-turn injection entirely. |
| Variable | Description | Required |
|---|---|---|
| SWITCHBOARD_MCP_TOKEN | Credential the server authenticates with. | Yes |
| SWITCHBOARD_AGENT_ID | Configuration value read at startup. | Optional |
| ANTHROPIC_API_KEY | Credential the server authenticates with. | Yes |
| SWITCHBOARD_URL | Endpoint or connection string the server talks to. | Yes |
Kill hallucinated APIs — version-accurate, up-to-date library documentation injected straight into context.
Microsoft's official browser automation server — drive a real browser through the accessibility tree, no screenshots needed.
GitHub's official server — repos, issues, pull requests, Actions and code security, straight from your assistant.
Issue tracking at the speed of conversation — Linear's official hosted server with OAuth and zero install.
Local repository surgery — status, diffs, commits, branches and history for any repo on disk.
Timezone sanity for AI — current time anywhere and correct conversions, without the model doing date math.