Harbor stores its configuration atDocumentation Index
Fetch the complete documentation index at: https://docs.harbormcp.ai/llms.txt
Use this file to discover all available pages before exploring further.
~/.harbor/config.toml. You can edit this file directly or manage everything through the desktop app and CLI.
File Location
Structure
Harbor Settings
| Field | Type | Default | Description |
|---|---|---|---|
gateway_port | int | 3100 | Port the gateway listens on |
gateway_host | string | "127.0.0.1" | IP address to bind to. Use "0.0.0.0" to expose to the network. |
gateway_token | string | — | Bearer token required for non-localhost connections. Supports vault:KEY references. |
publish_relay | string | "relay.harbormcp.ai" | Relay server address for harbor publish |
publish_subdomain | string | — | Persistent subdomain to request when publishing |
publish_token | string | — | Auth token for the relay (supports vault:KEY references) |
publish_tools | string[] | — | Tools exposed remotely — omit to expose all |
publish_auto | bool | false | Auto-publish when the gateway starts |
publish_relay_key | string | — | Relay’s public key (hex) for self-hosted relay verification |
Servers
Each server is defined under[servers.<name>]. A server must have either command (stdio) or url (remote HTTP) — not both.
Stdio server example
Remote HTTP server example
Server Fields
| Field | Type | Default | Description |
|---|---|---|---|
source | string | — | How the server was sourced (e.g., native:github, registry:@mcp/server, "fleet" for team-managed servers) |
command | string | — | Executable to run (for stdio servers). Mutually exclusive with url. |
args | string[] | [] | Arguments passed to the command |
env | map | {} | Environment variables (supports vault:KEY references) |
url | string | — | URL for remote HTTP MCP servers. Mutually exclusive with command. |
headers | map | — | Custom HTTP headers for remote servers (supports vault:KEY references) |
enabled | bool | true | Whether the server is globally enabled |
auto_start | bool | false | Start this server automatically when Harbor launches |
hosts | map | {} | Per-host enable/disable overrides |
tool_allowlist | string[] | — | Only expose these tools (if set, all others are hidden) |
tool_blocklist | string[] | — | Hide these specific tools (applied after allowlist) |
tool_hosts | map | {} | Per-host tool allowlist overrides |
Either
command or url is required — you must set exactly one. Setting both (or neither) is an error.Tool Filtering
You can control which tools a server exposes using allowlists, blocklists, and per-host overrides:- If a host-specific override exists in
tool_hosts, only those tools are allowed for that host. - Otherwise, apply global
tool_allowlist(tool must be in it). - Then apply global
tool_blocklist(tool must NOT be in it).
Hosts
Each host is defined under[hosts.<name>]:
Host Fields
| Field | Type | Default | Description |
|---|---|---|---|
connected | bool | false | Whether Harbor syncs to this host |
scope | string | — | Scope level (e.g., user or project) |
claude, claude-desktop, codex, vscode, cursor

