Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.harbormcp.ai/llms.txt

Use this file to discover all available pages before exploring further.

Every command has a nautical name and a standard alias. Use whichever you prefer.

harbor dock

Alias: harbor add
Dock a new MCP server into the harbor. Supports three modes: native (one-click catalog), custom stdio, and custom remote.

Native servers

Dock a server from Harbor’s built-in catalog with a single command:
harbor dock <native-id> [--name <name>] [--skip-auth] [--disabled] [--auto-start] [-- <extra-args>...]
FlagDescription
<native-id>Server id from the catalog (e.g., github, slack, filesystem)
--nameOverride the default server name
--skip-authDock now, authorize later
--disabledKeep moored (disabled) initially
--auto-startStart automatically when Harbor launches
-- <args>Extra arguments appended after the catalog defaults
Examples:
# Dock GitHub (remote, needs a PAT in the vault)
harbor dock github

# Dock filesystem with allowed directories
harbor dock filesystem -- ~/Documents ~/Projects

# Dock Slack (opens browser for OAuth)
harbor dock slack

# Dock with a custom name
harbor dock atlassian --name my-jira
See the native servers guide for the full catalog.

Custom stdio servers

harbor dock --name <name> --command <command> [--args <args>...] [--env <KEY=VALUE>...]
FlagDescription
--nameUnique name for the server
--commandExecutable to run (e.g., npx, node, python)
--argsArguments to pass (comma-separated for multiple)
--envEnvironment variables (supports vault:KEY references)
--auto-startStart automatically when Harbor launches
--disabledKeep moored (disabled) initially
Example:
harbor dock --name memory --command npx --args "-y,@modelcontextprotocol/server-memory"

Custom remote (HTTP) servers

harbor dock --name <name> --url <url> [-H <KEY:VALUE>...] [--env <KEY=VALUE>...]
FlagDescription
--nameUnique name for the server
--urlURL of the remote MCP HTTP endpoint
-H, --headerCustom HTTP headers (KEY:VALUE, can be repeated)
--envEnvironment variables (supports vault:KEY references)
Example:
harbor dock --name my-api --url https://mcp.example.com/v1/mcp \
  -H "Authorization:Bearer vault:my_api_key"

harbor undock

Alias: harbor remove
Undock a server and cast it off.
harbor undock --name <name>

harbor fleet

Alias: harbor list
Review your fleet of docked servers. Shows each server’s name, command/url, status, and enabled state.
harbor fleet [--host <host>]
FlagDescription
--hostFilter servers bound to a specific host (optional)

harbor launch

Alias: harbor start
Launch a server out to sea (start the process).
harbor launch --name <name>

harbor manifest

Alias: harbor status
Read the harbor manifest — shows the current state of all servers and hosts.
harbor manifest

harbor signal

Alias: harbor sync
Signal connected hosts to update their charts. This merges your docked servers into each host’s config file.
Syncing happens automatically when you dock, undock, toggle, or connect a host. You only need harbor signal to force a manual re-sync.
harbor signal [--host <host>]
FlagDescription
--hostSync only to a specific host (optional)

harbor port

Alias: harbor host
Manage host connections. Users opt in to each host individually.
harbor port                    # List all hosts with link status
harbor port link <host>        # Link a host to start syncing
harbor port unlink <host>      # Unlink a host
Valid hosts: claude, claude-desktop, codex, vscode, cursor

harbor lighthouse

Alias: harbor gateway
Light the lighthouse — start the HTTP/SSE gateway to expose your MCP servers over the network.
harbor lighthouse [--port <port>] [--host <host>] [--expose] [--token <token>]
FlagDescription
--portPort to listen on (default: 3100)
--hostIP to bind to (default: 127.0.0.1)
--exposeShorthand for --host 0.0.0.0 (expose to network)
--tokenBearer token required for remote (non-localhost) access
See the gateway guide for endpoint details.

harbor publish

Alias: harbor broadcast
Broadcast your gateway to the high seas — publish your local MCP tools to the internet via a secure QUIC tunnel.
harbor publish [--relay <addr>] [--subdomain <name>] [--relay-key <hex>] [--transport <type>] [--port <port>] [--tools <tool,...>]
FlagDefaultDescription
--relayrelay.harbormcp.aiRelay server address (hostname or host:port)
--subdomainauto-assignedRequested subdomain (e.g. mynamemyname.relay.harbormcp.ai)
--relay-keyauto-fetchedRelay’s public key (hex) — required for self-hosted relays
--transportquicTransport to use: quic (default) or cloudflare
--portfrom configLocal gateway port to tunnel (default: 3100)
--toolsallComma-separated tool allowlist for remote access
Examples:
# Zero-config publish via managed relay
harbor publish

