Lightweight browser automation for AI agents: navigate, screenshot, extract, PDF. One small binary.
MCPpedia last refreshed this data
io.github.kitewright/mcp is an MCP server that lightweight browser automation for AI agents: navigate, screenshot, extract, PDF. One small binary. Its tool list has not been published yet over stdio, sse and http, requires no API key, and scores 58/100 on MCPpedia's security, maintenance and efficiency rubric.
Config is the same across clients — only the file and path differ.
{
"mcpServers": {
"kite": {
"args": [
"--stdio"
],
"command": "kite"
}
}
}Are you the author?
Add this badge to your README to show your security score and help users find safe servers.
Browser automation for AI agents as a single small binary. An MCP server (Streamable HTTP + stdio) that gives LLM clients navigate / screenshot / extract — without carrying the Node.js + Playwright stack.
Run this in your terminal to verify the server starts. Then let us know if it worked — your result helps other developers.
npx -y '@kitewright/mcp' 2>&1 | head -1 && echo "✓ Server started successfully"
After testing, let us know if it worked:
Five weighted categories — click any category to see the underlying evidence.
No known CVEs.
Checked @kitewright/mcp against OSV.dev.
Be the first to review
Have you used this server?
Share your experience — it helps other developers decide.
Sign in to write a review.
Others in browser / ai-ml
MCP client bridge: connects to MCP servers and registers their tools on ctx.tools
Chrome DevTools for coding agents
Monitor browser logs directly from Cursor and other MCP compatible IDEs.
The official MCP server implementation for the Perplexity API Platform
MCP Security Weekly
Get CVE alerts and security updates for io.github.kitewright/mcp and similar servers.
Start a conversation
Ask a question, share a tip, or report an issue.
Sign in to join the discussion.
Browser automation for AI agents as a single small binary. An MCP server (Streamable HTTP + stdio) that gives LLM clients navigate / screenshot / extract — without carrying the Node.js + Playwright stack.

Install in one line:
claude mcp add kitewright -- npx -y @kitewright/mcp
Head-to-head vs @playwright/mcp 0.0.78, same machine, same Chromium headless-shell build, same page (full methodology):
| @playwright/mcp | Kitewright | |
|---|---|---|
| Cold start → listening | 354 ms | 75 ms |
| Server RSS (idle) | 102–125 MB | 7.6 MB |
| Server RSS (after work) | 93 MB | 10.9 MB |
| Distribution | 18 MB pkg + Node.js runtime | 6.9 MB static binary |
| First navigate (incl. browser launch) | 2623 ms | 822 ms (session pre-warming) |
| Warm navigate latency | 80–116 ms | 99–105 ms (tie) |
| Idle behavior | browser kept alive | browser reaped after idle TTL, pre-warmed again on next session |
The browser itself (Chromium) costs the same in any language — warm latency is a tie because both speak CDP to the same browser. The wins are everything around it: startup, distribution, idle footprint, and lifecycle management. The honest gap: playwright-mcp ships ~25 tools today, we ship 21 — closing that is the roadmap.
click / type / fill_form / select_option / hover don't fire blindly. Before acting, the engine polls (100 ms, up to a 5 s per-op budget) until the target element is present, visible (not display:none / visibility:hidden / zero-size), enabled (no disabled / aria-disabled), not covered by another element at its click point, and geometrically stable across two consecutive frames. A settled element passes on the first poll, so this is invisible when things are fine — but when an action can't happen, you get a cause-specific error (not found / not visible / disabled / covered / unstable) instead of a silent misclick or a generic timeout. Transient CDP errors are retried twice. Pass timeout_ms on any interaction tool to override the 5 s per-op budget (e.g. a short timeout to fail fast when you expect an element to already be there).
External-site latency is network-bound — DNS + TLS + TTFB (~400–600 ms) is a floor no tool beats, and Kitewright does not claim to. What it does attack is every controllable cost around the network:
MCP_CONTEXT_POOL, default 2) in the background. A new session is then handed a ready context+page, so its first navigate pays zero browser-launch and zero context-creation cost. Measured localhost first-navigate: ~31 ms prewarmed vs ~709 ms cold (Apple Silicon; details). The pool drains with the browser on idle-reap and refills lazily on next demand, so idle footprint stays at the ~8 MB baseline.browser_navigate {lite:true} (and the default for extract / extract_markdown) blocks images/media/fonts + ad/analytics hosts before the load — 30–70 % faster DOM-ready on heavy pages by skipping the bulk of the bytes. Screenshots/PDF never block resources.--disk-cache-dir (KITE_CACHE_DIR) lets repeat asset fetches hit cache across runs; KITE_PREWARM_URL establishes DNS+TLS to a known origin during prewarm.The honest framing: the wins are browser launch, page weight, session start, and connection setup — not the network round-trip to a remote origin.
crates/
├── engine/ kitewright-engine — CDP core (chromiumoxide): lazy launch, idle reaper,
│ per-session browser c
... [View full README on GitHub](https://github.com/kitewright/kitewright#readme)