A community-driven registry for Claude, Cursor, Windsurf, Cline & more. Not affiliated with Anthropic.
Are you the author? Sign in to claim
One MCP server to rule them all. Aggregates GitHub, Datadog, Linear, Sentry, Slack, and Metabase behind a single search/
A unified MCP server written in Go that aggregates multiple integrations (GitHub, Datadog, Linear, Sentry, Slack, Metabase) behind a single MCP endpoint, with a web UI for easy configuration.
brew install daltoniam/tap/switchboard
scoop bucket add daltoniam https://github.com/daltoniam/scoop-bucket
scoop install switchboard
# Download the latest .deb from GitHub releases
curl -LO "https://github.com/daltoniam/switchboard/releases/latest/download/switchboard_$(curl -s https://api.github.com/repos/daltoniam/switchboard/releases/latest | grep tag_name | cut -d '"' -f4 | tr -d v)_linux_amd64.deb"
sudo dpkg -i switchboard_*.deb
# Download the latest .rpm from GitHub releases
curl -LO "https://github.com/daltoniam/switchboard/releases/latest/download/switchboard_$(curl -s https://api.github.com/repos/daltoniam/switchboard/releases/latest | grep tag_name | cut -d '"' -f4 | tr -d v)_linux_amd64.rpm"
sudo rpm -i switchboard_*.rpm
yay -S switchboard-bin
# Download the latest .apk from GitHub releases
curl -LO "https://github.com/daltoniam/switchboard/releases/latest/download/switchboard_$(curl -s https://api.github.com/repos/daltoniam/switchboard/releases/latest | grep tag_name | cut -d '"' -f4 | tr -d v)_linux_amd64.apk"
sudo apk add --allow-untrusted switchboard_*.apk
go install github.com/daltoniam/switchboard/cmd/server@latest
Pre-built binaries for macOS, Linux, and Windows (amd64/arm64) are available on the GitHub Releases page.
┌─────────────┐ stdio / SSE ┌──────────────────────┐
│ AI Client │ ◄──────────────────► │ Unified MCP Server │
│ (Cursor, etc)│ │ │
└─────────────┘ │ ┌─────────────────┐ │
│ │ Tool Router │ │
┌──────────────────┐ │ └────────┬────────┘ │
│ Web UI (3847) │◄─ HTTP ─►│ │ │
│ config/creds │ │ ┌────────▼────────┐ │
└──────────────────┘ │ │ Adapters │ │
│ │ ├─ GitHub │ │
│ │ ├─ Datadog │ │
│ │ ├─ Linear │ │
│ │ ├─ Sentry │ │
│ │ ├─ Slack │ │
│ │ └─ Metabase │ │
│ └─────────────────┘ │
└──────────────────────┘
API responses are large. A single GitHub issue carries ~100 fields (nested users, permissions, node IDs, avatar URLs) when an LLM needs ~10 to decide what to do next. Multiply by 30 issues per page and a list call can consume 150KB of context for information the model will never use.
Switchboard solves this automatically. Integrations declare compaction specs that describe which fields matter for each tool. The server strips everything else after every execute call, before responses reach the LLM.
List and search responses are compact by default. When the LLM identifies a specific item and calls a single-item get tool, it gets the full response back for drill-down.
# Run (default — HTTP server with MCP + web UI on port 3847)
switchboard
# Custom port
switchboard --port 8080
# Stdio mode (for Cursor/Claude Desktop)
switchboard --stdio
# Check version
switchboard --version
# Open config UI
open http://localhost:3847
Config lives at ~/.config/switchboard/config.json. The web UI is a
convenience layer over this file — you can also edit it by hand.
{
"integrations": {
"github": {
"enabled": true,
"credentials": {
"token": "ghp_..."
}
},
"datadog": {
"enabled": true,
"credentials": {
"api_key": "...",
"app_key": "..."
}
}
}
}
Switchboard automatically reads environment variables from your shell (fish, zsh, bash, etc.) and overlays them on top of the JSON config. If an env var is set, it takes precedence over the corresponding value in config.json. Env-sourced values are never written back to disk.
Any integration with credentials provided via env vars will auto-enable without needing to toggle it in the web UI.
| Integration | Credential | Env Var |
|---|---|---|
| GitHub | token | GITHUB_TOKEN |
| Datadog | api_key | DD_API_KEY |
| Datadog | app_key | DD_APP_KEY |
| Datadog | site | DD_SITE |
| Linear | api_key | LINEAR_API_KEY |
| Sentry | auth_token | SENTRY_AUTH_TOKEN |
| Sentry | organization | SENTRY_ORG (optional — auto-detected from API) |
| Slack | token | SLACK_TOKEN |
| Slack | cookie | SLACK_COOKIE |
| Metabase | api_key | METABASE_API_KEY |
| Metabase | url | METABASE_URL |
| AWS | access_key_id | AWS_ACCESS_KEY_ID |
| AWS | secret_access_key | AWS_SECRET_ACCESS_KEY |
| AWS | session_token | AWS_SESSION_TOKEN |
| AWS | region | AWS_REGION |
| PostHog | api_key | POSTHOG_API_KEY |
| PostHog | project_id | POSTHOG_PROJECT_ID |
| PostHog | base_url | POSTHOG_URL |
| Postgres | connection_string | DATABASE_URL |
| Postgres | host | PGHOST |
| Postgres | port | PGPORT |
| Postgres | user | PGUSER |
| Postgres | password | PGPASSWORD |
| Postgres | database | PGDATABASE |
| Postgres | sslmode | PGSSLMODE |
| Jira | email | JIRA_EMAIL |
| Jira | api_token | JIRA_API_TOKEN |
| Jira | domain | JIRA_DOMAIN |
| Readarr | api_key | READARR_API_KEY |
| Readarr | base_url | READARR_URL |
| DigitalOcean | api_token | DIGITALOCEAN_TOKEN |
| Vercel | api_token | VERCEL_API_TOKEN |
| Vercel | team_id | VERCEL_TEAM_ID (optional — default team scope) |
| Vercel | team_slug | VERCEL_TEAM_SLUG (optional — default team scope) |
| Vercel | base_url | VERCEL_BASE_URL (optional — override API endpoint, e.g. tests/proxies) |
| Stripe | api_key | STRIPE_API_KEY |
| Stripe | account | STRIPE_ACCOUNT (optional — Stripe-Account header for Connect) |
| Stripe | base_url | STRIPE_BASE_URL (optional — override API endpoint, e.g. stripe-mock) |
Some integrations support OAuth flows through the web UI at http://localhost:3847. This is the easiest way to get tokens for integrations that don't use simple API keys.
| Integration | Auth Method | Setup |
|---|---|---|
| GitHub | OAuth Device Flow | Web UI → GitHub → Setup, or set GITHUB_TOKEN |
| Linear | OAuth (PKCE) | Web UI → Linear → Setup, or set LINEAR_API_KEY |
| Sentry | OAuth Device Flow | Web UI → Sentry → Setup, or set SENTRY_AUTH_TOKEN |
| Slack | Session Token | Web UI → Slack → Setup (auto-extracts from Chrome), or set SLACK_TOKEN |
| Datadog | API + App Key | Set DD_API_KEY and DD_APP_KEY env vars or enter in web UI |
| AWS | IAM Credentials | Set AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY env vars, or uses default credential chain |
| Metabase | API Key | Set METABASE_API_KEY and METABASE_URL env vars or enter in web UI |
| PostHog | Personal API Key | Set POSTHOG_API_KEY env var or enter in web UI |
| Vercel | Personal Access Token | Set VERCEL_API_TOKEN env var or enter in web UI |
| Postgres | Connection String | Set DATABASE_URL env var or enter in web UI |
Add to your MCP client config:
{
"mcpServers": {
"switchboard": {
"command": "switchboard",
"args": []
}
}
}
git clone https://github.com/daltoniam/switchboard.git
cd switchboard
go build -o switchboard ./cmd/server
Install air for live-reload during development:
go install github.com/air-verse/air@latest
Install the Playwright Chromium driver (optional — enables browser-based integrations):
go run github.com/playwright-community/playwright-go/cmd/playwright install chromium
Then run with live-reload:
air
Switchboard is source-available under the Elastic License 2.0.
In plain English: you can freely use, modify, redistribute, and self-host Switchboard — including for commercial and internal-business use. The only restriction is that you cannot offer Switchboard to third parties as a hosted or managed service that exposes a substantial portion of its functionality. That is the business reserved for the official hosted Switchboard service.
If you have questions about licensing or want to discuss other arrangements, open an issue or get in touch.
Run Claude Code as an MCP server so any agent can delegate coding tasks to it
Browser automation using accessibility snapshots instead of screenshots
MCP server integration for DaVinci Resolve Studio
A Jetbrains IDE IntelliJ plugin aimed to provide coding agents the ability to leverage intelliJ's indexing of the codeba