browserless-mcp
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PORT | No | HTTP server port (only for httpStream transport) | 8080 |
| TRANSPORT | No | Transport type: stdio or httpStream | stdio |
| BROWSERLESS_TOKEN | Yes | Your Browserless API token | |
| BROWSERLESS_API_URL | No | API endpoint (for self-hosted Browserless) | https://production-sfo.browserless.io |
| BROWSERLESS_TIMEOUT | No | Request timeout in milliseconds | 30000 |
| BROWSERLESS_CACHE_TTL | No | Cache TTL in milliseconds (0 to disable) | 60000 |
| BROWSERLESS_MAX_RETRIES | No | Max retry attempts for failed requests | 3 |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": true
} |
| resources | {
"subscribe": true,
"listChanged": true
} |
| completions | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| browserless_exportA | Export a webpage from a URL via the Browserless /export API. Fetches the URL and returns its content in the native format (HTML, PDF, image, etc.). Automatically detects the content type. Set includeResources=true to bundle all page assets (CSS, JS, images) into a ZIP archive for offline use. |
| browserless_skillA | Load a Browserless agent skill on demand, or discover site-specific recipes. Two uses:
Use the in-house skills below when you suspect the page exhibits a non-trivial mechanic but no SKILL block was auto-injected. The auto-injection heuristics are conservative; calling this tool is the explicit fallback. Available in-house skills:
|
| browserless_agentA | READ CAREFULLY: Execute browser commands in persistent agent session. Core Loop (ReAct: Reason → Act → Observe)
Ending the session (REQUIRED)An open session holds one of the account's concurrent browsers until it idles out — leaving it open is not free, and stacking them starves the next task.
Site recipes (site-specific, NOT auto-injected) — CHECK FIRSTMany specific sites (marketplaces, gov portals, travel, real-estate, etc.) have a tuned recipe for a given task — proven selectors, API shortcuts, proxy needs, and known gotchas that a from-scratch plan will miss. These are not auto-injected; you must ask for them, and a recipe overrides any plan you'd build yourself (including "just use a prefiltered URL + evaluate").
This is step 0 of every task — do it before your first Proxy (optional)Proxy config is a top-level tool argument ( If there is credible evidence the task needs a proxy, you MUST pass proxy options on the very FIRST call (before any If you already opened a session without a proxy and now realize one is needed, you must
AuthNever log in by default. Never invent or assume credentials exist (no "test credentials", no "your account"). If the snapshot contains a sign-in link OR you're about to mention "sign in" / "log in" / "auth required" — even as a suggested option to the user — call Terminal-Goal CheckBefore declaring done, restate the user's terminal deliverable in one line and verify your evidence directly supports it — not a sibling question.
Empty-state substitution. An empty/zero/null result from a resource that normally requires auth, scope, or filter context is evidence the precondition wasn't met — not evidence the question is answered. Empty cart while logged out, zero results while geo-restricted, empty inbox while unauthenticated: precondition failure → fix the precondition (often: load Skills (auto-injected)SKILL blocks auto-inject between
Snapshot Rules
Selectors
IframesSnapshots include a TabsSnapshots include LinksPrefer goto over click for links with href — immune to layout shifts, overlays, misclicks.
Example: Content Extraction
Files (upload / download)To download a file, DRIVE THE BROWSER — do not
Batching — Maximize Per CallPlan ALL actions from snapshot before next snapshot. Process:
Example form: AsyncAfter async triggers (search, submit), use Error RecoveryErrors tagged
Methods (non-obvious)
Runtime: LOCAL (stdio)Before any file transfer, know your mode: this server runs over stdio, on the same machine as your files. To UPLOAD a local file, pass its |
| browserless_searchA | Search the web using Browserless and optionally scrape each result. Performs web searches via SearXNG and can return results from web, news, or images. Optionally scrape each result URL to get markdown, HTML, links, or screenshots. Useful for research, gathering information, and finding relevant web pages. |
| browserless_performanceA | Run a Lighthouse performance audit on any URL via the Browserless /performance API. Returns scores and metrics for accessibility, best practices, performance, PWA, and SEO. Optionally filter by category or supply performance budgets. Note: audits can take 30s–120s depending on the site. |
| browserless_smartscraperA | Scrape a SINGLE webpage and return its content as markdown or HTML. Handles JavaScript-heavy pages and anti-bot measures automatically. For content across MULTIPLE pages of a site, use browserless_crawl; to list a site's URLs, use browserless_map. |
| browserless_functionA | Execute custom Puppeteer JavaScript code on the Browserless cloud. Your function receives a Puppeteer For binary outputs, set
Text responses are capped at 200,000 characters (~50K tokens). Larger text payloads will be rejected — filter or summarize inside your function, or switch to a binary type if you actually meant to return bytes. Useful for complex scraping, form filling, or any browser automation that requires custom code. |
| browserless_mapA | Discover and map all URLs on a website using Browserless. Scans a site via sitemaps and link extraction to find all pages. Returns a list of URLs with optional titles and descriptions. Use the search parameter to order results by relevance to a query. Useful for site audits, content discovery, and building site maps. |
| browserless_crawlA | Crawl a website and scrape every discovered page using Browserless. Starts from a seed URL and follows links up to a configurable depth. Supports sitemap discovery, path filtering, subdomain handling, and custom scrape options. Returns scraped content (markdown/HTML) for each page along with metadata. Useful for comprehensive site analysis, content extraction, and data gathering. |
| browserless_profilesA | List the authentication profiles saved for the current token. A profile is a saved logged-in browser state (cookies + storage) that can be replayed by passing its name as |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| scrape-url | Scrape a webpage and return its content as markdown with metadata |
| extract-content | Extract specific information from a webpage using the smart scraper |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| Browserless Service Status | |
| Browserless API Documentation |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/browserless/browserless-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server