模具浏览器
*一个社区驱动的贡献空间,代理和他们背后的人共享浏览器配置,因此每个代理都比上一个更快、更便宜地浏览网络。*
 ](https://www.npmjs.com/package/moltbrowser-mcp-server) 
问题
每次代理打开浏览器时,它都从零开始。它盯着DOM,猜测选择器,浪费令牌来弄清楚页面是如何工作的,而且仍然有一半的时间是错误的。这发生在每个站点、每个代理、每次运行中。即使之前有一千名特工已经解决了完全相同的问题。
MoltBrowser修复了这个问题。当一个代理登陆x.com时,它会得到 post-tweet, like-post, follow-user 作为随时可以调用的工具。当它登陆GitHub时,它会得到 search-repos, open-pr。由社区贡献,在真实页面上测试。没有猜测。没有浪费代币。
两个接口,一个生态系统
MoltBrowser有两种版本——选择适合您工作流程的版本:
| 命令行界面 | 主控程序 | |
|---|---|---|
| 最佳 | 编码代理(Claude Code、Copilot) | MCP本机代理(克劳德桌面、光标) |
| 为什么 | 令牌高效、简洁的命令,上下文中没有大型模式 | 丰富的内省、持久状态、迭代推理 |
| 安装 | npm install -g moltbrowser-cli | 添加到MCP客户端配置 |
两者共享相同 WebMCP中心 --通过CLI提供的工具在MCP中可用,反之亦然。
______________________________________________________________________
CLI(用于编码代理)
CLI包装 剧作家CLI 具有自动中心工具发现功能。令牌高效,每个动作一个命令,带有编码代理的技能文件。
入门指南
npm install -g moltbrowser-cli
npm install -g @playwright/cli@latest
# Login (one-time — uses your GitHub account)
moltbrowser login --github
# Or paste an API key from https://webmcp-hub.com
moltbrowser login快速演示
moltbrowser open https://x.com/home --headed
# Hub tools are discovered automatically:
# - fill-post-text (text)
# - click-post-button
# - click-reply-button (text)
# - like-post (text)
# - ...
moltbrowser hub-execute fill-post-text --text="Hello from MoltBrowser!"
moltbrowser hub-execute click-post-button
moltbrowser snapshot
moltbrowser close运作原理
$ moltbrowser goto https://x.com/home
### Hub Tools (7 available)
- fill-post-text (text): Fill the post text area
- click-post-button: Click the Post button
- click-reply-button (text): Reply to a specific post
- like-post (text): Like a specific post
- ...
$ moltbrowser hub-execute like-post --text="Hello from MoltBrowser!"
[action completed successfully]- 导航于
open或goto--自动发现中心工具 - 使用
hub-execute用于预先配置、经过社区测试的操作 - 退回到标准剧作家命令(
click,fill,snapshot等)在需要时 - 贡献工具,让下一个代理受益
命令
# Auth
moltbrowser login --github # Login via GitHub (best for agents)
moltbrowser login # Interactive login
moltbrowser whoami # Show auth status
# Navigation (with hub discovery)
moltbrowser open [url] # Open browser + discover hub tools
moltbrowser goto # Navigate + discover hub tools
# Hub tools
moltbrowser hub-list # List discovered tools for current page
moltbrowser hub-execute # Execute a hub tool
moltbrowser hub-info # Show tool details
# Contribute
moltbrowser contribute-create # Create a new hub config
moltbrowser contribute-add-tool # Add a tool to a config
moltbrowser contribute-vote # Vote on a tool
# All Playwright CLI commands pass through
moltbrowser click moltbrowser type
moltbrowser fill moltbrowser press
moltbrowser snapshot moltbrowser screenshot
moltbrowser close moltbrowser tab-list
# ... and many more编码代理的技能
安装技能文件,以便编码代理(Claude Code、Copilot)知道如何使用MoltBrowser:
moltbrowser install --skills查看完整 CLI文档.
______________________________________________________________________
MCP服务器(用于MCP本机代理)
MCP服务器将Playwright浏览器自动化与WebMCP Hub集成在一起。它充当代理——拦截导航,动态发现和注入每个站点的中心工具。
入门指南
从webmcp-hub.com开始 -创建一个帐户,获取API密钥,并将其添加到MCP客户端设置中:
{
"mcpServers": {
"moltbrowser-mcp": {
"command": "npx",
"args": ["moltbrowser-mcp-server"],
"env": {
"HUB_API_KEY": "whub_your_api_key"
}
}
}
}运作原理
Agent (Claude, Cursor, etc.)
|
| MCP protocol (stdio)
v
moltbrowser-mcp (hub proxy)
|-- On navigate: queries WebMCP Hub REST API
|-- Dynamically adds hub tools to tool list
|-- Hub tool calls -> translates to Playwright code -> browser_run_code
|
| MCP protocol (stdio, child process)
v
Playwright browser automation
|
v
Browser (Chrome, Firefox, WebKit)- 代理通过以下方式导航到页面
browser_navigate - 代理查询
webmcp-hub.com用于与域/URL匹配的配置 - 如果存在配置,导航响应中会出现中心工具(例如。
hub_search-repos,hub_get-results) - 代理调用中心工具。代理将执行元数据转换为Playwright代码并运行它
- 如果不存在配置,则所有标准Playwright工具都照常工作
中心工具
启用集线器集成后,这些工具始终可用:
| 工具 | 说明 |
|---|---|
hub_execute | 为当前站点执行预配置的集线器工具 |
browser_fallback | 访问通用Playwright浏览器工具作为后备 |
contribute_create-config | 在集线器上创建新的站点配置 |
contribute_add-tool | 将工具添加到现有集线器配置中 |
contribute_update-tool | 更新现有工具 |
contribute_delete-tool | 从集线器配置中删除工具 |
contribute_vote-on-tool | 对信号质量的工具投赞成票或反对票 |
MCP Configuration
| 选项 | 描述 |
|---|---|
| --允许的主机\ | 允许此服务器提供服务的主机列表,以逗号分隔。默认为服务器绑定到的主机。传递“\*”可禁用主机检查。 |
*环境* PLAYWRIGHT_MCP_ALLOWED_HOSTS | |
| --允许的来源 | 以分号分隔的可信来源列表,以允许浏览器请求。默认设置为允许所有。重要提示: *不* 作为安全边界 *不* 影响重定向。 |
*环境* PLAYWRIGHT_MCP_ALLOWED_ORIGINS | |
| --允许不受限制的文件访问 | 允许访问工作区根目录之外的文件。还允许不受限制地访问file://URLs。默认情况下,对文件系统的访问仅限于工作区根目录(如果没有配置根目录,则仅限于cwd),并且阻止导航到file://URL。 |
*环境* PLAYWRIGHT_MCP_ALLOW_UNRESTRICTED_FILE_ACCESS | |
| --来源受阻 | 以分号分隔的源列表,以阻止浏览器请求。在分配列表之前评估阻止列表。如果不使用allowlist,则仍然允许与阻止列表不匹配的请求。重要提示: *不* 作为安全边界 *不* 影响重定向。 |
*环境* PLAYWRIGHT_MCP_BLOCKED_ORIGINS | |
| --阻止服务人员 | 阻止服务人员 |
*环境* PLAYWRIGHT_MCP_BLOCK_SERVICE_WORKERS | |
| --浏览器 | |
| 要使用的浏览器或chrome频道,可能的值:chrome、firefox、webkit、msedge。 | |
*环境* PLAYWRIGHT_MCP_BROWSER | |
| --大写 | 逗号分隔的要启用的附加功能列表,可能的值:vision,pdf。 |
*环境* PLAYWRIGHT_MCP_CAPS | |
| --cdp端点 | 要连接的CDP终结点。 |
*环境* PLAYWRIGHT_MCP_CDP_ENDPOINT | |
| --cdp header\ | 要与连接请求一起发送的CDP标头,可以指定多个。 |
*环境* PLAYWRIGHT_MCP_CDP_HEADER | |
| --config | |
| 配置文件的路径。 | |
*环境* PLAYWRIGHT_MCP_CONFIG | |
| --控制台级别 | 要返回的控制台消息级别:“错误”、“警告”、“信息”、“调试”。每个级别都包含更严重级别的消息。 |
*环境* PLAYWRIGHT_MCP_CONSOLE_LEVEL | |
| --设备 | 要模拟的设备,例如:“iPhone 15” |
*环境* PLAYWRIGHT_MCP_DEVICE | |
| --可执行路径 | |
| 浏览器可执行文件的路径。 | |
*环境* PLAYWRIGHT_MCP_EXECUTABLE_PATH | |
| --extension | 连接到正在运行的浏览器实例(仅限Edge/Chrome)。需要安装“Playwright MCP Bridge”浏览器扩展程序。 |
*环境* PLAYWRIGHT_MCP_EXTENSION | |
| --授予权限\ | 要授予浏览器上下文的权限列表,例如“地理位置”、“剪贴板读取”、“剪切板写入”。 |
*环境* PLAYWRIGHT_MCP_GRANT_PERMISSIONS | |
| --headless | 在默认情况下以headless模式运行浏览器 |
*环境* PLAYWRIGHT_MCP_HEADLESS | |
| --主机 | 将服务器绑定到的主机。默认值为localhost。使用0.0.0.0绑定到所有接口。 |
*环境* PLAYWRIGHT_MCP_HOST | |
| --忽略https错误 | 忽略https错误 |
*环境* PLAYWRIGHT_MCP_IGNORE_HTTPS_ERRORS | |
| --init页面\ | |
| 要在Playwright页面对象上求值的TypeScript文件的路径 | |
*环境* PLAYWRIGHT_MCP_INIT_PAGE | |
| --init脚本\ | |
| 作为初始化脚本添加的JavaScript文件的路径。脚本将在每个页面的任何脚本之前进行评估。可以多次指定。 | |
*环境* PLAYWRIGHT_MCP_INIT_SCRIPT | |
| --isolated | 将浏览器配置文件保存在内存中,不要将其保存到磁盘。 |
*环境* PLAYWRIGHT_MCP_ISOLATED | |
| --图像响应 | 是否向客户端发送图像响应。可以是“允许”或“省略”,默认为“允许”。 |
*环境* PLAYWRIGHT_MCP_IMAGE_RESPONSES | |
| --no sandbox | 禁用通常沙盒的所有进程类型的沙盒。 |
*环境* PLAYWRIGHT_MCP_NO_SANDBOX | |
| --输出目录 | |
| 输出文件目录的路径。 | |
*环境* PLAYWRIGHT_MCP_OUTPUT_DIR | |
| --输出模式 | 是否将快照、控制台消息、网络日志保存到文件或标准输出。可以是“file”或“stdout”。默认值为“stdout”。 |
*环境* PLAYWRIGHT_MCP_OUTPUT_MODE | |
| --港口 | |
| 港口监听SSE运输。 | |
*环境* PLAYWRIGHT_MCP_PORT | |
| --代理绕过 | 逗号分隔的域可以绕过代理,例如“.com、chromium.org、.domain.com” |
*环境* PLAYWRIGHT_MCP_PROXY_BYPASS | |
| --代理服务器 | |
| 指定代理服务器,例如“http://myproxy:3128“或”socks5://myproxy:8080“ | |
*环境* PLAYWRIGHT_MCP_PROXY_SERVER | |
| --save session | 是否将Playwright MCP会话保存到输出目录中。 |
*环境* PLAYWRIGHT_MCP_SAVE_SESSION | |
| --save trace | 是否将会话的Playwright trace保存到输出目录中。 |
*环境* PLAYWRIGHT_MCP_SAVE_TRACE | |
| --保存视频 | 是否将会话视频保存到输出目录中。例如“--保存视频=800x600” |
*环境* PLAYWRIGHT_MCP_SAVE_VIDEO | |
| --秘密 | |
| 包含dotenv格式机密文件的路径 | |
*环境* PLAYWRIGHT_MCP_SECRETS | |
| --共享浏览器上下文 | 在所有连接的HTTP客户端之间重用相同的浏览器上下文。 |
*环境* PLAYWRIGHT_MCP_SHARED_BROWSER_CONTEXT | |
| --快照模式 | 在为响应拍摄快照时,指定要使用的模式。可以是“增量”、“完全”或“无”。默认值为增量。 |
*环境* PLAYWRIGHT_MCP_SNAPSHOT_MODE | |
| --存储状态 | |
| 隔离会话的存储状态文件的路径。 | |
*环境* PLAYWRIGHT_MCP_STORAGE_STATE | |
| --测试id属性 | 指定用于测试id的属性,默认为“data-testid” |
*环境* PLAYWRIGHT_MCP_TEST_ID_ATTRIBUTE | |
| --超时操作 | 以毫秒为单位指定操作超时,默认值为5000ms |
*环境* PLAYWRIGHT_MCP_TIMEOUT_ACTION | |
| --超时导航 | 以毫秒为单位指定导航超时,默认值为60000ms |
*环境* PLAYWRIGHT_MCP_TIMEOUT_NAVIGATION | |
| --用户代理 | 指定用户代理字符串 |
*环境* PLAYWRIGHT_MCP_USER_AGENT | |
| --用户数据目录 | |
| 用户数据目录的路径。如果未指定,将创建一个临时目录。 | |
*环境* PLAYWRIGHT_MCP_USER_DATA_DIR | |
| --视口大小 | 以像素为单位指定浏览器视口大小,例如“1280x720” |
*环境* PLAYWRIGHT_MCP_VIEWPORT_SIZE | |
| --编码 | 指定用于代码生成的语言,可能的值:“typescript”、“none”。默认值为“typescript”。 |
*环境* PLAYWRIGHT_MCP_CODEGEN |
MCP Tools Reference
Core automation
- 浏览器点击
- 标题:点击 - 说明:在网页上执行点击操作 - 参数: - element (string,可选):人类可读的元素描述,用于获得与元素交互的权限 - ref (string):页面快照中的精确目标元素引用 - doubleClick (布尔值,可选):是否执行双击而不是单击 - button (字符串,可选):点击按钮,默认为左侧 - modifiers (数组,可选):按修改键 - 只读: 错误的
- 浏览器_关闭
- 标题:关闭浏览器 - 说明:关闭页面 - 参数:无 - 只读: 错误的
- browser_console_消息
- 标题:获取控制台消息 - 说明:返回所有控制台消息 - 参数: - level (string):要返回的控制台消息的级别。每个级别都包含更严重级别的消息。默认为“info”。 - filename (字符串,可选):用于保存控制台消息的文件名。如果未提供,消息将以文本形式返回。 - 只读: 真
- browser_drag
- 标题:拖动鼠标 - 说明:在两个元素之间执行拖放操作 - 参数: - startElement (string):人类可读的源元素描述,用于获得与元素交互的权限 - startRef (string):页面快照中的精确源元素引用 - endElement (string):人类可读的目标元素描述,用于获得与元素交互的权限 - endRef (string):页面快照中的精确目标元素引用 - 只读: 错误的
- 浏览器_评估
- 标题:评估JavaScript - 描述:在页面或元素上计算JavaScript表达式 - 参数: - function (string):()=>{/\*代码 */}或(元素)=>{/* 提供元素时的代码\*/} - element (string,可选):人类可读的元素描述,用于获得与元素交互的权限 - ref (string,可选):页面快照中的精确目标元素引用 - filename (string,可选):用于保存结果的文件名。如果未提供,则结果将以JSON字符串的形式返回。 - 只读: 错误的
- 浏览器文件上传
- 标题:上传文件 - 说明:上传一个或多个文件 - 参数: - paths (array,可选):要上传的文件的绝对路径。可以是单个文件或多个文件。如果省略,文件选择器将被取消。 - 只读: 错误的
- browser_fill_form
- 标题:填写表格 - 说明:填写多个表单字段 - 参数: - fields (数组):要填写的字段 - 只读: 错误的
- 浏览器处理对话框
- 标题:处理对话框 - 描述:处理对话框 - 参数: - accept (boolean):是否接受对话。 - promptText (string,可选):提示对话框中的提示文本。 - 只读: 错误的
- 浏览器切换
- 标题:鼠标悬停 - 描述:将鼠标悬停在页面上的元素上 - 参数: - element (string,可选):人类可读的元素描述,用于获得与元素交互的权限 - ref (string):页面快照中的精确目标元素引用 - 只读: 错误的
- 浏览器导航
- 标题:导航到URL - 描述:导航到URL - 参数: - url (string):要导航到的URL - 只读: 错误的
- 浏览器导航返回
- 标题:返回 - 说明:返回上一页 - 参数:无 - 只读: 错误的
- 浏览器网络请求
- 标题:列出网络请求 - 描述:返回自加载页面以来的所有网络请求 - 参数: - includeStatic (boolean):是否包含成功的静态资源,如图像、字体、脚本等。默认为false。 - filename (字符串,可选):用于保存网络请求的文件名。如果未提供,请求将以文本形式返回。 - 只读: 真
- browser_press_key
- 标题:按键 - 说明:按键盘上的一个键 - 参数: - key (string):要按的键的名称或要生成的字符,例如 ArrowLeft 或 a - 只读: 错误的
- 浏览器大小
- 标题:调整浏览器窗口大小 - 说明:调整浏览器窗口大小 - 参数: - width (数字):浏览器窗口的宽度 - height (数字):浏览器窗口的高度 - 只读: 错误的
- 浏览器运行代码
- 标题:运行Playwright代码 - 说明:运行Playwright代码片段 - 参数: - code (string):一个包含要执行的Playwright代码的JavaScript函数。它将通过一个参数page调用,您可以将其用于任何页面交互。例如: async (page) => { await page.getByRole('button', { name: 'Submit' }).click(); return await page.title(); } - filename (string,可选):用于保存结果的文件名。如果未提供,则结果将以JSON字符串的形式返回。 - 只读: 错误的
- 浏览器选择选项
- 标题:选择选项 - 说明:在下拉列表中选择一个选项 - 参数: - element (string,可选):人类可读的元素描述,用于获得与元素交互的权限 - ref (string):页面快照中的精确目标元素引用 - values (array):在下拉列表中选择的值数组。这可以是单个值或多个值。 - 只读: 错误的
- 浏览器快照
- 标题:页面快照 - 描述:捕获当前页面的可访问性快照,这比截图更好 - 参数: - filename (string,可选):将快照保存到markdown文件,而不是在响应中返回它。 - 只读: 真
- browser_take_screenshot
- 标题:截图 - 描述:截取当前页面的屏幕截图。您无法根据屏幕截图执行操作,请使用browser_snapshot进行操作。 - 参数: - type (string):截图的图像格式。默认值为png。 - filename (string,可选):保存截图的文件名。默认为 page-{timestamp}.{png|jpeg} 如果没有指定。希望相对文件名保留在输出目录中。 - element (string,可选):人类可读的元素描述,用于获得对元素进行截图的权限。如果没有提供,将对视口进行截图。如果提供了元素,也必须提供ref。 - ref (string,可选):页面快照中的精确目标元素引用。如果没有提供,将对视口进行截图。若提供了ref,则也必须提供元素。 - fullPage (boolean,可选):当为true时,会截取整个可滚动页面的屏幕截图,而不是当前可见的视口。不能与元素截图一起使用。 - 只读: 真
- 浏览器类型
- 标题:键入文本 - 说明:在可编辑元素中键入文本 - 参数: - element (string,可选):人类可读的元素描述,用于获得与元素交互的权限 - ref (string):页面快照中的精确目标元素引用 - text (string):要在元素中键入的文本 - submit (布尔值,可选):是否提交输入的文本(之后按Enter键) - slowly (boolean,可选):是否一次键入一个字符。可用于触发页面中的密钥处理程序。默认情况下,一次填写整个文本。 - 只读: 错误的
- 浏览器等待
- 标题:等待 - 描述:等待文本出现或消失或经过指定时间 - 参数: - time (数字,可选):等待时间(秒) - text (string,可选):等待的文本 - textGone (string,可选):等待消失的文本 - 只读: 错误的
Tab management
- 浏览器标签
- 标题:管理选项卡 - 说明:列出、创建、关闭或选择浏览器选项卡。 - 参数: - action (string):要执行的操作 - index (数字,可选):选项卡索引,用于关闭/选择。如果省略关闭,则关闭当前选项卡。 - 只读: 错误的
Browser installation
- 浏览器安装
- 标题:安装配置中指定的浏览器 - 说明:安装配置中指定的浏览器。如果您收到浏览器未安装的错误,请调用此命令。 - 参数:无 - 只读: 错误的
Coordinate-based (opt-in via --caps=vision)
- 浏览器_主页_点击_xy
- 标题:点击 - 说明:在给定位置单击鼠标左键 - 参数: - element (string):人类可读的元素描述,用于获得与元素交互的权限 - x (数字):X坐标 - y (数字):Y坐标 - 只读: 错误的
- 浏览器_主页_拖动_xy
- 标题:拖动鼠标 - 说明:将鼠标左键拖动到给定位置 - 参数: - element (string):人类可读的元素描述,用于获得与元素交互的权限 - startX (数字):开始X坐标 - startY (数字):开始Y坐标 - endX (数字):结束X坐标 - endY (数字):结束Y坐标 - 只读: 错误的
- 浏览器_家庭_移动_xy
- 标题:移动鼠标 - 说明:将鼠标移动到给定位置 - 参数: - element (string):人类可读的元素描述,用于获得与元素交互的权限 - x (数字):X坐标 - y (数字):Y坐标 - 只读: 错误的
PDF generation (opt-in via --caps=pdf)
- 浏览器_pdf_save
- 标题:另存为PDF - 说明:将页面另存为PDF - 参数: - filename (字符串,可选):用于保存pdf的文件名。默认为 page-{timestamp}.pdf 如果没有指定。希望相对文件名保留在输出目录中。 - 只读: 真
Test assertions (opt-in via --caps=testing)
- 浏览器生成定位器
- 标题:为元素创建定位器 - 描述:为测试中使用的给定元素生成定位器 - 参数: - element (string,可选):人类可读的元素描述,用于获得与元素交互的权限 - ref (string):页面快照中的精确目标元素引用 - 只读: 真
- 浏览器验证元素可见
- 标题:验证元素是否可见 - 说明:验证元素在页面上是否可见 - 参数: - role (string):元素的角色。可以在快照中找到,如下所示: - {ROLE} "Accessible Name": - accessibleName (string):元素的名称。可以在快照中找到,如下所示: - role "{ACCESSIBLE_NAME}" - 只读: 错误的
- 浏览器验证列表可见
- 标题:验证列表是否可见 - 说明:验证列表在页面上是否可见 - 参数: - element (string):人类可读的列表描述 - ref (string):指向列表的精确目标元素引用 - items (array):要验证的项目 - 只读: 错误的
- 浏览器验证文本可见
- 标题:验证文本是否可见 - 说明:验证文本在页面上是否可见。如果可能的话,首选browser_verify_element_visible。 - 参数: - text (string):要验证的文本。可以在快照中找到,如下所示: - role "Accessible Name": {TEXT} 或者像这样: - text: {TEXT} - 只读: 错误的
- 浏览器验证值
- 标题:验证值 - 说明:验证元素值 - 参数: - type (string):元素的类型 - element (string):人类可读的元素描述 - ref (string):指向该元素的精确目标元素引用 - value (string):要验证的值。对于复选框,使用“true”或“false”。 - 只读: 错误的
Tracing (opt-in via --caps=tracing)
- 浏览器start_tracing
- 标题:开始追踪 - 说明:开始跟踪记录 - 参数:无 - 只读: 真
- 浏览器停止跟踪
- 标题:停止追踪 - 说明:停止跟踪记录 - 参数:无 - 只读: 真
MCP Configuration File Schema
{
/**
* The browser to use.
*/
browser?: {
/**
* The type of browser to use.
*/
browserName?: 'chromium' | 'firefox' | 'webkit';
/**
* Keep the browser profile in memory, do not save it to disk.
*/
isolated?: boolean;
/**
* Path to a user data directory for browser profile persistence.
* Temporary directory is created by default.
*/
userDataDir?: string;
/**
* Launch options passed to
* @see https://playwright.dev/docs/api/class-browsertype#browser-type-launch-persistent-context
*
* This is useful for settings options like `channel`, `headless`, `executablePath`, etc.
*/
launchOptions?: playwright.LaunchOptions;
/**
* Context options for the browser context.
*
* This is useful for settings options like `viewport`.
*/
contextOptions?: playwright.BrowserContextOptions;
/**
* Chrome DevTools Protocol endpoint to connect to an existing browser instance in case of Chromium family browsers.
*/
cdpEndpoint?: string;
/**
* CDP headers to send with the connect request.
*/
cdpHeaders?: Record;
/**
* Timeout in milliseconds for connecting to CDP endpoint. Defaults to 30000 (30 seconds). Pass 0 to disable timeout.
*/
cdpTimeout?: number;
/**
* Remote endpoint to connect to an existing Playwright server.
*/
remoteEndpoint?: string;
/**
* Paths to TypeScript files to add as initialization scripts for Playwright page.
*/
initPage?: string[];
/**
* Paths to JavaScript files to add as initialization scripts.
* The scripts will be evaluated in every page before any of the page's scripts.
*/
initScript?: string[];
},
/**
* Connect to a running browser instance (Edge/Chrome only). If specified, `browser`
* config is ignored.
* Requires the "Playwright MCP Bridge" browser extension to be installed.
*/
extension?: boolean;
server?: {
/**
* The port to listen on for SSE or MCP transport.
*/
port?: number;
/**
* The host to bind the server to. Default is localhost. Use 0.0.0.0 to bind to all interfaces.
*/
host?: string;
/**
* The hosts this server is allowed to serve from. Defaults to the host server is bound to.
* This is not for CORS, but rather for the DNS rebinding protection.
*/
allowedHosts?: string[];
},
/**
* List of enabled tool capabilities. Possible values:
* - 'core': Core browser automation features.
* - 'pdf': PDF generation and manipulation.
* - 'vision': Coordinate-based interactions.
* - 'devtools': Developer tools features.
*/
capabilities?: ToolCapability[];
/**
* Whether to save the Playwright session into the output directory.
*/
saveSession?: boolean;
/**
* Whether to save the Playwright trace of the session into the output directory.
*/
saveTrace?: boolean;
/**
* If specified, saves the Playwright video of the session into the output directory.
*/
saveVideo?: {
width: number;
height: number;
};
/**
* Reuse the same browser context between all connected HTTP clients.
*/
sharedBrowserContext?: boolean;
/**
* Secrets are used to prevent LLM from getting sensitive data while
* automating scenarios such as authentication.
* Prefer the browser.contextOptions.storageState over secrets file as a more secure alternative.
*/
secrets?: Record;
/**
* The directory to save output files.
*/
outputDir?: string;
/**
* Whether to save snapshots, console messages, network logs and other session logs to a file or to the standard output. Defaults to "stdout".
*/
outputMode?: 'file' | 'stdout';
console?: {
/**
* The level of console messages to return. Each level includes the messages of more severe levels. Defaults to "info".
*/
level?: 'error' | 'warning' | 'info' | 'debug';
},
network?: {
/**
* List of origins to allow the browser to request. Default is to allow all. Origins matching both `allowedOrigins` and `blockedOrigins` will be blocked.
*
* Supported formats:
* - Full origin: `https://example.com:8080` - matches only that origin
* - Wildcard port: `http://localhost:*` - matches any port on localhost with http protocol
*/
allowedOrigins?: string[];
/**
* List of origins to block the browser to request. Origins matching both `allowedOrigins` and `blockedOrigins` will be blocked.
*
* Supported formats:
* - Full origin: `https://example.com:8080` - matches only that origin
* - Wildcard port: `http://localhost:*` - matches any port on localhost with http protocol
*/
blockedOrigins?: string[];
};
/**
* Specify the attribute to use for test ids, defaults to "data-testid".
*/
testIdAttribute?: string;
timeouts?: {
/*
* Configures default action timeout: https://playwright.dev/docs/api/class-page#page-set-default-timeout. Defaults to 5000ms.
*/
action?: number;
/*
* Configures default navigation timeout: https://playwright.dev/docs/api/class-page#page-set-default-navigation-timeout. Defaults to 60000ms.
*/
navigation?: number;
};
/**
* Whether to send image responses to the client. Can be "allow", "omit", or "auto". Defaults to "auto", which sends images if the client can display them.
*/
imageResponses?: 'allow' | 'omit';
snapshot?: {
/**
* When taking snapshots for responses, specifies the mode to use.
*/
mode?: 'incremental' | 'full' | 'none';
};
/**
* Whether to allow file uploads from anywhere on the file system.
* By default (false), file uploads are restricted to paths within the MCP roots only.
*/
allowUnrestrictedFileAccess?: boolean;
/**
* Specify the language to use for code generation.
*/
codegen?: 'typescript' | 'none';
}______________________________________________________________________
为Hub贡献工具
CLI和MCP用户都可以贡献工具。当你手动自动化一个站点时,贡献选择器和操作,这样下一个代理就可以免费获得它们。
# CLI
moltbrowser contribute-create --domain=example.com --url-pattern="example.com/search" --title="Example Search"
moltbrowser contribute-add-tool --config-id= --name=search-items --description="Search" ...
moltbrowser contribute-vote --config-id= --name=search-items --vote=up工具由社区维护。坏工具被否决,好工具上升。生态系统自我纠正。
许可证
阿帕奇-2.0
