Browser Use MCP server

Endpoint: https://api.browser-use.com/v3/mcp · Authentication: Bearer token

Runs Browser Use cloud browser-agent tasks, polls their status and output, and manages sessions and browser profiles. Requires a Browser Use API key as a bearer token.

How do I authenticate?

Create a scoped provider token and supply it using the credential header and value format documented in the client setup below. Keep credentials out of shared URLs and logs.

Authentication and connection guide

Connection specification

Remote endpoint
https://api.browser-use.com/v3/mcp
Browser access
Not yet measured
Declared MCP transport
Streamable HTTP
Live-validated MCP transport
Streamable HTTP — Observed by the latest catalog validation
Declared authentication
Bearer token
Detected authentication
Bearer token detected or retained from publisher evidence
Protocol lifecycle
Stateful MCP · 2024-11-05
Required header
Authorization — Browser Use API key: Bearer <BROWSER_USE_API_KEY>
Authorization server
https://api.browser-use.com
Category
Automation

Product documentation · Source repository · Official listing documentation

Provider guidance

  • Initialization succeeded without credentials in the 2026-10-20 audit; tool calls require the API key.

More Automation MCP servers · Browse all MCP servers · Test this endpoint in the MCP Playground

Authorization setup

bearer token required

Use the publisher-documented bearer token route. Keep the credential in protected client storage and replace only the named placeholder at connection time.

Safe header template: Bearer <BROWSER_USE_API_KEY>. Replace only the named placeholder in protected client configuration.

Publisher documentation

Connect it

Live-validated endpoint: https://api.browser-use.com/v3/mcp · Streamable HTTP. Bearer token authentication uses a named environment placeholder.

Agent prompt for Claude Code or Codex
Add the Browser Use MCP server to my MCP client configuration and verify that it works.

What it is: Runs Browser Use cloud browser-agent tasks, polls their status and output, and manages sessions and browser profiles. Requires a Browser Use API key as a bearer token.
Server URL: https://api.browser-use.com/v3/mcp
Transport: Streamable HTTP (remote MCP server, no local install).
Authentication: Bearer token. Bearer token authentication uses a named environment placeholder.
Tools (7, as last observed by mcptest): get_session, get_session_messages, list_browser_profiles, list_sessions, run_session, send_task, stop_session.
Reference: https://mcptest.io/servers/browser-use/

Steps:
1. Work out which MCP client I use (Claude Code, Codex, Cursor, VS Code or another) and add the server under the name "browser-use" in that client's MCP configuration, user scope unless I ask otherwise.
   Claude Code: claude mcp add --transport http --scope user --header 'Authorization: Bearer '"${BROWSER_USE_API_KEY}" 'browser-use' 'https://api.browser-use.com/v3/mcp'
   Codex: codex mcp add 'browser-use' --url 'https://api.browser-use.com/v3/mcp' --bearer-token-env-var 'BROWSER_USE_API_KEY'
   Other clients: use the setup for that client on the reference page.
2. Never write a credential value into a file that could be committed; reference an environment variable or the client's secret store, and ask me for any value you need.
3. Verify: connect to the server and call tools/list. Confirm the tools above are listed, and report any sign-in step I still have to complete.
MCP client

Claude Code setup

Run in a terminal. This user-scoped entry is available across projects.

claude mcp add --transport http --scope user --header 'Authorization: Bearer '"${BROWSER_USE_API_KEY}" 'browser-use' 'https://api.browser-use.com/v3/mcp'
  • Store BROWSER_USE_API_KEY in your operating system keychain, secret manager, or protected environment; never commit the value. The Authorization header syntax is Bearer <BROWSER_USE_API_KEY>.

Codex CLI setup

Run in a terminal; Codex stores the entry in ~/.codex/config.toml.

codex mcp add 'browser-use' --url 'https://api.browser-use.com/v3/mcp' --bearer-token-env-var 'BROWSER_USE_API_KEY'
  • Store BROWSER_USE_API_KEY in your operating system keychain, secret manager, or protected environment; never commit the value. The Authorization header syntax is Bearer <BROWSER_USE_API_KEY>.

Cursor setup

Add to .cursor/mcp.json for this project, or ~/.cursor/mcp.json for all projects.

{
  "mcpServers": {
    "browser-use": {
      "url": "https://api.browser-use.com/v3/mcp",
      "headers": {
        "Authorization": "Bearer ${env:BROWSER_USE_API_KEY}"
      }
    }
  }
}
  • Store BROWSER_USE_API_KEY in your operating system keychain, secret manager, or protected environment; never commit the value. The Authorization header syntax is Bearer <BROWSER_USE_API_KEY>.

