Switchboard

Switchboard

A dashboard and MCP server for managing local development servers, enabling Claude to discover, start, stop, and debug them.

Category
Visit Server

README

⏻ Switchboard

Mission control for your localhosts. Register every dev server you run, flip them on and off from one dark, fast dashboard — and hand the keys to Claude, which can discover, start, stop and debug them over MCP.

  • One board for all your projects: status, port, pid, uptime, CPU/memory
  • Start / stop / restart with one click — kills the whole process tree, no orphaned Vite daemons
  • Live log tailing (stdout + stderr) streamed over SSE
  • Port scanner: see everything listening on your machine, adopt unmanaged servers into the board, or kill them
  • Crash detection with exit codes, port-conflict guards, process re-adoption after Switchboard restarts
  • Claude integration two ways (HTTP or stdio MCP) plus a plain REST API for everything else
  • Zero build step, zero external assets, works offline. Node 18+.

Quickstart

git clone https://github.com/nnnunezr/switchboard.git
cd switchboard
npm install
npm start

Open http://localhost:4200. Register a project (name, directory, start command, port), hit Start.

usage: switchboard [--port N]

env:
  PORT                preferred port (default 4200, walks upward if taken)
  SWITCHBOARD_TOKEN   require "Authorization: Bearer <token>" on /api and /mcp
  SWITCHBOARD_DATA    data directory (default ~/.switchboard)

Connect Claude

Switchboard speaks MCP, so Claude can find and administrate your localhosts by itself — "what's running?", "start the backend and tail its logs", "something is squatting port 3000, kill it". Use whichever transport you prefer (the Connect Claude button in the dashboard shows these commands pre-filled):

Claude Code — streamable HTTP (app must be running):

claude mcp add --transport http switchboard http://127.0.0.1:4200/mcp

Claude Code — stdio (proxies to the running app, auto-discovers its port):

claude mcp add switchboard -- node /path/to/switchboard/mcp-stdio.js

Claude Desktop — add to claude_desktop_config.json:

{
  "mcpServers": {
    "switchboard": {
      "command": "node",
      "args": ["/path/to/switchboard/mcp-stdio.js"]
    }
  }
}

MCP tools

Tool What it does
list_projects Every registered project with live status, port, uptime, URL
scan_ports All TCP listeners on the machine, attributed to projects where possible
start_project / stop_project / restart_project Lifecycle control by name or id
get_logs Tail captured stdout/stderr
add_project / update_project / remove_project Manage the registry
kill_process Signal an unmanaged pid found via scan
app_info Switchboard's own version, URLs, data dir

REST API

Everything the UI and MCP tools do is plain HTTP on http://127.0.0.1:4200:

Method & path Purpose
GET /api/projects?metrics=1 List projects (optionally with CPU/mem)
POST /api/projects Register {name, cwd, command, port?, env?, notes?}
PUT /api/projects/:idOrName Update fields
DELETE /api/projects/:idOrName Unregister
POST /api/projects/:idOrName/start | /stop | /restart Lifecycle
GET /api/projects/:idOrName/logs?lines=200 Log tail
GET /api/scan Port sweep
POST /api/kill {pid, signal?}
GET /api/events SSE stream: projects + log events
GET /api/health, GET /api/info Liveness / metadata

How it works

  • Projects are spawned through your login shell ($SHELL -lc) in their own process group, so stopping a project SIGTERMs the entire tree (with SIGKILL escalation after 5s) — dev-server child processes don't survive.
  • A port probe promotes starting → running when the project's port opens; a non-zero exit marks it crashed with the exit code and captured stderr.
  • Started pids are persisted, so if Switchboard itself restarts it re-adopts still-running servers instead of losing track of them.
  • The registry lives in ~/.switchboard/projects.json — plain JSON, edit it by hand if you like.

Security notes

  • Binds to 127.0.0.1 only, and rejects requests whose Host header isn't local (DNS-rebinding guard).
  • Optional bearer auth: set SWITCHBOARD_TOKEN=... and every /api and /mcp request must carry Authorization: Bearer <token>. The dashboard prompts for the token and keeps it in localStorage.
  • Switchboard executes the shell commands you register, with your user's privileges. That is its job — but only register commands you trust, and treat add_project from any connected agent accordingly.

Changelog

See CHANGELOG.md for the list of bugs found and fixes made.

License

MIT

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured