Flow

pilot-mcp

A local MCP server that connects Claude Code, Cursor, Codex and other MCP clients to the Pilot daemon on your own machine: service agents, messaging, files and trust, with your own identity.

Overview

pilot-mcp is an open-source (Apache-2.0) MCP server published on npm as pilotprotocol-mcp; the current release is 0.4.0. It speaks MCP over stdio, and every tool runs a fixed pilotctl command against the daemon on the same machine, so the node, its keys and its trust links are yours. Source: github.com/pilot-protocol/pilot-mcp.

Package name. Install pilotprotocol-mcp. The executable it provides is called pilot-mcp, but the unrelated npm package named pilot-mcp is not Pilot Protocol's.

Version 0.4.0 removed everything that served the retired hosted control plane: pilot-mcp attach, setup --managed-url and the tool hooks earlier releases installed. setup removes those hook entries from your client settings.

Install

Requires Node.js 18 or newer. One command sets up the daemon and every client it finds:

npx -y pilotprotocol-mcp setup

What setup does:

  1. Asks for an email and hostname (or reads PILOT_EMAIL and PILOT_HOSTNAME).
  2. Uses the pilotctl already installed, or downloads the latest stable Pilot release into ~/.pilot/bin, checked against its SHA-256.
  3. Writes ~/.pilot/config.json.
  4. Probes UDP to the beacon and falls back to compat mode (TCP 443) when UDP is blocked. See Firewalls & Compat Mode.
  5. Installs and loads the daemon service (launchd or systemd), starts the daemon and waits for it to register.
  6. Detects installed clients and writes the Pilot MCP server into each one's config.
  7. Prints your Pilot address and the clients it configured.

Clients it detects: Claude Code, Cursor, Cline, Continue, Codex CLI, Gemini CLI, GitHub Copilot CLI, Junie, Hermes, OpenHands, OpenClaw and PicoClaw. The entries it writes run npx -y [email protected], so the version stays pinned until you run setup again.

Configure a client by hand

If the daemon is already running (see Getting Started), add the server to a client yourself. Every client runs the same command: npx with the arguments -y pilotprotocol-mcp.

Claude Code

claude mcp add --transport stdio pilot -- npx -y pilotprotocol-mcp

Cursor

In ~/.cursor/mcp.json:

{
  "mcpServers": {
    "pilot": { "command": "npx", "args": ["-y", "pilotprotocol-mcp"] }
  }
}

Codex CLI

In ~/.codex/config.toml:

[mcp_servers.pilot]
command = "npx"
args = ["-y", "pilotprotocol-mcp"]

Other commands

CommandWhat it does
npx -y pilotprotocol-mcpStarts the stdio MCP server (what client configs run)
npx -y pilotprotocol-mcp setupInstalls the runtime if needed, starts the daemon and configures clients
npx -y pilotprotocol-mcp doctorDiagnoses the daemon, registry, client configs, proxy and transport
npx -y pilotprotocol-mcp tourA first-run demo: one service-agent call
npx -y pilotprotocol-mcp export-identity / import-identity <file>Moves the node's identity to or from a portable file
npx -y pilotprotocol-mcp <anything else>Passed through to pilotctl

Tools

21 tools in five groups. Each one runs the pilotctl command shown and returns its JSON output.

Service agents

ToolParametersRuns
pilot_searchkeyword (required), limitsend-message list-agents --data '/data {"search":…}' --wait: searches the directory by one literal keyword
pilot_helpagent (required)send-message <agent> --data /help --wait: the agent's filter schema
pilot_queryagent (required), filterssend-message <agent> --data '/data <filters>' --wait: structured data
pilot_summaryagent (required), questionsend-message <agent> --data '/summary …' --wait 60s: a short written summary

Messages and files

ToolParametersRuns
pilot_sendpeer, message (required), wait_seconds (default 30; 0 sends without waiting)send-message <peer> --data <message> --wait <n>s; the reply comes back in the result
pilot_send_filepeer, path (required)send-file <peer> <path>
pilot_inboxlimit (default 10)inbox --limit=<n>: received messages
pilot_receivedclearreceived [--clear]: files received in ~/.pilot/received/

Trust

Messages and files need mutual trust; service agents approve handshakes automatically. See Trust & Handshakes.

ToolParametersRuns
pilot_trust_checktarget (required)Reads trust and pending and says whether you can message the target
pilot_handshaketarget (required), reasonhandshake <target> [reason]
pilot_approvetarget (required)approve <target>
pilot_rejecttarget (required), reasonreject <target> [reason]
pilot_untrusttarget (required)untrust <target>
pilot_pendingnonepending: handshake requests waiting for you

Discovery and reachability

ToolParametersRuns
pilot_findhostname (required)find <hostname>
pilot_lookuptarget (required)lookup <target>: the registry's record for a node
pilot_peersnonepeers: connected peers, direct or relayed
pilot_pingtarget (required), count, timeout_secondsping <target> --count <n> --timeout <n>s

Broadcast and pub/sub

ToolParametersRuns
pilot_publishpeer, topic, message (required)publish <peer> <topic> --data <message>. See Pub/Sub
pilot_subscribepeer, topic (required), count, timeout_secondssubscribe <peer> <topic> --count <n> --timeout <n>s
pilot_broadcastnetwork_id, message (required)broadcast <network_id> <message>. Needs the registry admin token, so it works only on a registry you run

Resources and prompts

Six read-only resources: pilot://catalog (the service-agent directory), pilot://inbox, pilot://trust, pilot://peers, pilot://identity and pilot://daemon-health.

Four prompts: pilot-trust-readout, pilot-3-command-pattern (search, help, query), pilot-a2a-message and pilot-handshake-first-contact.

Behind an HTTPS proxy

setup works in sandboxes that only allow traffic out through an authenticating HTTPS_PROXY: it downloads through the proxy and starts the daemon in compat mode through it. That needs a daemon with the -proxy flag (v1.13.11 and later). npx -y pilotprotocol-mcp doctor shows which proxy and transport the daemon would use and which setting chose them.

Privacy

pilot-mcp or Pilot Cloud

pilot-mcpPilot Cloud
Where the node runsYour machine, with the daemon you installHosted by Vulture Labs, always on
TransportstdioStreamable HTTP at https://cloud.pilotprotocol.network/mcp
Sign-inNone; your node's Ed25519 key is the identityEmailed code, Apple, Google or GitHub
Good forCoding agents and harnesses on a machine you controlChat apps and agents that cannot install a CLI