Browser MCP
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Browser MCPfetch https://news.ycombinator.com, wait for table.itemlist, and summarize top stories"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
playwright-mcp
A standalone MCP server (browser_mcp.py) that lets an
LLM read JavaScript-rendered webpages as token-efficient Markdown.
It keeps one warm headless Chromium instance, opens an isolated browser context per
request, extracts the main content with trafilatura (dropping navigation, ads and
boilerplate), and converts it to Markdown with markdownify.
Tool
fetch_webpage_markdown(url: str, wait_for_selector: str = "") -> str
Navigates with
wait_until="domcontentloaded"(15 s timeout).If
wait_for_selectoris given, waits up to 5 s for it; otherwise waits 1 s for client hydration.Falls back to the raw page HTML if content extraction fails.
Output uses ATX (
#) headers;script,style,noscript,svgandbuttonare stripped.
Related MCP server: markfetch-mcp
Recommended: run in Docker (isolated)
Dependencies, Chromium and every page it opens live inside a throwaway container: non-root user, no host mounts, no extra capabilities, memory/CPU capped, removed on exit. Nothing is installed on your system.
docker build -t browser-mcp .{
"mcpServers": {
"browser": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"--cap-drop=ALL", "--security-opt=no-new-privileges",
"--memory=1g", "--cpus=1", "--pids-limit=256",
"--ipc=host",
"browser-mcp"
]
}
}
}Notes: only http(s) URLs are accepted (no file://). The container can still reach your
LAN/localhost services through Docker's network; add a restrictive --network or firewall
rule if you need to block that.
Install without Docker
Requires Python 3.10+.
pip install mcp playwright trafilatura markdownify
playwright install chromiumRegister with an MCP client
Add to claude_desktop_config.json (or your client's MCP settings), using the absolute
path to browser_mcp.py and the Python interpreter that has the dependencies installed:
{
"mcpServers": {
"browser": {
"command": "python",
"args": ["/absolute/path/to/playwright-mcp/browser_mcp.py"]
}
}
}Restart the client after editing the config.
Usage example
Ask the assistant:
Use fetch_webpage_markdown to read https://example.com and summarize it.
For pages that render content client-side, pass a selector to wait for:
{
"url": "https://news.ycombinator.com/",
"wait_for_selector": "table.itemlist"
}To try the server interactively: npx @modelcontextprotocol/inspector python browser_mcp.py.
This server cannot be deployed
Maintenance
Related MCP Connectors
Convert any webpage to clean LLM-ready markdown, extraction-first, with article and news modes.
Screenshot any URL/HTML as PNG/JPEG/WebP, or read it as clean Markdown/text for LLMs.
Converts any URL to clean, LLM-ready Markdown using real Chrome browsers
Read any web page as clean Markdown for AI agents: fetch, search, metadata, links. SSRF-safe.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceMCP server for AI agents -- fetch any URL with full JavaScript rendering (Playwright/Chromium) and convert to clean, token-efficient markdown. Works on React, Vue, Angular, and any JS-heavy page. Includes web search, batch fetching, binary file download, LRU cache, SSRF protection, and structured output.29 npmMIT
- AlicenseAqualityDmaintenanceEnables AI agents to fetch any web page as clean markdown or screenshot it, turning URLs into LLM-ready context.211 npmMIT
- AlicenseNot gradedqualityDmaintenanceConverts any webpage into clean, LLM-ready Markdown, removing noise and supporting JavaScript rendering.MIT
- AlicenseAqualityBmaintenanceFetches web pages and converts them to clean, LLM-ready Markdown, with optional JavaScript rendering and honest statuses when pages are blocked or need JS.248 npmMIT