VS Code setup

Add to .vscode/mcp.json, or run “MCP: Open User Configuration” for a private user-level entry.

{
  "servers": {
    "browser-use": {
      "type": "http",
      "url": "https://api.browser-use.com/v3/mcp",
      "headers": {
        "Authorization": "Bearer ${input:browser_use_api_key}"
      }
    }
  },
  "inputs": [
    {
      "type": "promptString",
      "id": "browser_use_api_key",
      "description": "BROWSER_USE_API_KEY for Browser Use",
      "password": true
    }
  ]
}
  • VS Code requests BROWSER_USE_API_KEY as a masked input; use a secret manager and do not put a default value in mcp.json. The Authorization syntax remains Bearer <BROWSER_USE_API_KEY>.

Claude setup

Add the endpoint above in Claude:

  • Customize > Connectors > Add custom connector
  • Team/Enterprise: Organization settings > Connectors > Add > Custom > Web

Claude Desktop setup

Add the endpoint above in Claude Desktop:

  • Remote: Customize > Connectors (same as claude.ai)
  • Local: Settings > Developer > Edit Config, or Settings > Extensions for .mcpb files
  • ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows), local servers only

ChatGPT setup

Add the endpoint above in ChatGPT:

  • ChatGPT web: Plugins > Add custom MCP server, then configure authentication and accept the risk warning

Windsurf setup

Add the endpoint above in Windsurf:

  • ~/.config/devin/mcp_config.json (%APPDATA%\devin\mcp_config.json on Windows), serverUrl or url
  • Cascade panel > ... > MCPs > Open MCP config file

Gemini CLI setup

Add the endpoint above in Gemini CLI:

  • gemini mcp add --transport http <name> <url>
  • ~/.gemini/settings.json (user) or .gemini/settings.json (project), mcpServers

MCP SDK setup

Add the endpoint above in MCP SDK:

  • Programmatic: new Client(...).connect(new StreamableHTTPClientTransport(url))

Notes for every client

  • Provider guidance: Initialization succeeded without credentials in the 2026-10-20 audit; tool calls require the API key.

Client compatibility

ClientStatusWhy
Claude CodeSupportedClaude Code supports Streamable HTTP servers and bearer-token headers.
CodexSupportedCodex supports Streamable HTTP servers and bearer-token headers.
CursorSupportedCursor supports Streamable HTTP servers and bearer-token headers.
VS CodeSupportedVS Code supports Streamable HTTP servers and bearer-token headers.
ClaudePartialClaude supports bearer-token headers only in limited availability. Request-header authentication is in beta and available to a limited set of organizations.
Claude DesktopPartialClaude Desktop supports bearer-token headers only in limited availability. Request-header authentication is in beta and available to a limited set of organizations.
ChatGPTNot supportedChatGPT does not support bearer-token headers. Only the OAuth-issued token is sent; ChatGPT cannot present custom API keys.
WindsurfSupportedWindsurf supports Streamable HTTP servers and bearer-token headers.
Gemini CLISupportedGemini CLI supports Streamable HTTP servers and bearer-token headers.
MCP SDKSupportedMCP SDK supports Streamable HTTP servers and bearer-token headers.

Computed from this server's validated transport, protocol and authentication against documented client support. Checks the catalog has not observed are not counted.

Similar servers

  • Make — Runs Make scenarios as tools and manages scenarios, connections, and other Make resources. This endpoint uses OAuth; Make also documents zone-specific MCP-token URLs. OAuth 2.1
  • Apify — Searches Apify Store, runs Actors for web scraping and automation, and reads their datasets and documentation. Uses OAuth or an Apify API token as a bearer token; a few tools work without an account. OAuth 2.1
  • Zapier — Runs actions in the apps connected to a Zapier account through a configured Zapier MCP server. Supports OAuth or a Zapier MCP connection token as a bearer token. OAuth 2.1
  • Airbyte — Adds and removes Airbyte agent connectors and reads or writes data in connected SaaS sources. Requires Airbyte sign-in through OAuth, then per-connector authorization. OAuth 2.1
  • IFTTT — Create IFTTT Applets and run actions and queries across connected services. OAuth 2.1
  • Octoparse — Discover Octoparse templates, manage cloud scraping tasks and export structured data. OAuth 2.1

Guides for this server

