A DOM dump is mostly markup an agent cannot act on; the Semantic Object Model gives elements ids and drops the rest, so a page arrives as a fraction of the context and the id you read in one call becomes the argument to click in the next. That shape also decides where it fits — this is for reading and driving pages programmatically, not for anything that depends on the page looking right. Remember it is two installs: the npm wrapper does nothing until the engine is on the machine.
An MCP wrapper around Plasmate, a browser engine built for agents rather than for people. Instead of rendering a page and handing back HTML, it returns a Semantic Object Model — structured JSON with addressable element ids — and the click and evaluate tools act on those ids. The engine installs separately from this wrapper.
- fetch_page retrieves a URL and returns its Semantic Object Model
- extract_text returns clean readable text from any URL, for when structure is not what you need
- open_page starts a persistent browser session and close_page ends it
- click acts on an element by its SOM id, and evaluate runs JavaScript inside the page
- Output is structured JSON rather than raw HTML, which is what makes an id read in one call usable as the argument to the next
- The publisher puts the difference against Chrome at 16.6x fewer tokens, 50x faster, and around 30MB of memory against 300MB+
Two installs. The wrapper: npm install -g plasmate-mcp, or run it as npx -y plasmate-mcp over stdio. The Plasmate engine itself: pip install plasmate, cargo install plasmate, or the Homebrew tap. No API key. The repository also works as a Cursor plugin.
One command — npm install -g plasmate-mcp
