Better Browser MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| BROWSER_MCP_BIND | No | Bind address. Never set to 0.0.0.0 — exposes browser automation to the network. | 127.0.0.1 |
| BROWSER_MCP_PORT | No | WebSocket port to bind. Use different ports for different agents. | 9009 |
| BROWSER_MCP_AGENT_ID | No | Agent identifier. Used in the WS path (/ws/<id>) so the extension can route tab bindings. | default |
| BROWSER_MCP_AUTH_TOKEN | No | Optional shared secret. If set, the extension must send {type:'auth', token:'...'} as its first WS message, else the connection is closed with 4401. | |
| BROWSER_MCP_WS_PATH_PREFIX | No | Path prefix for the WS endpoint. Default /ws means the agent's endpoint is at /ws/<agentId>. | /ws |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {} |
| resources | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| browser_navigateC | Navigate to a URL |
| browser_go_backB | Go back to the previous page |
| browser_go_forwardC | Go forward to the next page |
| browser_snapshotA | Capture accessibility snapshot of the current page. Use this for getting references to elements to interact with. The snapshot also lists all bound tabs so the LLM can pick a different tab via tabId on subsequent calls. |
| browser_clickC | Perform click on a web page |
| browser_hoverB | Hover over element on page |
| browser_typeC | Type text into editable element |
| browser_select_optionC | Select an option in a dropdown |
| browser_press_keyC | Press a key on the keyboard |
| browser_waitB | Wait for a specified time in seconds |
| browser_get_console_logsB | Get the console logs from the browser |
| browser_screenshotB | Take a screenshot of the current page |
| browser_list_tabsA | List all browser tabs bound to this agent. Returns tabId, label, URL, title, and which one is the agent's active tab. Use this to discover what's available before issuing tool calls that need a specific tab. |
| browser_open_tabA | Open a new browser tab and bind it to this agent. Optionally provide a URL (will navigate after open) and a human-readable label (the LLM uses the label to refer to the tab in subsequent calls). The new tab is set as the agent's active tab. |
| browser_close_tabA | Close a browser tab previously bound to this agent. The tab's binding is automatically removed. |
| browser_rename_tabA | Set a human-readable label on a bound tab. The label is what the LLM uses to refer to the tab in conversation and in browser_list_tabs output. |
| browser_set_active_tabA | Set which bound tab is the agent's active tab. Tool calls that don't specify a tabId route to the active tab. Use this to switch the agent's focus between bound tabs. |
| browser_copy_to_clipboardA | Click a 'Click to copy' button on the page and return the value the page wrote to the clipboard. Use this for Stripe's publishable key / secret key copy buttons, GitHub PAT copy buttons, AWS access key copy buttons, and any other 'click to copy' UI patterns. The content script patches navigator.clipboard.writeText to capture the value as it is written, then returns it to the LLM. The returned value is plain text (the literal content of the copy button). For secret material, the LLM should pipe it to the user's PQC secrets store (e.g. via the pqc-secrets CLI) rather than persisting it in chat history or unencrypted state. |
| browser_paste_textA | Paste text into a focused element on the page. If |
| browser_wait_for_textA | Wait for a specific text to appear anywhere in the page DOM (case-insensitive substring match). Polls every 500ms until the text is found or the timeout elapses. Replaces blind |
| browser_get_attributeA | Read a single HTML attribute from an element referenced by snapshot ref. Use |
| browser_extract_textA | Extract the |
| browser_evaluateA | Run an arbitrary JavaScript expression in the page's main frame context. Returns the JSON-serializable result. Escape hatch for when ARIA snapshots cannot introspect something — React/Vue component state, computed styles, custom data attributes, third-party widget internals, hidden DOM the snapshot can't reach. The result must be JSON-serializable and is capped at 10KB. The expression runs in the page's global scope via indirect eval (sees |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
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/nbiish/betterbrowsermcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server