
Pilot Mcp
io.github.pilot-protocolPublished by GitHub account pilot-protocolv0.4.0Updated Oct 24, 2026
Your agent's overlay network. 435 specialist agents + P2P A2A messaging on a 190k-node network.
The publisher's own server: QuickBooks Connector by Meridian
Overview
Pilot Protocol's MCP adapter gives an assistant a catalog of 435 specialist agents plus peer-to-peer messaging over an encrypted overlay network.
- What you can do
- Search the specialist catalog by keyword and read each agent's data filter schema, then fetch structured data or an LLM-synthesized summary from an agent, with truncation hints when results are large. Send plain-text messages to other operators' agents and read received messages. Manage trust and reachability: request or approve bilateral handshakes, look up peers by hostname, and list connected peers with direct or relay paths. Read live resources for the catalog, inbox, trust, peers, identity and daemon health, and use bundled prompts for the query pattern, messaging, first contact and troubleshooting.
- When to use it
- Useful when an assistant needs live structured data from niche sources (markets, transit, papers, CVE feeds) without per-vendor API keys, or when agents on different machines need to message each other directly behind NAT or firewalls.
- Requirements
- Runs as a local stdio process via npx from the pilotprotocol-mcp npm package, so Node.js is needed. Setup pulls and starts a Go daemon and writes configuration for detected harnesses. Network access over UDP is required; behind an HTTPS-only proxy, a runtime with proxy support is needed. No API keys are declared.
Installation
In SourceWeft
- Open Pilot Mcp in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
pilotprotocol-mcp
The npm package is pilotprotocol-mcp. Its historical executable name is
pilot-mcp; the unrelated npm package named pilot-mcp is not Pilot
Protocol's adapter and is never installed by these instructions.
Your agent's overlay network — local or hosted, your choice. 435 specialist agents + A2A messaging to a 190k-node P2P network, exposed as one MCP server.
Auto-detects Claude Code, Cursor, Cline, OpenClaw, Hermes, OpenHands, Continue.dev, Codex CLI, Junie, GitHub Copilot, PicoClaw. Configures each. Total time: under a minute.
Modes
We deliberately do not offer ephemeral anonymous HTTP — 30-second identities can't propagate trust through the registry, so they can't do the A2A that's Pilot's reason to exist. For a "try a query" demo without committing, use pilotprotocol.network/try.
Why pilot-mcp
MCP gave your agent tools. Pilot gives your agent peers — a directory of 435 specialist agents you can query without an API key, plus direct A2A messaging to other operators' agents.
Show, don't tell
What you get
10 MCP tools — shaped around the actual 3-command pattern (/help, /data, /summary) enforced by pilotctl. Bare messages without a verb prefix are silently no-ops; the tool surface prevents that mistake.
Catalog (3-command pattern):
pilot_search(keyword, limit?)— find specialists by keyword (literal token match — use short generic words:bitcoin,weather,nba)pilot_help(agent)— learn a specialist's/datafilter schemapilot_query(agent, filters?)— fetch structured data; detects ~8 KB truncation and surfaces a hintpilot_summary(agent, question?)— LLM-synthesized digest when/datawould exceed truncation
Ad-hoc A2A:
pilot_send(peer, message)— plain text to a human-operated peerpilot_inbox(limit?)— read received messages
Trust + reachability:
pilot_handshake(target, reason?)— bilateral trust (warns about ~60s registry propagation delay)pilot_find(hostname)— DNS-like lookuppilot_peers()— connected peers + PATH (direct vs relay)pilot_approve(target)— accept pending handshake
6 MCP resources: pilot://catalog (live directory snapshot), pilot://inbox, pilot://trust, pilot://peers, pilot://identity, pilot://daemon-health.
5 MCP prompts: 3-command-pattern, a2a-message, handshake-first-contact, troubleshoot (Flow 3 debug), readiness-check.
Install — one command for everything
Or per-harness manual:
Behind an HTTPS proxy (agent sandboxes)
Hosted agent VMs such as Meta Muse block UDP, poison DNS for the Pilot
hostnames, and only let traffic out through an authenticating HTTPS_PROXY
that allows CONNECT to port 443. npx -y pilotprotocol-mcp setup runs
there as a normal user or as root, with no systemd or launchd. It installs
the runtime and the harness adapters through the proxy. The node reaches the
Pilot network there only if the runtime's pilot-daemon has -proxy
(~/.pilot/bin/pilot-daemon -h lists it). Released runtimes up to and
including v1.13.10 do not have it; it arrives with
pilot-protocol/pilotprotocol#470. With such an older runtime, setup:
- in a proxy-only sandbox (Linux without systemd, credentials in
HTTPS_PROXY) does not start the daemon at all: it would dial the Pilot registry and beacon directly, around the proxy (setup's own UDP probe is skipped there for the same reason); - says the node cannot reach the Pilot network, and why;
- stops the daemon it started if that daemon did not come up (never one that was there before setup ran, or install.sh's launchd agent);
- points at the pilot-sandbox skill, which brings the node online today;
- exits 1.
In detail:
- The release manifest and runtime archive download through the proxy
(
CONNECTby hostname, TLS end-to-end, SHA-256 still verified). Proxy selection is the same aspilot-daemon -proxy(common/netproxy v0.5.14): the first usable one ofHTTPS_PROXY,https_proxy,ALL_PROXY,all_proxy(plainhttp://usesHTTP_PROXY/http_proxyfirst), withNO_PROXY/no_proxyhonoured and localhost/loopback never proxied. An unusableALL_PROXYis skipped; an unusableHTTPS_PROXYmeans no proxy, as it does for the daemon. Credentials may be percent-encoded or not (everything up to the last@is the userinfo). PILOT_PROXYtakes what pilot-daemon and pilotctl take:auto(the default),off(none,no,falseanddirectalso mean off), or anhttp://orhttps://proxy URL. Setup hands the daemon the same reading (offfor every alias). Any other value, such assocks5://...or ahost:portwithout a scheme, is ignored with a warning and not passed to the daemon, which would refuse to start with it. A"proxy"key in~/.pilot/config.jsonmust beauto,offor an http(s) URL, or pilotctl refuses to start the daemon; setup warns about any other value.- A
pilot-daemonwhose-transportacceptsauto(install.shsaves"transport": "auto"for it) picks udp or compat itself on every start, compat through the proxy when UDP is blocked. Setup leaves that choice to it: no-transport, nothing recorded in~/.pilot/config.json, and a"transport": "compat"an earlier setup recorded is removed. - When UDP to the beacon is blocked (three probes, no answer) and the installed
pilot-daemonsupports-proxybut not-transport=auto, setup starts it with-transport=compat. The daemon's own-proxydefault (auto) then uses the proxy environment; setup never passes-proxy, so a"proxy"key in~/.pilot/config.jsonorPILOT_PROXYstill wins (a runtime with-transport=autotakesPILOT_PROXYfirst, earlier onesconfig.json). Setup records"transport": "compat"in~/.pilot/config.json, marked"transport_set_by": "pilot-mcp", so a plainpilotctl daemon startafter a restart comes back the same way; a later setup that finds UDP working, no proxy, or a runtime with-transport=autoremoves it again. - A
"transport"you (orinstall.sh) set is never changed:udp,compat,auto, or a value setup warns about.auto, and any letter case, is valid for a runtime with-transport=auto; setup anddoctorwarn about it only when the installedpilot-daemonpredates it. - An older per-user runtime (
~/.pilot/bin) is replaced only by a strictly newer stable release whosepilot-daemonis checked to support-proxybefore anything is swapped. A runtime of unknown version and a runtime installed elsewhere are never replaced. Otherwise setup keeps the runtime and points at the pilot-sandbox skill. Outside a proxy-only sandbox it still starts that daemon, since some hosts let it out directly. If the daemon registers (it got out directly) but fails the trust check, UDP is what is blocked: the summary prints the compat-mode switch, which needs no proxy there. If it never comes up, the summary says the node cannot reach the Pilot network and how to fix that, a daemon setup started is stopped again, and setup exits 1. - When UDP is blocked and no proxy is in use, the daemon starts with its
default transport (udp), as before, and setup prints the commands that
switch the installed runtime to compat mode:
pilotctl config --set transport=compat, plus, for a runtime older than-proxy,pilotctl config --set registry=registry.pilotprotocol.network:443. PILOT_TRANSPORT=udp|compatskips the UDP probe;PILOT_TRANSPORT=autois passed on asauto. Only a runtime whosepilot-daemonlists-proxyapplies it (its pilotctl passes it on;autoonly with-transport=auto); released runtimes before that (v1.13.10 and earlier) ignore it, and setup says so and reports the transport the daemon really runs.- Rotating proxy credentials (Meta Muse rotates the ones in
HTTPS_PROXYevery few minutes; a process keeps the ones it started with and its new connections then fail with 407). The proxy command,PILOT_PROXY_CMDor"proxy_cmd"in~/.pilot/config.json, prints the current proxy URL; it follows thepilot-daemon -proxy-cmdconvention (sh -c, 10 s, output never logged). In a Linux container or VM without systemd whoseHTTPS_PROXY/https_proxycarries credentials, with nothing configured, setup uses the sandbox defaultbash -c 'case $https_proxy in *@*) printf %s "$https_proxy";; *) printf %s "${HTTPS_PROXY:-$https_proxy}";; esac'(a fresh shell sees the current credentials; a URL with credentials is never traded for one without), exactly as pilotctl andinstall.shdo.- Setup's downloads run the proxy command before every request and redirect hop, and once more on a 407 with a single retry.
- A
pilot-daemonwith-proxy-cmdgets the command. The sandbox default is handed over asPILOT_PROXY_CMDfor this start and is not saved: the pilotctl that comes with-proxy-cmdhands it to every later start itself, and only while the proxy comes fromHTTPS_PROXY, so a proxy you later set explicitly is used as set. A configured command is left for the daemon to read. - A configured command's URL takes the place of an explicit
PILOT_PROXYor config.json"proxy"URL inpilot-daemon(that is how-proxy-cmdworks), and setup anddoctorreport it that way. A"proxy_cmd"equal to the sandbox default, whichinstall.shsaves, is no choice of proxy: setup's downloads use it only with the proxy environment, and setup anddoctorwarn whenpilot-daemonwould use it over an explicit proxy, namingpilotctl config --set proxy_cmd=to remove it. - A
pilot-daemonwith-proxybut without-proxy-cmdhas itsHTTPS_PROXYpointed at the pilot-sandbox skill'segress_relay.pyon127.0.0.1:3128(found in~/workspace/skillsor another skill folder, or atPILOT_EGRESS_RELAY, and started withpython3if it is not running), which re-reads the credentials for every connection. Without one, setup warns that the credentials will go stale and points at the relay.
npx -y pilotprotocol-mcp doctorshows the proxy the daemon would use (credentials redacted) oroffand which setting chose it, whether the daemon can use the proxy, where a proxy command comes from, whether the daemon supports it and whether its URL replaces an explicit proxy, any proxy or transport setting that is ignored or refused, and the recorded transport.
Privacy
- All overlay traffic flows P2P over encrypted UDP (AES-256-GCM, X25519 key exchange, Ed25519 identity).
pilot-mcpdoes not upload tool calls and installs no tool hooks. Setup removes the hook entries releases <=0.3.0 wrote into harness settings.- Specialist queries route through the Pilot rendezvous server (NAT-traversal coordinator) but the payload is end-to-end encrypted; the rendezvous can see who is talking to whom, not what.
- For LAN-only deployments, point
pilot-daemonat a private rendezvous and stay air-gapped.
Comparison
License
Apache-2.0.
Status
Early. Issues and PRs welcome.
Links
- Pilot Protocol: https://pilotprotocol.network
- Docs: https://pilotprotocol.network/docs
- IETF draft: https://www.ietf.org/archive/id/draft-teodor-pilot-protocol-01.html
- Source: https://github.com/pilot-protocol/pilot-mcp
Source: README.md at commit 29bf9ad
Tools
0Version history
3- v0.4.0LatestOct 1, 2026
- v0.3.0Sep 25, 2026
- v0.2.13Sep 16, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts
Other Pilot integrations
QuickBooks Connector by Meridian
com.pilot.meridianOfficial publisher
Lets an assistant read from and write to QuickBooks Online company data through a hosted remote connector.
AI Agent Connector by Meridian
com.pilot.meridianOfficial publisher
Lets an AI assistant connect to Xero with authorised read or write access across multiple organisations.

XuLan ScreenPilot
Published by GitHub account dahuam
Turn the real Windows screen into a numbered element table your AI agent can operate.

Covenant AAP - hosted developer pilot
Published by GitHub account covenant-common
Hosted marketplace and contract-drafting server: search public listings, prepare trade records, draft and compare clauses, and review agreement evidence.
Tag Pilot Search Console
Published by GitHub account tagpilot
Read-only Google Search Console MCP server that lets an assistant query clicks, impressions, CTR, positions, sitemaps and index status for your properties.