agent-mcp-host
One-origin MCP host for the agent-* CLI family
- Language
- Go
- Version
- 0.3.0
- License
- PolyForm Perimeter 1.0.0
- Category
- CLI Tool
An MCP host that serves the whole agent-* CLI family from one machine, behind one domain, with one OAuth authorization server and a separate login per tool. Each family CLI keeps being a full MCP server in its own binary — the host mounts it behind a path rather than re-implementing it, owning only the shared front door, token minting, and the unified browser-facing pairing and enrollment pages. A person adds one Claude connector per tool; every call thereafter carries their identity.
Features
One origin for the whole family — every mounted agent-* CLI's MCP tools served from one domain, e.g. a single Tailscale funnel
One connector per tool, not one merged surface — /slack/mcp and /lin/mcp stay isolated, independently versioned and authorized
Single OAuth authorization server — the host owns pairing codes, named principals, token minting, and the human-facing pages
Delegate-mode tools — each mounted CLI keeps being a full MCP server, validating host-minted tokens with no AS of its own
Per-tool audiences — a token minted for the Slack mount is useless at the Lin mount; bindings are namespaced <tool>:<key>=<value>
Login once, grow into tools — the pairing code sets an AS session; adding tool N enrolls only tool N and keeps tools 1..N-1
Ed25519 AS/RS split — tools receive only the verify key at spawn, so a delegate can validate tokens but never mint them
Mounts by exec, not linking — the host discovers each tool via mcp schema and bridges enrollment to its auth add; no tool code is linked
Family-wide revocation — pair remove drops a person's session, pairing code, and every per-tool refresh token at once
Install
Homebrew
$ brew install shhac/tap/agent-mcp-host AI Agent Skill
$ npx skills add shhac/agent-skills --skill agent-mcp-host --global GitHub Release (macOS)
$ curl -L https://github.com/shhac/agent-mcp-host/releases/latest/download/agent-mcp-host-darwin-arm64.tar.gz | tar xz Go Install
$ go install github.com/shhac/agent-mcp-host/cmd/agent-mcp-host@latest Build from Source
$ git clone https://github.com/shhac/agent-mcp-host.git && cd agent-mcp-host && make build Getting Started
agent-mcp-host is the operator's front door: one process runs the OAuth authorization server and reverse proxy, spawns each mounted family CLI as a loopback MCP server in delegate mode, and renders the shared pairing and enrollment pages. The host's signing key and pairing store live in the OS keychain.
01 · Serve the family behind one origin
$ agent-mcp-host serve --public-url https://hub.tailnet.example --mount slack=agent-slack --mount lin=lin Spawns each tool's MCP server on loopback and reverse-proxies /slack/mcp and /lin/mcp behind the shared front door; --public-url is the OAuth issuer.
02 · Pair a person once, family-wide
$ agent-mcp-host pair add alice --bind slack:workspace=acme --bind lin:workspace=letsdothis Mints one pairing code for alice. Namespaced bindings name the credential set each tool acts with; tokens carry only that tool's claims.
03 · Add one Claude connector per tool
$ https://hub.tailnet.example/slack/mcp The person enters their pairing code once; connecting a second tool reuses the session and prompts only for that tool's credentials.
04 · Revoke in one place
$ agent-mcp-host pair remove alice Drops the AS session, the pairing code, and every per-tool refresh token at once.
Usage
$ agent-mcp-host serve --public-url https://hub.tailnet.example --mount slack=agent-slack --mount lin=lin $ agent-mcp-host pair add alice --bind slack:workspace=acme $ agent-mcp-host pair list $ agent-mcp-host pair show alice $ agent-mcp-host pair rotate alice $ agent-mcp-host pair remove alice