MCP Server for Browser Automation: What It Actually Does (and How to Set One Up)

7

min read

Tutorials

If you're building an agent that needs to click, fill, and submit things on real websites, you've probably run into the phrase MCP server for browser automation a lot lately. The Model Context Protocol gave agent builders a standard way to expose tools to a model — and browser automation was one of the first, most obvious things people wanted to standardize. But "MCP server for browser automation" isn't one thing. There are at least three different jobs hiding under that label, and knowing which one you actually need will save you a rebuild later.

What an MCP server for browser automation does, in one sentence

An MCP server for browser automation exposes browser actions — navigating, clicking, typing, reading page content — as tools an LLM can call through a standard protocol, instead of you writing custom function-calling glue for every agent framework you use.

That's the whole idea. The protocol part is straightforward. The hard part is what happens inside the server, and that's where the three categories split.

The three things people mean by "MCP server for browser automation"

1. Browser access. Tools like Browserbase give an agent a real, remote browser session — headless Chrome running somewhere, with session persistence, proxies, and CAPTCHA handling. This layer answers "can the agent get to the page and keep a session alive." It doesn't tell the agent what's safe to click once it's there.

2. Content extraction. Tools like Firecrawl turn a page into clean text or markdown — good for scraping, summarizing, or feeding a page into a model as context. This layer answers "what does the page say." It's built for reading, not acting.

3. Action mapping. This is the layer most people underestimate until an agent clicks the wrong "submit" button in production. It answers "what is the agent actually allowed to do on this page, and in what order." A checkout button that's disabled until three required fields are filled isn't obvious from an accessibility tree or a markdown dump — an agent has to either guess or fail and retry.

Most MCP servers for browser automation live entirely in categories 1 and 2. That's fine for read-heavy tasks. It falls apart the moment your agent needs to fill out a multi-step form, pick a size variant before "add to cart" becomes clickable, or handle a country-locked checkout flow.

Why the "requires" relationship matters

Concretely, an agent doesn't just need a list of clickable elements — it needs the dependency graph between them. A submit button that requires an email field and a checkbox to be filled first isn't something you can infer by looking at the DOM in isolation; you need the relationship encoded. Without it, an agent either clicks blind and fails, or a human has to write page-specific logic for every site the agent touches — which defeats the point of using an agent at all.

This is the layer Manifest (io.omfang/manifest on the MCP Registry) is built around. It sits between "get me a browser" and "read me the text" — it returns a structured action manifest for a page: clickable, fillable, and submittable elements, resolved locators, and the requires graph between them. You can pair it with a browser-access tool for the session and a content-extraction tool for reading, or point it at DOM you've already captured in a browser extension via the /manifest/from-dom endpoint, which skips the browser-automation layer entirely when you already have the page loaded client-side.

How to set one up

Setup is the same shape regardless of which MCP server for browser automation you're using — register it with your MCP client, then let the agent discover the tools.

Manifest's MCP server is a remote endpoint (https://manifest.omfang.io/mcp, streamable-http), not a local package — so setup differs by client.

Claude Desktop or claude.ai, no config file needed: Settings → Connectors → Add custom connector → paste https://manifest.omfang.io/mcp and provide your API key as the x-api-key header when prompted.

Claude Code:




bash


claude mcp add --transport http manifest https://manifest.omfang.io/mcp --header "x-api-key: $MANIFEST_API_KEY"

Any config-file-based client (older Claude Desktop versions, other stdio-only MCP clients), bridge through mcp-remote:




json


{
  "mcpServers": {
    "manifest": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://manifest.omfang.io/mcp", "--header", "x-api-key:${MANIFEST_API_KEY}"],
      "env": { "MANIFEST_API_KEY": "your-api-key-here" }
    }
  }
}

Prefer the REST API or Python directly?




bash


LangChain, if you're wiring tools into an existing agent rather than using an MCP client directly:




bash


pip install "manifest-api[langchain]"

Once it's connected, the agent gets a tool it can call with a URL and gets back the structured manifest — no bespoke scraping code per site, no custom selector-writing when a page changes its layout.

Which one do you actually need

  • Just need to get to a page and keep a session alive? Browser access (Browserbase-style) is enough.

  • Just need to read or summarize page content? Content extraction (Firecrawl-style) is enough.

  • Need the agent to reliably click, fill, and submit things it hasn't seen before? You need the action-mapping layer — that's the gap Manifest fills.

Most production agents end up needing more than one of these, and that's fine — they're not mutually exclusive. The mistake is assuming a page-reading tool will also tell you what's safe to click.

FAQ

What is an MCP server for browser automation? It's a server that exposes browser actions to an LLM through the Model Context Protocol, so an agent can navigate, click, fill, and read pages using a standard tool interface instead of custom per-framework code.

Is Manifest a replacement for Browserbase or Firecrawl? No. Manifest doesn't run browser sessions or produce markdown summaries — it produces the action layer: what's clickable, fillable, and submittable, and the order those actions have to happen in. It's commonly used alongside a browser-access tool or with DOM captured directly from a browser extension.

Do I need my own browser infrastructure to use Manifest? No — Manifest runs its own extraction by default. If you already have a browser session (e.g., a browser extension capturing live DOM), the /manifest/from-dom endpoint accepts that directly and skips the browser-automation step.

Where can I find Manifest on the MCP Registry? It's listed as io.omfang/manifest in the official MCP Registry and on Smithery. It's a remote server (streamable-http), so most clients connect via URL rather than installing a local package — see the setup section above.

Manifest is a hosted API and MCP server that turns any webpage into a structured action manifest for AI agents. Try it or read the docs.

omfang logo

Follow us on social media

Contact us

Learn more about omfang