Install
$ agentstack add mcp-tacosyhorchata-pilot ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
pilot — browser automation MCP for AI agents
[](https://www.npmjs.com/package/pilot-mcp) [](https://github.com/TacosyHorchata/Pilot/blob/main/LICENSE) [](https://github.com/TacosyHorchata/Pilot)
> Native Playwright-backed browser sessions by default. No Chrome extension required for QA automation.
Pilot has two browser backends:
- Native mode (default): isolated Playwright browser contexts. This is the supported path for parallel QA automation and reliable screenshots.
- Extension mode (legacy/opt-in): connects to your real Chrome profile when you need existing cookies and logged-in sessions.
Native mode avoids chrome.tabs.captureVisibleTab() entirely, so screenshots do not depend on Chrome being foregrounded, a tab being visibly active, or the extension service worker being fresh.
How it works
AI Agent → MCP Server → Broker on 127.0.0.1:3131 → Native browser session
(stdio) (first process owns broker) (Playwright context/page)
- Pilot runs as an MCP server — Claude Code, Cursor, or any MCP client connects via stdio
- The first Pilot process becomes the broker on localhost
- Later Pilot processes connect as broker clients
- Each session gets an isolated native browser context/page
- Screenshots come from Playwright, not the Chrome extension capture API
Quick Start
1. Add the MCP server
codex mcp add pilot \
--env PILOT_BROWSER_MODE=native \
--env PILOT_PROFILE=full \
-- npx -y pilot-mcp
For a local checkout:
npm install
npm run build
codex mcp add pilot \
--env PILOT_BROWSER_MODE=native \
--env PILOT_PROFILE=full \
-- node /absolute/path/to/pilot/dist/index.js
2. Use it
> "Open https://example.com, take a screenshot, and summarize the page."
No extension install. No Chrome foreground requirement.
For full native-mode operations, stress commands, and cleanup checks, see [docs/native-mode.md](docs/native-mode.md).
Lean snapshots
Other tools dump 50K+ chars per page into your context window. Pilot keeps things small:
Other tools: navigate(58K) → navigate(58K) → answer = 116K chars
Pilot: navigate(2K) → navigate(2K) → snapshot(9K) = 13K chars
snapshot_diff shows only what changed between actions — no redundant re-reads.
Less context = faster responses, cheaper API calls, fewer hallucinations.
Pilot vs @playwright/mcp
| | Pilot | @playwright/mcp | |---|---|---| | Browser | Native Playwright context by default; real Chrome via legacy extension | New Chromium instance | | Auth state | Native isolated by default; extension mode can use real Chrome cookies | Anonymous — manual setup | | Bot detection | Native for automation; extension mode for real-profile handoff | Blocked by Cloudflare | | Snapshot size | ~2K navigate, ~9K full | ~50-60K | | Snapshot diff | pilot_snapshot_diff | ❌ | | Cookie import | Chrome, Arc, Brave, Edge, Comet | Manual JSON | | Iframes | ✅ | ❌ | | Tool profiles | core (9) / standard (40) / full (69) | --caps groups | | Transport | stdio | stdio, HTTP, SSE |
69 tools across 3 profiles
LLMs degrade as tool lists grow. Load only what you need:
| Profile | Tools | What's included | |---|---|---| | core | 9 | navigate, snapshot, click, fill, type, presskey, wait, screenshot, snapshotdiff | | standard | 40 | Core + pilotact, pilotguide, evidence, doctor/reset, tabs, scroll, hover, drag, iframes, auth, block, find | | full | 69 | Standard + network intercept, assertions, clipboard, geolocation, CDP, evaluate, PDF, responsive, deep inspection |
{
"mcpServers": {
"pilot": {
"command": "npx",
"args": ["-y", "pilot-mcp"],
"env": { "PILOT_PROFILE": "standard" }
}
}
}
Default: standard. Full tool reference →
Native mode
Native mode is the default:
PILOT_BROWSER_MODE=native
Use it for QA automation, parallel MCP sessions, and screenshot evidence.
Verify it before QA runs:
PILOT_HEADLESS=1 npm run stress:screenshots
npm run stress:codex
Expected: both report 6/6 passed.
Extension mode
Extension mode is legacy and opt-in:
PILOT_BROWSER_MODE=extension
Use it only when you need a user's already-authenticated real Chrome profile.
Import cookies from your real browser: pilot_import_cookies({ browser: "chrome", domains: [".github.com"] })
Supports Chrome, Arc, Brave, Edge, Comet via macOS Keychain / Linux libsecret. For CAPTCHAs: pilot_handoff → you intervene → pilot_resume.
Requirements
- Node.js >= 18
- Playwright Chromium
- macOS or Linux
- Extension mode only: Chrome + Pilot extension
If Chromium is missing:
npx playwright install chromium
Security
- Extension communicates on localhost only (127.0.0.1)
- Native broker communicates on localhost only (127.0.0.1)
- Native sessions use isolated browser contexts per MCP session
- Output path validation prevents writes outside
PILOT_OUTPUT_DIR - Path traversal protection on all file operations
PILOT_PROFILEcontrols which tools are exposed (core/standard/full)
Credits
Core architecture — ref-based element selection, snapshot diffing, annotated screenshots — ported from gstack by Garry Tan. Built on Playwright and the MCP SDK.
If Pilot is useful, star the repo — it helps others find it.
Source & license
This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: TacosyHorchata
- Source: TacosyHorchata/Pilot
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.