Harbor MCP Server
Detects, configures, and manages local Angular development servers using Harbor's smart onboarding.
Detects, configures, and manages local Astro development servers.
Detects projects using Bun package manager and runtime, enabling Harbor to manage their dev servers.
Detects, configures, and manages local Django development servers.
Detects, configures, and manages local FastAPI development servers.
Detects, configures, and manages local Flask development servers.
Detects, configures, and manages local Gatsby development servers.
Detects, configures, and manages local Nuxt development servers.
Detects, configures, and manages local Remix development servers.
Detects, configures, and manages local SvelteKit (Svelte) development servers.
Detects projects using Vite as the build tool, allowing Harbor to propose and manage Vite-based dev servers.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Harbor MCP Serverdetect app in ~/Projects/myapp"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Harbor
A polished, native macOS app that boots all the local servers a project needs with one button — with intelligent port allocation, crash recovery, and an MCP server baked in so your Claude (or Codex) can discover, configure, and drive your dev environment without you editing a single config file.
Local process managers exist (foreman, pm2, Tilt, Herd). None are MCP-native. That's Harbor's point: register a project once, and from then on an AI agent can detect what it needs, write the run config, start/stop everything with automatic port allocation, watch resource usage, and read logs to debug.
Stack: Tauri 2 (Rust core + React 19 / Radix Themes UI). macOS only for now. See
DESIGN.mdfor the architecture.
Note: unrelated to the CNCF Harbor container registry.
Features
One-button start with a topo-sorted dependency order and live log streaming.
Port intelligence — preferred → next-free allocation probed on both IPv4 and IPv6, with
${PORT}/${services.X.port}placeholders resolved so a frontend automatically targets whatever port the backend actually got. Recognizes a command that pins its own port (e.g.next dev -p 3002) and never bumps it.Detects already-running servers — re-adopts processes a previous Harbor session left running, and recognizes a server you started yourself in a terminal (matched to the app by its port + project folder via a process-group walk), so it's never fooled into a duplicate
EADDRINUSEstart. It will never claim or kill an unrelated process or your shell.Auto-restart on crash (opt-in per app) with bounded backoff and a give-up cap, plus native crash notifications — and it can tell a deliberate Stop apart from a crash, so it never fights you.
Live resource monitor — CPU% and memory per service, summed over the whole process group, in the card and the menu-bar popover.
Menu-bar popover to start/stop/open your servers without opening the window.
Fix with AI — surfaces a service's error and hands a tailored prompt to a connected Claude/Codex (or runs it headless) to diagnose it.
Smart onboarding — drag a project folder onto the window and Harbor scans it and proposes a config (Next/Vite/Remix/Nuxt/SvelteKit/Astro/Angular/CRA/Gatsby, Django/FastAPI/Flask, Go, Rails, static sites; pnpm/yarn/bun aware).
MCP-native — an in-process Streamable-HTTP MCP server (bound to
127.0.0.1, per-install bearer token) exposes the whole lifecycle to an agent.
Related MCP server: devpilot
Install
Download the .dmg from the
latest release, open it,
and drag Harbor to Applications.
First launch: Harbor currently ships unsigned, so macOS will say it "can't
verify the developer." Open it once via System Settings → Privacy & Security →
Open Anyway (or right-click the app → Open) — you only do this once.
(Maintainers can turn on Developer ID signing + notarization to remove this step
for everyone; the pipeline is ready — see DISTRIBUTING.md.)
Build it yourself
npm install
npm run tauri dev # dev window + MCP server on 127.0.0.1:7777
npm run tauri build # produces a .app / .dmg (unsigned unless you set up signing)Maintainers: see DISTRIBUTING.md for code signing,
notarization, and how to cut a release.
Connect your Claude (or Codex)
Open the Connect your Claude screen (gear, bottom-left) for one-click setup
(Claude Code, Claude Desktop, and Codex), or run it manually with your token from
~/Library/Application Support/com.harbor.desktop/mcp.json:
claude mcp add --transport http harbor http://127.0.0.1:7777/mcp \
--header "Authorization: Bearer <token>"Then ask your agent to detect_app a folder, start_app it, read app_status /
get_logs, restart_app, and stop_app.
Concepts
App — a registered project folder with a name, root, and services.
Service — one long-running process:
{ name, cwd, command, port?, env, dependsOn[], healthCheck?, readyLogPattern? }.command/envmay contain${PORT}and${services.X.port}placeholders.Profile — a named service set (e.g.
default= just the server,dev= server + web).Port plan — what each service preferred vs. the port it actually got, and how dependents were rewired.
MCP tools
Tool | Purpose |
| Registered apps + current run status |
| Per-service state, resolved ports, the port plan |
| Scan a folder, propose a config (does not save) |
| Add/replace an app in the registry |
| Lifecycle |
| Tail captured logs |
The server binds 127.0.0.1 only and requires a per-install bearer token.
Module map (src-tauri/src)
File | Responsibility |
| Config + run types (serde) |
| Flat-JSON registry, MCP settings, and the |
|
|
| Spawn in process groups, stream logs, health/ready, adoption, auto-restart, resource sampling, clean kill |
| Topo sort, dual-stack allocation, pinned-port detection, |
| TCP/HTTP readiness probes |
|
|
| Shared start/stop/restart/open logic (commands + MCP) |
| Tauri command surface |
| axum + |
| Wires it together; hosts the MCP server on Tauri's runtime |
Contributing
Issues and PRs welcome. The Rust core has unit + integration tests:
cd src-tauri && cargo test
npx tsc --noEmit # from the repo root, typecheck the UILicense
MIT © Luke Fairbanks
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/luke-fairbanks/harbor-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server