Agent-native headless browser. HTML in, Semantic Object Model out. 10x token compression.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
The browser engine for agents.
HTML in. Semantic Object Model out.
Website Β· Docs Β· Benchmarks Β· Crates.io Β· npm Β· PyPI
Dependency and CI trust policy, local audit commands, and scorecard promotion rules are documented in Supply-chain policy.
Plasmate compiles HTML into a Semantic Object Model (SOM), a structured representation that LLMs can reason about directly. It runs JavaScript via V8 and implements a documented CDP subset for supported Puppeteer workflows. SOM output removes presentation and runtime markup; output size and tokenization are page-, configuration-, serialization-, and tokenizer-dependent.
| Plasmate | Lightpanda | Chrome | |
|---|---|---|---|
| Primary output | Structured SOM JSON | Raw HTML / DOM | Raw HTML / DOM |
| JavaScript | Embedded V8 pipeline | Browser runtime | Browser runtime |
| Agent protocol | Native MCP and AWP | CDP | CDP |
| Benchmark policy | Retained, denominator-complete reports | Project-specific | Project-specific |
| License | Apache-2.0 | AGPL-3.0 | Chromium |
Or install the native engine with Cargo:
The npm and PyPI packages named plasmate are client SDKs; they do not bundle
or install the native plasmate executable. Install the native engine first,
then add npm install plasmate or pip install plasmate to applications that
need the corresponding SDK.
Returns SOM JSON: structured regions, interactive elements with stable IDs, and content. Measure output size on the pages and configuration used by your application.
Then connect with Puppeteer:
AWP's foundational v0.1 core has seven wire methods: awp.hello,
session.create, session.close, page.navigate, page.observe, page.act,
and page.extract. The current native handler also exposes session-listing,
network-interception, plugin, cookie, and proxy-pool extensions. Click, type,
select, scroll, toggle, and clear are page.act actions, not separate wire
methods.
Plans are versioned and bounded; mutating steps require separate
--confirm-step <id> approvals, while JavaScript evaluation and cookie writes
also require category opt-ins. See the workflow contract
for schemas, secret references, containment, and execution examples.
This exposes Plasmate over stdio as MCP tools:
fetch_page - get structured SOM from any URLextract_text - get clean readable textextract_links - get deduplicated links from a pageard_discover - inspect bounded static ARD v0.9 draft catalog signals without invoking themcrawl_policy - evaluate RFC 9309 robots.txt policy without changing fetch behaviorinspect_page - return bounded SOM first, with deterministic optional visual fallbackcache_status - inspect MCP SOM cache reuse and restorable page-state entriessession_status - inspect active sessions, loaded URLs, HTML/SOM/node inventory, and disabled/readonly interactive countstrace_status - inspect bounded action-trace retention for one sessiontrace_export - export privacy-safe plasmate.trace.v1 eventstrace_clear - discard retained events without resetting their sequencereplay_validate - validate a retained action without executing itscreenshot_page - capture a page screenshot, with SOM fallbackopen_page - start an interactive session (returns session_id, SOM, cache_restored)navigate_to - navigate an existing sessionevaluate - run JavaScript in the page contextclick - click elements by SOM element IDtype_text - type into an input or textareaselect_option - select a dropdown optionscroll - scroll the page or an elementtoggle - toggle checkbox, radio, or details stateclear - clear an input or textareaclose_page - end a sessionget_cookies - read session cookiesset_cookies - add or update session cookiesclear_cookies - remove session cookiesFor an authenticated local Streamable HTTP endpoint, set a capability token and select the HTTP transport explicitly:
The endpoint is http://127.0.0.1:9272/mcp. Every request must include
Authorization: Bearer <token>. The server implements JSON response mode for
the stateful MCP 2025-11-25 transport and the stateless 2026-07-28 release
candidate. It deliberately returns HTTP 405 for GET rather than claiming an
SSE notification stream it does not implement. See
docs/mcp-streamable-http.md for lifecycle,
headers, and browser-Origin policy.
Example Claude Desktop config:
Plasmate is purpose-built for AI agent pipelines. Several ways to wire it in:
Add to your MCP config and every tool call automatically uses Plasmate:
Config file locations:
~/Library/Application Support/Claude/claude_desktop_config.json (macOS)~/.cursor/mcp.json.vscode/mcp.json (workspace) or user settings~/.codeium/windsurf/mcp_config.jsonOnce connected, the native server advertises its current tool surface through
MCP tools/list. It includes stateless fetch/extraction/discovery tools,
cache/session/trace inspection, screenshot and stateful page interaction,
cookie operations, and validation-only replay. Query tools/list instead of
depending on a hard-coded count; the authoritative registration is
src/mcp/server.rs.
Tip: use selector="main" to strip nav/footer, selector="interactive"
to return only actionable elements, or selector="action:click" to build a
compact click-target menu before the LLM sees the content.
Use cache_status after repeated fetches to inspect local MCP SOM cache hits,
misses, selector entries, effective-HTML entries, and avoided HTML work.
Use session_status before long interactive runs to inspect active browser
session count, capacity, loaded URLs, raw/effective HTML sizes, SOM sizes,
node-map counts, structured data presence, disabled/readonly interactive
counts, age, and idle time. Stateful
open_page and navigate_to return cache_restored=true when they reuse a
content-hash-validated cache entry with both SOM and effective HTML.
Set trace=true on open_page to opt into bounded, memory-only action tracing,
then use trace_status, trace_export, and side-effect-free
replay_validate. Typed values and page bodies are never exported. See
docs/session-tracing.md for the privacy contract,
bounds, drift classes, and validation-only limitation.
Before a multi-page crawl, use crawl_policy or the CLI equivalent:
The versioned report distinguishes an unavailable robots file (4xx, access
permitted by RFC 9309) from an unreachable one (network/5xx, access denied).
It is advisory metadata, not authorization, and does not silently alter
ordinary fetch or fetch_page. See docs/CRAWL-POLICY.md.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/plasmate)<a href="https://allmcps.com/mcp/plasmate"><img src="https://allmcps.com/api/badge/plasmate?style=directory" alt="Plasmate on AllMCPs" /></a>