Inspect, manage, and kill local dev servers via MCP. Stop guessing what's on :3000.
Read-only. Flags dev servers that look abandoned — all three of: uptime > 6h AND CPU < 1% AND memory > 100MB. By default it excludes known always-on noise (VS Code server, language servers, other MCP servers, postgres/redis, sidekiq, etc.); set `include_excluded: true` to also list those. Each candidate comes with the reasons it matched. This tool never kills anything — pass results to `kill_server`. Returns `{ count, candidates[] }`.
Terminates a local dev server by `pid` or `port`. DESTRUCTIVE. Safe by default: with no `confirm`, this is a DRY RUN — it reports what it would kill and changes nothing. Pass `confirm: true` to actually terminate: sends SIGTERM, waits up to 5s, then escalates to SIGKILL (or SIGKILL immediately if `force: true`). Refuses PIDs below 1000 and processes that don't look like dev servers. Provide exactly one of `pid` or `port`. Returns what was (or would be) killed and the signal used.
Read-only. Lists every local development server (next, vite, nuxt, remix, astro, rails, django, flask, express, deno, bun, etc.) currently LISTENING on a TCP port. For each: port, pid, process name, command line, working directory, project name, detected framework, uptime, memory (MB), CPU %, and owning user. Uses `lsof` on macOS/Linux and `netstat` on Windows; on Windows the cwd/framework fields are limited. Takes no arguments. Returns `{ count, servers[] }`.
Read-only. Diagnoses an `EADDRINUSE` situation: given a port, returns the dev server currently blocking it plus 5 free alternative ports nearby. Use it when a `listen EADDRINUSE` error fires and you want both the culprit and a port to switch to.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 9 | 2025-06-18+ | v2 |
Read-only. Inspects a single TCP port and reports the dev server holding it (same fields as `list_dev_servers`). If nothing is listening, or the listener is not a recognised dev process, returns `{ port, status: "free" }`. Useful for answering "what's on :3000?" before starting or killing something.