Watch this server for breaking changes

Share and embed

Maintain Browser Use? Embed this badge in your README. It follows the latest catalog validation result and links to this server profile.

mcptest.io: ready

Latest validation evidence

Validation status
Online when last tested
Validation checked at
Oct 26, 2026 at 11:07 AM
Validation detail
Negotiated stateful MCP 2024-11-05 at https://api.browser-use.com/v3/mcp; detected transport streamable-http; authentication bearer-token

Tool inventory

What the catalog validator observed on at https://api.browser-use.com/v3/mcp without credentials. The live server may have changed since; connect in the Playground for the current list.

Tools provided by Browser Use 7

  • get_sessionNo outputSchema

    Get current status and output of a session. Call this repeatedly to poll for task completion. Returns status (created, idle, running, stopped, timed_out, error), step count, output, cost breakdown, and live URL.

    Input session_id: string
    • session_id: stringrequired

      UUID of the session to check.

  • get_session_messagesNo outputSchema

    Get the agent messages/steps for a session. Shows what the agent is doing including browser actions, reasoning, and results. Use after= parameter for pagination to get new messages since your last check.

    Input after?: string, limit?: integer, session_id: string
    • after?: stringoptional

      Return messages after this message ID (cursor-based pagination). Omit for initial fetch.

    • limit?: integeroptional

      Max number of messages to return.

    • session_id: stringrequired

      UUID of the session.

  • list_browser_profilesNo outputSchema

    List all available cloud browser profiles for the authenticated project. Profiles store persistent authentication (cookies, sessions) for websites requiring login. Use this BEFORE attempting any authenticated tasks. Show profiles to the user and let them choose, then pass the selected profile_id to run_session.

    Input No parameters

  • list_sessionsNo outputSchema

    List recent sessions for the authenticated project, with status and cost info.

    Input page?: integer, page_size?: integer
    • page?: integeroptional

      Page number (1-indexed).

    • page_size?: integeroptional

      Results per page.

  • run_sessionNo outputSchema

    Create a new browser agent session and run a task. This uses the v3 sandbox-based agent that supports long-running sessions, workspaces, and keep-alive. After creating a session, call get_session to poll for status and output. For tasks requiring authentication, use list_browser_profiles first to get a profile_id.

    Input keep_alive?: boolean, model?: string, output_schema?: object, profile_id?: string, proxy_country?: any, task: string, workspace_id?: string
    • keep_alive?: booleanoptional

      If true, the session stays idle after the task finishes, ready for follow-up tasks via send_task. Default is false (session auto-stops).

    • model?: stringoptional

      Agent model to use. When omitted, an account-appropriate default is selected. Available: gemini-3-flash, claude-sonnet-5, claude-opus-4.6, claude-opus-4.7, claude-opus-4.8, gpt-5.4-mini, glm-5.2, minimax-m3, grok-4.6, glm-5.3-flash, deepseek-v4-flash-vision.

    • output_schema?: objectoptional

      JSON schema for structured output. The agent will return data matching this schema.

    • profile_id?: stringoptional

      UUID of the cloud profile to use for authenticated tasks. Get this from list_browser_profiles.

    • proxy_country?: anyoptional

      ISO 3166-1 alpha-2 country code for the proxy location (e.g. "us", "gb", "de", "jp", "br"). Defaults to "us" if not specified. Set to null to disable the proxy.

    • task: stringrequired

      Detailed instructions for what you want the browser agent to do.

    • workspace_id?: stringoptional

      UUID of the workspace for file persistence across sessions.

  • send_taskNo outputSchema

    Send a follow-up task to an existing keep-alive session. The session must be in idle status. Use this for multi-turn interactions where you want to reuse the same browser context.

    Input keep_alive?: boolean, output_schema?: object, session_id: string, task: string
    • keep_alive?: booleanoptional

      If true, session stays idle after this task too. Default is false.

    • output_schema?: objectoptional

      JSON schema for structured output.

    • session_id: stringrequired

      UUID of an existing idle session (from run_session with keep_alive=true).

    • task: stringrequired

      The follow-up task instructions.

  • stop_sessionNo outputSchema

    Stop a running session. Use strategy "task" to stop only the current task (session stays idle for follow-ups), or "session" (default) to destroy the sandbox entirely.

    Input session_id: string, strategy?: string
    • session_id: stringrequired

      UUID of the session to stop.

    • strategy?: stringoptional

      Stop strategy: "task" stops the current task only, "session" destroys the sandbox.