browser-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@browser-mcpGo to example.com and show me the page snapshot"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Browser MCP
Derived from internal Hermes project.
Agent-native browser control MCP server — 让任何支持 MCP 的 AI agent 都能浏览网页。
为什么需要这个?
现有的浏览器 MCP(Playwright、Puppeteer)是给程序员写代码用的底层 API。这个 MCP 是给 LLM agent 用的:
Accessibility tree snapshot — agent "看到"的是可读的 DOM 树,不是原始 HTML
Ref ID 交互 —
click("@e5")就行,不用写 CSS 选择器本地运行 — 不需要云端浏览器,不需要 API key
开箱即用 — 13 个工具覆盖浏览器操作 + 网络调试 + 测试用例录制
Related MCP server: stealth-agent-browser-mcp
工作原理
MCP 客户端 (Claude Code / Cursor / ZCode ...)
│ stdio
▼
browser-mcp (本仓库,Python MCP server)
│ subprocess
▼
agent-browser CLI ──► 本地 Chrome (headless 或 headed)browser-mcp 是一层薄封装,把 agent-browser CLI 的能力以 MCP 工具的形式暴露给 LLM agent。agent 通过 ref ID 与页面交互,不用写选择器。
安装
前置依赖
需要 Python ≥ 3.10 和 Node.js(用于安装 agent-browser)。
第 1 步:安装 agent-browser 并下载 Chrome
# 安装 CLI(需要 Node.js)
npm install -g agent-browser
# 下载它自带的 Chrome for Testing(首次安装必做)
agent-browser install验证:
agent-browser --version
agent-browser open example.com && agent-browser snapshot -i
# 能看到页面的可交互元素列表,说明 agent-browser 就绪第 2 步:安装 browser-mcp
git clone https://github.com/huaka1/browser-mcp.git
cd browser-mcp
# 建议用虚拟环境
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
# 可编辑安装(同时注册 `browser-mcp` 命令行入口)
pip install -e .验证:
browser-mcp --help # 或:python -m browser_mcp.server一键安装(让 Agent 帮你装)
不想手动跑命令?把下面这段 prompt 复制给你的 AI agent(Claude Code / Cursor / ZCode 等),它会自己执行安装、生成配置、并引导你验证。
请帮我安装并配置 browser-mcp(一个让 AI agent 控制浏览器的 MCP server)。
按步骤执行,每步验证通过后再进入下一步;失败就停下来告诉我原因和修复建议。
【前提检查】
- 跑 `node --version`;失败就提示我装 Node.js(macOS: `brew install node`)
- 跑 `python3 --version` 确认 ≥ 3.10;失败就提示我装 Python 3.10+
【1. 安装浏览器引擎】
npm install -g agent-browser
agent-browser install # 下载 Chrome for Testing,约 1-2 分钟
验证:agent-browser open example.com && agent-browser snapshot -i
能列出页面可交互元素即成功
【2. 克隆并安装 browser-mcp】
git clone https://github.com/huaka1/browser-mcp.git ~/browser-mcp
cd ~/browser-mcp
python3 -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -e .
验证:`python -m browser_mcp.server` 能启动(或 browser-mcp 在 PATH 中)
【3. 生成 MCP 配置 — 关键:合并而非覆盖】
- 用 `~/browser-mcp/.venv/bin/python` 的绝对路径作为 command
- 定位我的 MCP 配置文件:优先当前项目 ./.mcp.json,其次 ~/.claude.json
- 若文件已存在:解析 JSON,在 mcpServers 下新增 "browser" 键(保留其它配置)
- 若不存在:新建文件,写入 {"mcpServers": { ... }}
- browser 配置内容:
"browser": {
"command": "<venv python 绝对路径>",
"args": ["-m", "browser_mcp.server"],
"env": { "BROWSER_MCP_HEADED": "1" }
}
【4. 收尾】
告诉我重启 MCP 客户端以加载新配置。
重启后引导我调用 browser_navigate 打开 https://example.com 做最终验证——
返回页面快照即代表安装链路打通。提示:prompt 里默认开启有头模式(
BROWSER_MCP_HEADED=1),方便你看到浏览器在干什么。如果旧 daemon 还在 headless 跑导致看不到窗口,让 agent 执行agent-browser close --all后重试即可。
配置 MCP 客户端
在你的 MCP 客户端配置里添加一个 browser server。最简单的方式是直接用 Python 模块启动:
{
"mcpServers": {
"browser": {
"command": "/你/克隆的路径/browser-mcp/.venv/bin/python",
"args": ["-m", "browser_mcp.server"],
"env": {
"BROWSER_MCP_HEADED": "1"
}
}
}
}仓库里有一份现成模板
.mcp.json.example,复制成.mcp.json后改路径即可。
command 一定要指向你本机的 venv python 绝对路径,否则 MCP 客户端找不到 browser_mcp 包。如果用的是全局 pip install,可以直接写 "command": "browser-mcp"、去掉 args。
各客户端配置文件位置
客户端 | 配置文件 |
Claude Code |
|
Cursor / Windsurf | 各自的 MCP 设置面板 |
ZCode | 项目 |
配置完成后重启客户端,确认 browser_* 工具已加载。
想看到浏览器窗口(有头模式)
默认 headless,看不到浏览器在干什么。设环境变量即可显示窗口:
"env": {
"BROWSER_MCP_HEADED": "1"
}⚠️
agent-browser是 daemon 模式,--headed只在 daemon 首次启动时生效。如果之前已经有 headless daemon 在跑,新设的有头模式会被忽略。遇到这种情况,在终端跑agent-browser close --all关掉旧 daemon,再重新触发 MCP 工具调用即可。
首次验证
配置好后,让 agent 执行一个最简单的流程来确认链路通了:
调用
browser_navigate打开https://example.com调用
browser_snapshot—— 应返回页面的可交互元素列表(链接、按钮 + ref ID)调用
browser_vision—— 应返回页面截图
三条都成功,说明安装完成。
工具列表
浏览器操作
工具 | 说明 |
| 导航到 URL,返回页面快照 |
| 获取页面 accessibility tree + ref ID |
| 点击元素(通过 ref ID) |
| 在输入框中输入文本 |
| 按键盘按键 |
| 滚动页面 |
| 浏览器后退 |
| 截图 |
| 获取控制台输出 / 执行 JS |
| 列出页面图片 |
网络层调试
工具 | 说明 |
| 获取网络请求日志(支持 URL/方法/状态码/类型过滤) |
| 查看请求的完整详情(headers + response body) |
| 拦截/模拟/阻断请求(block ads, mock API) |
测试用例录制(无感留痕 + 导出)
工具 | 说明 |
| 列出当前 session 缓冲区里已留痕的操作步骤 |
| 把操作步骤导出成 jsonl 测试用例,同时保存登录态 |
录制出的 jsonl 可让 agent 自己读回、用 role+name 重新定位元素重放,做无代码 E2E 回归。导出目录由
BROWSER_MCP_E2E_DIR指定。
环境变量
变量 | 说明 | 默认 |
|
| headless |
|
| 关 |
| jsonl 测试用例导出目录 | 无 |
License
MIT
Available Tools
15 toolsbrowser_backB
Go back in browser history.
Args: session_id: Browser session ID
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | No | default |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must fully disclose behavioral traits. It only states the action but fails to mention what happens in edge cases (e.g., empty history), whether it returns a result, or if any side effects occur. This is insufficient for a mutation-like tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with no extraneous words. It delivers the core purpose and parameter information in a single sentence and an args list, achieving maximum efficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with one parameter and an output schema, but the description lacks completeness. While the output schema covers return values, the description omits guidance on common use cases, error conditions, or integration with other tools, making it minimally adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must add meaning. It describes session_id as 'Browser session ID', which provides context beyond the schema's type and default. However, it does not explain how to obtain a valid session_id or its role, leaving some ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'go back' and the resource 'browser history', making the tool's purpose unambiguous. It is easily distinguishable from sibling tools like browser_navigate, which goes to a specific URL, and browser_scroll, which scrolls the page. However, it does not explicitly differentiate from alternatives, hence a 4.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as browser_navigate or when not to use it (e.g., if history is empty). The description lacks any context about appropriate scenarios or prerequisites, leaving the agent to infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_clickA
Click an element by its ref ID from the snapshot.
Args: ref: Element reference like "@e5" or "@e12" from the snapshot session_id: Browser session ID
| Name | Required | Description | Default |
|---|---|---|---|
| ref | Yes | ||
| session_id | No | default |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only states the action without mentioning side effects (e.g., potential navigation, waiting behavior), return format, or dependencies (e.g., requiring a prior snapshot). This is insufficient for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, with a single sentence for the action and a brief list of args. It is front-loaded and efficient, though the args list is minimally formatted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description lacks contextual completeness: it does not mention prerequisites (e.g., taking a snapshot first), potential outcomes (e.g., page changes), or error conditions. For a simple click tool, this is insufficient given the lack of annotations and output schema details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description adds meaning: it explains ref as a reference like '@e5' or '@e12' and specifies session_id as 'Browser session ID'. This compensates for the schema gap, though session_id could be further clarified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Click') and the target ('an element by its ref ID from the snapshot'). It distinguishes this tool from siblings like browser_navigate (URL-based) and browser_type (text input) by specifying the mechanism (ref ID).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for clicking elements identified by ref IDs from a snapshot, but lacks explicit guidance on when not to use it (e.g., for navigation use browser_navigate) or alternatives. It provides basic context without exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_consoleA
Get browser console output or evaluate a JavaScript expression.
Without expression: returns recent console.log/warn/error messages. With expression: evaluates the JS and returns the result.
Args: session_id: Browser session ID expression: JavaScript expression to evaluate (optional)
| Name | Required | Description | Default |
|---|---|---|---|
| expression | No | ||
| session_id | No | default |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Covers modes but lacks detail on side effects (e.g., read-only nature) or security implications, which is important given no annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise and well-structured with front-loaded purpose and clear separation of modes; no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers key information for a tool with two modes and two optional parameters, though could mention the output format for each mode.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Thoroughly explains both parameters (session_id and expression) including defaults and optionality, fully compensating for the 0% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves browser console output or evaluates a JavaScript expression, distinguishing it from sibling tools that handle navigation, clicking, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Describes two distinct modes (with/without expression) but does not explicitly state when to use this tool over alternatives or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_export_stepsA
把缓冲区的页面操作步骤导出成 jsonl 测试用例,同时保存登录态。
导出后清空缓冲区。以后回归时:让 agent Read 这个 jsonl, 用 browser state load 加载 auth.json,按步骤用 browser_navigate/click/type 重放 (用 role+name 定位,不用 ref),看当下 url/title 跟录制时一不一致自己判断对错。
Args: name: 用例名,文件名为 test_{name}.jsonl domain: 领域名(如 auth/task/file/cron/skill),作为子目录名 from_step: 从第几步开始导出(1-based),默认 1=全部。用 browser_list_steps 看编号后决定。 session_id: Browser session ID(用于保存登录态)
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| domain | Yes | ||
| from_step | No | ||
| session_id | No | default |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses key behaviors beyond the schema: it empties the buffer after export ('清空缓冲区'), saves login state, and ties session_id to auth. This is critical for a tool that modifies state, and no annotations are present to contradict.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose, then explains the workflow, and finally lists parameters. It is reasonably concise for the complexity, though the parameter documentation could be more structured (e.g., bullet points).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the existence of an output schema (though not visible), the description covers the essential context: export format, buffer clearing, and usage in regression. However, it doesn't specify the return value (e.g., file path) or detail how the session_id saves login state.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description fully compensates by explaining each parameter: name (test case name), domain (subdirectory), from_step (starting step, default 1), and session_id (for login state). This provides clear meaning beyond the schema's type-only definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool exports page operation steps from buffer to jsonl test cases and saves login state. It distinguishes from siblings like browser_list_steps (which lists steps) by focusing on export and clearing buffer.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a detailed regression workflow, referencing sibling tools (browser_list_steps for step numbering, browser_navigate/click/type for replay). However, it doesn't explicitly state when not to use this tool or give direct comparisons to alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_get_imagesA
List all images on the current page with their URLs and alt text.
Args: session_id: Browser session ID
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | No | default |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden but only states that it lists images without mentioning side effects, limitations (e.g., only static DOM images), or whether it awaits page load. It is minimal and lacks behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one sentence plus a terse args list, with no extraneous information. It is front-loaded and every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema (which likely details the returned list of images), the description adequately covers the tool's purpose and basic usage. For a simple tool with one optional parameter, it is sufficiently complete, though session requirements could be clearer.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although schema description coverage is 0% (no parameter descriptions in schema), the description adds only 'Browser session ID' for session_id, which is already implied by the schema title. It does not explain its optional nature or default behavior, adding marginal value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'list' and the resource 'images on the current page', with specific details about URLs and alt text. It distinguishes itself from sibling tools like browser_snapshot (screenshot) and browser_vision (AI analysis) as a simple data extraction tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly suggests using this tool when image URLs and alt text are needed from the current page, providing no explicit guidance on when to use alternatives like browser_vision. The context is clear enough for a simple list tool but lacks comparative or exclusionary statements.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_get_network_logsA
Get network request logs from the current browser session.
Returns captured HTTP requests with URL, method, status code, headers, resource type, and timing. Useful for discovering hidden APIs, debugging failed requests, and analyzing page load performance.
Args: session_id: Browser session ID url_filter: Filter by URL pattern (e.g., "api", "json", ".js") method: Filter by HTTP method (e.g., "GET", "POST") status: Filter by status code (e.g., "200", "4xx", "404") resource_type: Filter by resource type (e.g., "xhr", "fetch", "document")
| Name | Required | Description | Default |
|---|---|---|---|
| method | No | ||
| status | No | ||
| session_id | No | default | |
| url_filter | No | ||
| resource_type | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must fully disclose behavior. It describes the return data but does not clarify whether logs persist, if the action is read-only, or if sessions must be active. Some operational details are missing, making it adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: a one-line summary, a bullet-like list of returned fields, and a clear parameter list. No extraneous information, and the most important content appears first.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has five optional parameters, detailed documentation, and an output schema. The description covers the main return types and parameter uses, but could clarify how filters interact (e.g., AND logic) or whether url_filter supports regex. Overall, it is nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite 0% schema description coverage, the description includes detailed parameter explanations with examples (e.g., url_filter: 'api', method: 'GET'). This adds significant meaning beyond the bare schema, fully compensating for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves network request logs from a browser session, specifying the exact data returned (URL, method, status, headers, etc.). This distinguishes it from sibling tools like browser_get_images or browser_get_response_body.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context on when to use the tool (discovering APIs, debugging, performance analysis) but does not explicitly state when not to use it or contrast with alternatives. It is clear but lacks exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_get_response_bodyA
Get the full details of a specific network request, including response body.
Use browser_get_network_logs first to find request IDs, then call this tool to see the complete request/response including body content.
Args: request_id: The request ID from browser_get_network_logs (e.g., "39C8D9...") session_id: Browser session ID
| Name | Required | Description | Default |
|---|---|---|---|
| request_id | Yes | ||
| session_id | No | default |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the operation (get details including body) but does not mention any behavioral traits like potential size of response, performance implications, or error handling. The presence of an output schema mitigates some need for return value description, but additional transparency would be beneficial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (47 words) and well-structured: a one-sentence purpose statement, a usage workflow sentence, and then argument descriptions. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and the presence of an output schema, the description provides essential context. It does not cover error cases or prerequisites beyond the workflow, but it is sufficient for an agent to correctly invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Though schema coverage is 0%, the description adds meaning to both parameters: request_id is explained as 'The request ID from browser_get_network_logs' with an example, and session_id is described as 'Browser session ID'. This compensates for the sparse schema titles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get the full details of a specific network request, including response body.' It uses a specific verb and resource, and distinguishes from sibling tools like browser_get_network_logs (which lists requests) and browser_intercept_request (which modifies requests).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states to use browser_get_network_logs first to find request IDs, then call this tool. This provides a clear workflow and prerequisites. No when-not-to guidance is needed given the narrow scope.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_intercept_requestA
Intercept, block, or mock network requests matching a URL pattern.
Use this to:
Block requests (e.g., block ads, tracking scripts)
Mock API responses (return custom JSON)
Test error handling (simulate network failures)
Args: url_pattern: URL pattern to match (e.g., "/api/*", "/analytics/*") action: "block" to abort matching requests, "mock" to return custom response response_body: JSON string for mock responses (only used when action="mock") session_id: Browser session ID
| Name | Required | Description | Default |
|---|---|---|---|
| action | No | block | |
| session_id | No | default | |
| url_pattern | Yes | ||
| response_body | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It explains the actions ('block' aborts, 'mock' returns custom response) but does not disclose important behavioral details like persistence of intercepts, scope (per-session or global), or how to revert them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (about 5 lines), uses bullet points for use cases and parameter list, and front-loads the purpose. Every sentence adds value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity and the existence of an output schema (which handles return values), the description covers essential aspects. However, it omits details about cleaning up intercepts or session-level behavior, which could be important for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, but the description thoroughly explains all four parameters: url_pattern (URL pattern), action (block/mock), response_body (for mock), and session_id. It adds meaningful semantic context beyond the schema's titles and defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool intercepts, blocks, or mocks network requests, listing specific use cases like blocking ads or mocking API responses. This distinguishes it from sibling tools that handle browsing actions like navigation or clicking.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes a 'Use this to' section with bullet points for three explicit scenarios. It provides clear guidance on when to use, though it does not mention when not to use or suggest alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_list_stepsA
列出当前 session 缓冲区里已留痕的页面操作步骤。
每次调 browser_navigate/click/type/press/scroll/back 都会自动留痕。 用这个 tool 看看刚才干了哪些步骤,再决定导出哪些(配合 browser_export_steps 的 from_step 参数)。
Returns: 步骤列表,每行一个步骤:编号 + action + role+name + value
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes that steps are automatically recorded by other actions and specifies the return format (number, action, role+name, value). No annotations are provided, so the description sufficiently covers behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences, each adding value: purpose, usage context, and return format. No unnecessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with no parameters; the description fully explains its function and output format. An output schema exists but is not needed given the clarity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, and the description clarifies the tool's purpose without needing parameter details. The schema coverage is 100% with zero parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists recorded page operation steps, explaining what actions trigger recording. It distinguishes from sibling tools like browser_export_steps.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly advises when to use the tool: to view steps before exporting, and mentions collaboration with browser_export_steps' from_step parameter.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_pressB
Press a keyboard key.
Args: key: Key to press (e.g., "Enter", "Tab", "Escape", "ArrowDown", "Control+a", "Meta+a") session_id: Browser session ID
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | ||
| session_id | No | default |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the basic behavior (press a key) and gives examples of keys like 'Control+a' implying modifier support. However, it does not describe whether the key release is simulated, what happens if no element is focused, or if any side effects occur.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with a clear one-sentence purpose followed by argument documentation. It avoids fluff but could benefit from slightly more context without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations and minimal description, the tool lacks a complete picture for an agent. The presence of an output schema reduces the need to document return values, but missing usage guidelines and behavioral details make it only moderately complete for a simple action.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite 0% schema description coverage, the description adds meaning by providing concrete examples for the 'key' parameter (e.g., 'Enter', 'Control+a') and clarifies the 'session_id' parameter. This helps the agent understand valid inputs beyond the plain schema titles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Press a keyboard key' with specific verb and resource. It distinguishes from sibling tools like browser_type (types strings) and browser_click (clicks elements) by specifying a distinct action for keyboard keys.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives (e.g., browser_type for text input, browser_click for mouse clicks). The description does not mention prerequisites or context such as needing an active element.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_scrollA
Scroll the page up or down.
Args: direction: "up" or "down" pixels: Number of pixels to scroll (default: 500) session_id: Browser session ID
| Name | Required | Description | Default |
|---|---|---|---|
| pixels | No | ||
| direction | Yes | ||
| session_id | No | default |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits such as whether scrolling is instant, smooth, or if it waits for completion. It also does not state if it is non-destructive or safe, leaving the agent without important behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, using a single sentence for purpose and a bullet-like list for arguments. It is front-loaded and every sentence adds value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple scroll action, the description is minimally adequate. However, it does not mention behavior when reaching page bounds, whether it returns a result, or any side effects. Given the existence of an output schema, this is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, so the description must explain each parameter. It does so for direction ('up' or 'down'), pixels (number of pixels, default 500), and session_id (browser session ID). This adds meaning beyond the schema, though it could be improved by noting valid ranges or constraints for pixels.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Scroll the page up or down,' specifying the verb and resource. It distinguishes from sibling tools like browser_navigate, browser_click, etc., which perform different actions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for scrolling the page but provides no explicit when-to-use or when-not-to-use guidance. No alternatives are mentioned, but the sibling tools make it clear this is for scrolling only.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_snapshotA
Get a text snapshot of the current page's accessibility tree.
Returns interactive elements with ref IDs (like @e1, @e2) for use with browser_click and browser_type.
Args: session_id: Browser session ID full: If true, return full page content. If false (default), return only interactive elements (compact view).
| Name | Required | Description | Default |
|---|---|---|---|
| full | No | ||
| session_id | No | default |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Lacking annotations, the description carries the full transparency burden. It explains the output format (ref IDs) and the effect of the 'full' parameter, but does not mention side effects, rate limits, or if the operation is read-only. The behavior is mostly foreseeable given the 'snapshot' nature.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: a one-line purpose, a sentence about the output, and a bullet-like explanation of parameters. Every sentence adds value with no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with two parameters and an output schema, the description covers the essential aspects. It could optionally mention error scenarios (e.g., invalid session_id) or the exact format of the returned snapshot, but it is sufficient for correct usage in most contexts.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, so the description fully compensates by explaining both parameters: session_id as the browser session ID and full with clear true/false behavior. This adds meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves a text snapshot of the accessibility tree, specifying the exact resource and verb. It distinguishes itself from sibling tools like browser_vision by focusing on text-based interaction and providing ref IDs for use with browser_click and browser_type.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains that the output ref IDs are for use with browser_click and browser_type, giving a clear usage context. However, it does not explicitly compare with alternatives or state when not to use this tool, such as when a visual snapshot is needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_typeA
Type text into an input field identified by its ref ID.
Clears the field first, then types the new text.
Args: ref: Element reference like "@e3" from the snapshot text: Text to type into the field session_id: Browser session ID
| Name | Required | Description | Default |
|---|---|---|---|
| ref | Yes | ||
| text | Yes | ||
| session_id | No | default |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the full burden. It discloses that the field is cleared before typing, which is a key behavior. However, it does not mention whether it waits for element interactivity, simulates keyboard events, or other relevant traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with only three sentences and a clean Args section. Every sentence adds value, and the structure is easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and the presence of an output schema, the description covers the essential behavior (typing text with prior clearing) and parameter details. It could mention the typing mechanism or response handling, but it is largely sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description explains all three parameters: ref (as element reference from snapshot), text (text to type), and session_id (browser session ID). This adds significant meaning beyond the schema's bare titles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Type text into an input field' and specifies the resource by 'ref ID'. This distinguishes it from sibling tools like browser_click or browser_press, as it is explicitly for typing text.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions 'Clears the field first, then types the new text', which gives implicit guidance on when to use (when you want to replace existing text) and implies a difference from other tools. However, it lacks explicit exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_visionA
Take a screenshot of the current page.
Use this when you need to see what the page looks like visually — CAPTCHAs, complex layouts, or when the text snapshot is not enough.
Args: session_id: Browser session ID full_page: If true, capture the full page (not just viewport)
| Name | Required | Description | Default |
|---|---|---|---|
| full_page | No | ||
| session_id | No | default |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description captures read-only behavior and explains parameter effect (full page vs viewport). Could mention session requirement but adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences plus bullet-pointed args; purpose stated first, no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers when to use, parameters, and effect; output schema exists so return format not required. Sufficient for a simple screenshot tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but description explains session_id and full_page meaning, adding context beyond default titles and values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states 'Take a screenshot' and specifies use cases (CAPTCHAs, complex layouts, when text snapshot not enough), clearly distinguishing from sibling browser_snapshot.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells when to use (visual inspection) and implies when not (if text snapshot suffices), providing clear context and alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
15 tool updates
v0.1.0- First observed
browser_back - First observed
browser_click - First observed
browser_console - First observed
browser_export_steps - First observed
browser_get_images - First observed
browser_get_network_logs - First observed
browser_get_response_body - First observed
browser_intercept_request - First observed
browser_list_steps - First observed
browser_navigate - First observed
browser_press - First observed
browser_scroll - First observed
browser_snapshot - First observed
browser_type - First observed
browser_vision
TDQS
Scored across 15 tools
Each tool has a unique and clear purpose: navigate, click, type, scroll, press keys, snapshot, console, images, network logs, intercept, export steps, list steps, and vision. No two tools overlap in function.
All tools follow the consistent pattern 'browser_verb[_noun]' in snake_case (e.g., browser_navigate, browser_get_network_logs). No mixing of conventions.
15 tools cover the core browser automation domain without being excessive. The count is well-scoped for navigation, interaction, debugging, and recording.
The tool surface covers navigation, DOM interaction, snapshot, screenshot, console, network logging, request interception, and step recording/exporting. No obvious gaps for standard browser automation tasks.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Live browser debugging for AI assistants — DOM, console, network via MCP.
Stealth web browser for agents: search, fetch, click, download and type in persistent MCP sessions.
Scrape, crawl and search the web for AI agents via MCP.
MCP server for visual regression testing: triage a PR's UI diffs from your coding agent.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceEnables browser automation through the MCP protocol, allowing AI agents to control a real browser using accessibility snapshots and natural language commands.-
- AlicenseAqualityDmaintenanceAn MCP server providing AI agents with a stealth Chromium browser that uses hybrid accessibility-object-model and set-of-mark vision for token-lean snapshots and reliable action via ref ids.13601Apache 2.0
- FlicenseNot gradedqualityCmaintenanceMCP server that wraps agent-browser to let LLMs control a real browser, providing tools for navigation, interaction, reading page content, accessibility snapshots, screenshots, and session management.1-
- FlicenseNot gradedqualityBmaintenanceMCP server that enables AI agents to control Chrome via DevTools CDP and accessibility trees, providing 21 tools for browser automation including tab management, navigation, interactions, and page capture.-
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/huaka1/browser-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server