# Custom subdomain
harbor publish --subdomain myname

# Self-hosted relay
harbor publish --relay relay.example.com:7800 --relay-key <hex-key>

# Cloudflare Tunnel (requires cloudflared installed)
harbor publish --transport cloudflare

# Expose only specific tools remotely
harbor publish --tools get_issues,search_code
See the publishing guide for full details.

harbor relay

Run a self-hosted Harbor relay server.
harbor relay [--quic-port <port>] [--https-port <port>] [--domain <domain>] [--keypair-file <path>] [--print-key]
FlagDefaultDescription
--quic-port7800Port for QUIC tunnel listener (UDP)
--https-port8443Port for HTTPS frontend (TCP)
--domainrelay.harbormcp.aiDomain for subdomain routing
--keypair-file/data/harbor-relay/keypairPath to persist the relay keypair
--print-keyPrint the relay’s public key and exit
--auth-tokenRequire this token from all tunnel clients
Examples:
# Start relay with default settings
harbor relay --domain relay.example.com

# Print the relay's public key (share with tunnel clients)
harbor relay --print-key --keypair-file /data/harbor-relay/keypair
See the self-hosting guide for deployment instructions.

harbor cargo

Alias: harbor filter
Manage tool filtering — control which tools each server exposes.
harbor cargo allowlist <server> [tools...]   # Set tool allowlist
harbor cargo blocklist <server> [tools...]   # Set tool blocklist

harbor scout

Alias: harbor search
Scout the seas for new MCP servers on the official MCP Registry.
harbor scout <query>

harbor chest

Alias: harbor vault
Open the treasure chest — manage secrets stored in your OS keychain.
harbor chest set <key> <value>
harbor chest get <key>
harbor chest delete <key>
harbor chest list
See the vault guide for more details.

harbor crew

Alias: harbor team
Share MCP server configs across your team via a git-backed fleet repository. Secrets stay local — only vault:KEY_NAME references are committed. See the team sync guide for a full walkthrough.

harbor crew init

Initialize ~/.harbor/fleet/ as a git repository. Optionally links a remote so teammates can clone the same fleet.
harbor crew init [--git <url>]
FlagDescription
--gitGit remote URL (SSH or HTTPS) to push/pull the fleet config
Examples:
# Local-only fleet (add a remote later)
harbor crew init

# Initialize and link a remote in one step
harbor crew init --git [email protected]:your-org/fleet.git

harbor crew join

Join an existing team fleet by cloning its git repository and auto-merging its servers into your local config.
harbor crew join <git-url>

harbor crew push

Push local fleet-managed servers to the shared repository. Pass server names to mark local servers as fleet-managed before pushing.
harbor crew push [<servers>...] [--message <msg>]
FlagDescription
<servers>Names of local servers to mark as fleet-managed and include
-m, --messageCommit message (default: "Update fleet config")
Examples:
# Share two existing servers with the team
harbor crew push github linear

# Push with a custom commit message
harbor crew push -m "Add Slack server"

harbor crew pull

Fetch upstream changes and 3-way merge fleet servers into your local config.
harbor crew pull [--dry-run]
FlagDescription
--dry-runPreview what would change without applying anything
Servers you have edited locally since the last pull will be skipped (locally modified). Harbor never silently overwrites your changes. To accept the upstream version, run harbor undock <name> then harbor crew pull. To share your version instead, run harbor crew push <name>.

harbor crew status

Show local vs fleet drift — git sync status (ahead/behind) and per-server state.
harbor crew status

harbor crew provision

Prompt for vault secrets required by fleet servers that aren’t yet stowed locally.
harbor crew provision [--dry-run]
FlagDescription
--dry-runShow missing keys without prompting for values

harbor scuttle

Alias: harbor uninstall
Scuttle the ship — uninstall Harbor from your system. Removes Harbor-managed server entries from host configs, the app, and the CLI binary.
harbor scuttle [--purge] [--dry-run] [--yes]
FlagDescription
--purgeAlso remove ~/.harbor/ config directory and vault secrets
--dry-runPreview what would be removed without making changes
-y, --yesSkip the confirmation prompt
You can also uninstall via the install script:
curl -fsSL https://harbormcp.ai/install.sh | sh -s -- --uninstall

harbor update

Update Harbor to the latest version. Checks GitHub releases, downloads the appropriate binary for your platform, verifies the SHA256 checksum, and replaces the current binary.
harbor update

Flags

FlagDescription
--checkJust check for updates without installing
-y, --yesSkip the confirmation prompt

Examples

# Check if an update is available
harbor update --check

# Update without confirmation
harbor update --yes
Harbor also checks for updates automatically in the background. If a newer version is available, a notice appears after any command (checked once every 24 hours).