mcpier

April 16, 2026 · View on GitHub

npm version ci license

CLI for Pier — a self-hosted control plane for Model Context Protocol servers.

pier points at a Pier server running on your homelab and keeps every client machine in sync with it. One manifest on the server, one pier sync on every laptop. No API keys in ~/.claude.json. Install new MCPs with one command.

Install

npm i -g mcpier

Requires Node 20+. Installs the pier binary globally.

Prerequisites

A running Pier server. Deploy one in a single command — see the main repo for Docker, Docker Compose, and Kubernetes one-liners.

Quickstart

# Point CLI at your Pier server (once per machine)
pier login http://pier.homelab:8420 --token <your-device-token>

# Install an MCP — prompts for secrets, stores them on Pier, writes the client config
pier install brainstorm-mcp --location remote --sync claude-code

# Restart Claude Code → brainstorm_* tools live

Or scripted:

pier install brainstorm-mcp --location remote --non-interactive \
  --set openai_key=sk-... \
  --set gemini_key=... \
  --sync claude-code

Or from any git repo shipping a pier.yaml at its root:

pier install-git github.com/spranab/some-mcp --sync claude-code

Commands

CommandWhat it does
pier login <server> --token <t>Save server URL + device token to ~/.config/pier/config.json
pier statusShow server health, manifest summary, spawned MCPs, secret count
pier install <name>Install from a subscribed catalog (interactive)
pier install-git <url>Install from a git repo or raw pier.yaml URL
pier syncPull manifest + secrets and write client configs (default: claude-code)
pier sync --clients claude-code,cursor,codexSync multiple clients in one call
pier secrets listList secret keys stored on the server (not values)
pier secrets set <key> <value>Store a secret (AES-256-GCM encrypted at rest)
pier backup -o <file>Download a JSON bundle (encrypted DB + manifest)
pier restore <file>Restore from a bundle — same PIER_MASTER_KEY required

install options

FlagPurpose
--as <name>Install under a different manifest key
--location <mode>Skip the where-to-run prompt: local (client spawns) or remote (Pier spawns, clients get a URL)
--set <key=value>Pre-supply a secret (repeatable)
--non-interactiveFail instead of asking for missing values
--source <name>Narrow to a single subscribed catalog
--sync <clients>Run pier sync --clients <clients> after install

Run pier <command> --help for full details.

Supported clients (via pier sync)

  • Claude Code (~/.claude.json)
  • Claude Desktop (platform-specific path)
  • Cursor (~/.cursor/mcp.json)
  • Codex (~/.codex/config.toml)

(Continue, Windsurf, and VS Code / GitHub Copilot support coming.)

Catalogs subscribed by default

Anything not in a subscribed catalog installs one paste away via pier install-git.

Trust model

Pier's UI and CLI label sources by authority:

SourceBadgeWhy
MCP Registryregistry (green)Reverse-DNS namespace verified via GitHub OAuth / DNS TXT — unforgeable per namespace
Subscribed catalog.json feedscurated (amber)Maintainer-attested in PR; you trust the catalog
install-git(no badge)Explicit user confirmation; you trust the URL

License

MIT.