Runnable Python and JS examples for the Browserless MCP server. Browserless is a stateful MCP server: a multi-turn browser agent works in a real ReAct loop over HTTP, not just batched single-call mode.
The hosted endpoint at https://mcp.browserless.io/mcp exposes 10 tools auto-importable via langchain-mcp-adapters — no partner package needed.
| Stateless tools (8) | Stateful tools (2) | |
|---|---|---|
smartscraper, search, map, crawl, export, performance, function, download |
agent, skill |
|
| Use case | Single-shot scraping, research, data extraction | Multi-turn browser automation, ReAct loops with persistent browser state |
Multi-turn agent in Python: bind tools inside
async with client.session(...)to keep the same MCP session across calls — seepython/README.md. The JS adapter does this automatically.
import os
from langchain_mcp_adapters.client import MultiServerMCPClient
client = MultiServerMCPClient({
"browserless": {
"transport": "http",
"url": "https://mcp.browserless.io/mcp",
"headers": {"Authorization": f"Bearer {os.environ['BROWSERLESS_TOKEN']}"},
}
})
tools = await client.get_tools()
print([t.name for t in tools]) # 10 toolsSee python/ for full notebooks: quickstart.ipynb, research_agent.ipynb, browser_agent.ipynb.
import { MultiServerMCPClient } from "@langchain/mcp-adapters";
const client = new MultiServerMCPClient({
mcpServers: {
browserless: {
transport: "http",
url: "https://mcp.browserless.io/mcp",
headers: { Authorization: `Bearer ${process.env.BROWSERLESS_TOKEN}` },
},
},
});
const tools = await client.getTools();
console.log(tools.map((t) => t.name)); // 10 toolsSee js/ for full scripts: quickstart.ts, research_agent.ts, browser_agent.ts.
- Hosted MCP server: mcp.browserless.io
- Python adapter:
langchain-mcp-adapters - JS adapter:
@langchain/mcp-adapters