Skip to main content
Glama
nbiish

Better Browser MCP

by nbiish

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
BROWSER_MCP_BINDNoBind address. Never set to 0.0.0.0 — exposes browser automation to the network.127.0.0.1
BROWSER_MCP_PORTNoWebSocket port to bind. Use different ports for different agents.9009
BROWSER_MCP_AGENT_IDNoAgent identifier. Used in the WS path (/ws/<id>) so the extension can route tab bindings.default
BROWSER_MCP_AUTH_TOKENNoOptional 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_PREFIXNoPath 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

CapabilityDetails
tools
{}
resources
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
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 ref is provided, that element is focused first; otherwise the currently focused element receives the paste. Counterpart to browser_copy_to_clipboard — copy a value with the copy tool, then paste it elsewhere. Dispatches a synthetic paste event (clipboardData.setData + 'insertFromPaste') so React/Vue/Angular controlled inputs accept the value. Use for Stripe webhook secret fields, generated API key fields, or any text you need to push into a form.

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_wait(time) calls. Returns a fresh ARIA snapshot once the text appears. Use after clicking a submit button, or to wait for a Stripe dashboard to finish loading. On timeout, returns an error with the current page text length so you can diagnose what is or isn't rendering.

browser_get_attributeA

Read a single HTML attribute from an element referenced by snapshot ref. Use attr: 'href' to get a link's URL (e.g. extract a Stripe payment link from a share button), attr: 'value' for current input values, attr: 'aria-label' for accessibility text, or any custom data-* attribute. Returns the attribute value as a string, or an empty string if the attribute is not set. Cheaper and more precise than a full snapshot when you need one specific value.

browser_extract_textA

Extract the textContent of a single element by ref. Cheaper than a full snapshot when you just need the visible text of one element. Returns the text as a plain string with whitespace normalized. Use to grab a heading, a status message, or a single field's value without paying the snapshot cost.

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 window, document, etc.) and any side effects DO persist — only call this with code you have reviewed.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

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