关于 Yab, Yet Another Browser
Yab, Yet Another Browser 是一款 Mac WebKit 浏览器,让 Agent 使用已登录的标签页、网页和浏览器操作。其 MCP 服务可在本地使用现有 Cookie 和审批设置,同时不向 Agent 暴露已保存的密码。
主要功能
- 01打开并控制浏览器标签页
- 02以文本或快照读取网页
- 03点击、输入并填写表单
- 04使用现有登录状态和 Cookie
- 05敏感操作需经审批
适用场景
- 01在已登录的浏览器中阅读网页
- 02使用已保存的个人资料填写表单
- 03在审批控制下执行浏览器操作
- 04将浏览任务委派给 Mac
MCP 相关
MCP 服务通过 stdio 将客户端通信转交给 Yab,并提供其浏览器工具。远程模式可通过 stdio 为另一台电脑上的助手桥接 JSON-RPC。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
69收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| tab | string | 是 | 标签页 ID,由 `open` 或 `tabs` 提供 |
详细介绍
yab-mcp
Yab(Yet Another Browser)为 Claude Code、Codex、Cursor 及任何 MCP 客户端提供的 MCP 服务。
Yab(Yet Another Browser)是一款适用于 Mac 的免费 WebKit 浏览器。借助此服务,任何 Agent 都能在你的 Mac 上使用一个真实浏览器:就是你已登录的那个浏览器。你的 Agent 会在你的标签页旁边打开自己的标签页,以文本形式读取网页,点击、输入并填写表单,使用的是你的登录信息、Cookie 和 IP。无需云端浏览器、调试端口或配置 Chrome,而且完全免费。点击“发送”“付款”“删除”等按钮时,操作会等待你在 Yab 中的卡片上确认,除非你在 Yab 的设置中选择了“绕过”:确认权由浏览器掌握,而非模型。保存的密码由 Yab 填入,绝不会显示给 Agent。Agent 的标签页位于屏幕外的窗口中,只有在你要求时才会显示在前台。Yab 关闭时,首次调用会在后台打开它,不显示窗口或 Dock 图标;闲置半小时后会自动退出。yab serve 会让它以这种方式持续运行。
远程助手(0.2.0 预览版)
在助手自己的电脑上运行 npx yab-mcp login --client dots。
当 Yab 的连接流程提供 nonce 时,使用该值添加 --nonce。
命令会打印代码并立即返回;用户在 Yab 中允许连接后,后台进程会保存连接。
Mac 上的 Yab 会在“设置”>“AI”>“助手”中显示八位代码。
用户在此处允许连接后,选择由谁来执行任务:
- 直接控制浏览器: 将助手的 MCP 服务配置为使用命令
npx,参数为["-y", "yab-mcp", "--remote"]。助手会使用自己的模型/账户,自行调用open、snapshot、click、type等工具。--remote通过 stdio 桥接 JSON-RPC;它不接受自然语言提示词,也不会启动 Yab 模型运行。 调用taskMCP 工具仍会委派任务。 - 委派任务:
npx yab-mcp task "Find a table for Friday"会启动一个独立 Agent,使用 Mac 上 Yab 中为“任务”选择的模型。ChatGPT(通过 Codex) 会消耗用户的 ChatGPT 额度;Claude 则会使用用户的 Claude 计划。 如果你打算使用该计划(包括从仅限 shell 的机器人调用),请选择此模式。 命令会打印会话 ID 并返回;运行npx yab-mcp status SESSION查看 下一次更新;Mac 重新连接后,运行npx yab-mcp status查看最新任务。 重复查询,直到显示已完成。
两种模式都会保留助手已有的账户访问权限和审批设置。
连接令牌保存在 ~/.config/yab-mcp/auth.json(权限模式为 0600),或保存在
YAB_MCP_AUTH_FILE 指定的路径中。当主目录为只读时(部分机器人电脑上会如此),
令牌会保存在当前文件夹中以下第一个可写位置:/workspace/shared/.yab-mcp/、
/workspace/.yab-mcp/ 和 .yab-mcp/。如果电脑终止了等待用户点击“允许”的后台进程,
下一次调用 task、status 或 --remote 时会完成连接。
YAB_MCP_URL 用于选择测试服务;生产环境使用 https://yab-sync.21st.workers.dev。
直接运行 npx yab-mcp 会启动本地应用的 MCP 服务。
要求
- 配备 macOS 15.4 或更高版本的 Mac。
- 免费的 Yab:下载。Yab 会自动更新。
- 在 Yab 中允许 Agent:设置 › AI › Agent › 允许 Agent 使用 Yab。在此之前,每次调用都会提示这一点。
- Node.js 18 或更高版本,用于运行
npx。客户端也可以不通过 Node 直接运行 Yab:参见无需 Node。
Chrome 是你的主浏览器?Yab 仍可作为 Agent 使用的浏览器,通常会保持关闭状态。运行 yab import chrome,并在 Yab 中确认后,即可将 Chrome 的登录信息导入 Yab,让 Agent 少遇到一些登录页面。
已经在使用 Yab?“设置” › “开发者”可一键将 Yab 添加到 Claude Code 和 Codex;对于其他客户端,“复制配置”会提供相应的 JSON。无需使用此软件包。
安装
Claude Code
该插件包含工具和 Yab 的技能:
/plugin marketplace add yetanotherbrowser/yab-mcp
/plugin install yab@yab-mcp
在 Shell 中运行:claude plugin marketplace add yetanotherbrowser/yab-mcp,然后运行 claude plugin install yab@yab-mcp。
仅安装工具:
claude mcp add --scope user yab-browser -- npx -y yab-mcp
如果你已在 Yab 的 Settings › Developers 中将 Yab 添加到 Claude Code,请跳过此步骤:否则会出现重复的工具。
Codex
插件、工具和技能:
codex plugin marketplace add yetanotherbrowser/yab-mcp
codex plugin add yab@yab-mcp
或者,仅将工具添加到 ~/.codex/config.toml:
[mcp_servers.yab-browser]
command = "npx"
args = ["-y", "yab-mcp"]
tool_timeout_sec = 900
default_tools_approval_mode = "approve"
tool_timeout_sec 允许调用等待最长 15 分钟,以便 Yab 向你提问;该插件保留 Codex 默认的 5 分钟。default_tools_approval_mode 可避免 Codex 在每次调用 Yab 工具前都询问;不过,在发送、付款和删除前,Yab 仍会征求你的同意。如果也希望 Codex 询问,请省略此项。
Cursor
或者将其添加到 ~/.cursor/mcp.json:
{
"mcpServers": {
"yab-browser": {
"command": "npx",
"args": ["-y", "yab-mcp"]
}
}
}
VS Code
code --add-mcp '{"name":"yab-browser","command":"npx","args":["-y","yab-mcp"]}'
或者添加到 .vscode/mcp.json:
{
"servers": {
"yab-browser": {
"type": "stdio",
"command": "npx",
"args": ["-y", "yab-mcp"]
}
}
}
Windsurf(Devin Desktop)
在 ~/.config/devin/mcp_config.json 中配置(较旧的 Windsurf 版本使用:~/.codeium/windsurf/mcp_config.json):
{
"mcpServers": {
"yab-browser": {
"command": "npx",
"args": ["-y", "yab-mcp"]
}
}
}
Claude Desktop
从 Releases 下载 yab-mcp-<version>.mcpb 并打开:Claude Desktop 会将其安装为扩展。或者将以下内容添加到 ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"yab-browser": {
"command": "npx",
"args": ["-y", "yab-mcp"]
}
}
}
其他客户端
使用相同的 mcpServers 条目:命令为 npx,参数为 -y yab-mcp,通过 stdio 通信。
不使用 Node
让客户端直接指向应用。这是 Yab 的 Copy Config 提供的配置:
{
"mcpServers": {
"yab-browser": {
"command": "/Applications/yab.app/Contents/MacOS/yab",
"args": ["mcp"],
"env": { "YAB_CLI": "1" }
}
}
}
yab-mcp 的工作方式
- 它会查找 Yab:如果设置了
YAB_APP,则优先使用;否则使用yab命令运行的应用(~/.local/bin/yab),然后查找/Applications和~/Applications中的yab.app,最后使用 Spotlight(mdfind,bundle id 为dev.serafim.fast)。 - 它会在
YAB_CLI=1环境变量下运行yab.app/Contents/MacOS/yab mcp。客户端直接与 Yab 通信:stdin 和 stdout 会直接传递,信号也会转发,退出代码会返回。 - 如果找不到 Yab,或当前系统不是 Mac,它会改为运行一个简短的内置服务。该服务会根据快照列出 Yab 的工具,并在每次调用时说明如何获取 Yab。
它没有依赖,也不会自行发出网络请求。运行 npx yab-mcp --help 可查看它在哪里找到了 Yab。
工具
这些工具来自 Yab 的实际 tools/list,由 scripts/snapshot.mjs 生成。实际运行的应用才是最终依据:较新的版本可能会列出更多工具。
Yab 0.0.18 列出了 69 个工具。部分工具只有在启用其所需功能后才会显示,具体情况已注明。
| 工具 | 功能 |
|---|---|
devtools_comments | 读取已检查且非私密标签页中,用户撰写的元素评论。 |
devtools_console | 读取已检查且非私密标签页中记录的 Console 消息。 |
devtools_network | 读取标签页 Developer Tools 记录的已清理请求元数据。 |
devtools_trace | 读取 WebKit Performance 录制中的事件名称、持续时间和嵌套关系。 |
devtools_styles | 从 Developer Tools 读取当前选中元素匹配的样式和计算后的样式。 |
native_context | 读取 Yab 当前的设置、空间、标签页、邮件帐户、权限及此任务的原生操作。 |
native_actions | 列出原生 Yab 操作及其严格的参数架构、targetKind、撤销支持和权限要求。 |
native_apply | 执行用户明确要求的原生 Yab 操作:设置、空间、标签页、页面字体或连接 Gmail。 |
native_operation | 按 operationId 读取此任务的原生操作,或等待变更,最多等待指定秒数(0 到 10)。 |
native_undo | 按 changeId 撤销此任务的一项原生变更(或撤销最近一项可撤销的变更)。 |
tabs | 列出用户的网页浏览器 Yab 中打开的标签页,包括用户和 Agent 的标签页。 |
open | 在 Yab(用户的浏览器)中打开一个网页(URL),在新的 Agent 标签页中登录用户的网站,并显示在用户的标签页旁边。 |
spaces | 列出用户的空间:由一组标签页组成,其中有些以其他身份登录,并使用各自的 Cookie。 |
navigate | 将 Agent 标签页转到某个 URL,或返回、前进或重新加载。 |
snapshot | 以带有 ref id 的无障碍树形式读取浏览器标签页中的网页。 |
click | 按 ref 点击元素,就像真实鼠标点击一样。 |
type | 按 ref 替换字段中的文本(输入框、文本区域、编辑器);不提供 ref 时,则在当前焦点所在位置输入。 |
choose | 按选项的值或标签选择 <select> 中的选项。 |
press | 在当前焦点元素上按下按键,发送真实键盘事件。 |
hover | 将指针停留在元素上,就像鼠标操作一样;悬停时打开的菜单也会打开。 |
drag | 用鼠标拖动元素:拖到另一个元素上(to 为其 ref;被拖动的元素会落在它之前),或按 dx、dy 像素拖动。 |
dialog | 回答网页弹出的 alert、confirm 或 prompt:选择接受(OK)或不接受(Cancel),并为 prompt 输入文本。 |
scroll | 按 dy 像素滚动页面,或滚动 ref 所指元素周围的区域(列表会标记 scrolls);负数表示向上滚动。 |
run | 运行 JavaScript,通过相同工具操作标签页,并在一次调用中执行多个步骤。 |
text | 读取标签页中所有可见文本,用于阅读文章和结果。 |
screenshot | 截取标签页当前画面;当 snapshot 信息不足时使用。 |
wait | 等待标签页加载完成,或直到其文本包含 for。 |
eval | 在 Agent 标签页中运行 JavaScript(与网页自身的脚本隔离,但使用相同 DOM),并返回结果。 |
close | 关闭 Agent 标签页。 |
show | 将标签页置于用户面前,成为用户的标签页之一。 |
memory_search | 搜索从以往任务中了解到的用户信息,包括用户身份、帐户和网站、联系人及项目。 |
memory_read | 完整读取一页记忆:USER(用户身份)、MEMORY(工作方式)、TAXONOMY。 |
profile | 用户用于填写表单的个人资料:姓名、头衔、公司、职位、所在地、linkedin、x、github、网站、telegram。 |
form_answers | 用户在网页表单中填写的答案;表单提交后,不会保留问题内容。 |
remember | 保存信息,供之后的任务使用。 |
history | 用户的浏览历史。 |
watch | 关注某个讨论串中某人的回复:在 days 指定的天数内,每两小时检查一次。 |
suggest | 在新标签页字段下方以精简行的形式,将需要用户处理的内容交给用户。 |
boosts | 列出已保存的网站 boost 及其网站、权限和状态。 |
boost_read | 修改已保存的 boost 或此任务的试用版本之前,读取其文件。 |
skills | Yab 的技能:Agent 使用特定网站(Gmail、GitHub、LinkedIn、Amazon 等)的方法,每项占一行。 |
skill | 按名称完整读取一项技能。 |
handoff | 请用户接管标签页、登录、通过验证码或输入代码,并等待用户表示已完成。 |
ask | 请用户选择:提出一个问题并提供最多四个选项(用户也可以自行填写),显示在标签页底部。 |
sign_in | 使用 Yab 为该网站保存的密码在此标签页登录(可能会先询问用户)。 |
autofill | 使用 Yab 为用户保存的信息填写此标签页中的表单。 |
upload | 将此 Mac 上的文件提供给网页(可能会先询问用户)。 |
download | 下载文件:点击 ref(下载链接或按钮),或使用标签页的 Cookie 获取 url。 |
pdf | 将标签页中的网页保存为 PDF,存放在任务文件夹中;返回文件路径。 |
fetch | 使用用户的 Cookie 读取 URL,无需标签页。 |
mail_triage | 已由 yab 在此 Mac 上整理的用户邮件。连接 Yab 中的 Gmail 帐户后列出(Settings › Mail)。 |
mail_search | 搜索用户所有邮件,不限时间。连接 Yab 中的 Gmail 帐户后列出(Settings › Mail)。 |
mail_read | 以文本形式读取用户邮件的一个讨论串,按时间从旧到新排列,并附上标签名称和每封邮件所带的文件。连接 Yab 中的 Gmail 帐户后列出(Settings › Mail)。 |
mail_file | 读取用户邮件讨论串中所带文件的文字内容。连接 Yab 中的 Gmail 帐户后列出(Settings › Mail)。 |
mail_draft | 在讨论串中撰写回复(thread)、转发讨论串中的最后一封邮件(thread, forward: true, to),或撰写新邮件。连接 Yab 中的 Gmail 帐户后列出(Settings › Mail)。 |
mail_send | 仅当用户明确要求发送这封邮件时,发送 yab 邮件页面中的邮件。连接 Yab 中的 Gmail 帐户后列出(Settings › Mail)。 |
mail_act | 像用户在 yab 邮件页面中那样整理邮件讨论串。连接 Yab 中的 Gmail 帐户后列出(Settings › Mail)。 |
mail_labels | 用户 Gmail 中的自定义标签及标签列表。连接 Yab 中的 Gmail 帐户后列出(Settings › Mail)。 |
mail_recall | 在此 Mac 上按邮件内容和用词搜索用户过去 5 年的所有邮件。启用 Agent 搜索所有邮件的权限后列出(Settings › Mail)。 |
mail_code | 从用户的 Gmail 中读取该标签页所属网站最近 minutes 分钟内发给用户的一次性验证码(默认值为 10)。启用 Yab 从 Gmail 读取登录验证码的权限后列出(Settings › Autofill)。 |
messages | 用户的 Messages(iMessage 和短信):不指定聊天时,列出用户的聊天,按最近时间排序,并显示每个聊天的最后一条消息。启用 Agent 使用 Messages 的权限后列出(Settings › AI › Agents)。 |
send_message | 通过 Messages 向电话号码或地址发送消息。启用 Agent 使用 Messages 的权限后列出(Settings › AI › Agents)。 |
messages_code | 读取用户 Messages 中最新的一次性验证码。启用 Agent 使用 Messages 的权限后列出(Settings › AI › Agents)。 |
name | 为此任务命名:任务拥有多个标签页后,这些标签页会归入用户标签页列表中的一个文件夹。 |
task | 将整个浏览器任务交给 Yab 自行运行的 Agent(Claude Code 或 Codex),并等待其答复。 |
task_status | 查看任务当前进度,以及任务完成后的答复。 |
task_stop | 停止任务。 |
task_steer | 立即调整正在运行的任务:任务会在下一步读取此指示。 |
task_queue | 为任务安排后续工作,待当前工作完成后执行。 |
Mac 上有哪些数据会离开
- 此软件包:不会。它会读取几个文件,并让 Spotlight 查找 Yab,然后启动它。
npx会从 npm 注册表下载此软件包。 - 你的 Agent 与 Yab 之间:没有数据会离开 Mac。
yab mcp通过 Yab 文件夹中的套接字与浏览器通信,只有你的 macOS 用户可以打开该文件夹。 - 发往你的 Agent 所用的大模型:你的 Agent 使用这些工具读取的内容,包括网页,以及在你允许的情况下读取的邮件和消息,都会发送给你的 Agent 所用大模型的提供商(Anthropic、OpenAI 或其他提供商),并使用你的账号;这与你提供给它的其他任何内容一样。
task工具会让 Yab 使用你自己的方案运行 Claude Code 或 Codex,因此同样适用。 - Yab 本身:它会访问 yetanotherbrowser.com 检查更新,使用随机安装 ID 统计活跃天数(在 Settings › About › Share daily activity 中可关闭),并且仅在你同意时发送崩溃报告。同步默认关闭;开启后会进行端到端加密。Yab 无需账号,我们的服务器不会看到你的浏览记录。邮件会由 Google 直接发送到你的 Mac。
- 网站会收到浏览器通常会发送的内容。
隐私政策
Yab 的隐私政策见 yetanotherbrowser.com/privacy。简而言之:
- 收集:yab-mcp 不收集任何内容。Yab 会在你的 Mac 上保存标签页、历史记录、密码和邮件。
- 使用与存储:Yab 保存的内容会留在你的用户文件夹和 macOS 钥匙串中。如果你开启同步,同步只会存储端到端加密的记录。
- 共享:Yab 无人会获取你的网页或邮件。Agent 读取的内容会发送给该 Agent 的提供商,如上所述。
- 保留:Mac 上的数据会一直保留,直到你删除。同步数据会一直保留,直到你在 Settings › Sync 中删除。Yab 自身的更新和每日活跃记录不会保存 IP 地址;网站主机的请求日志最多保留一天。
- 联系方式:[email protected],或在 Yab 中选择 Send Feedback。
故障排除
- “Yab 中的 Agent 已关闭”:开启 Settings › AI › Agents › Let agents use Yab。
- “此 Mac 上未安装 Yab”:安装 Yab,打开一次,然后重启 MCP 服务(在 Claude Code 中:
/mcp)。 - “当前运行的 Yab 版本较旧”:退出 Yab,然后重新打开,使运行中的应用与磁盘上的版本一致。
- Yab 安装在其他位置:在服务的环境中设置
YAB_APP=/path/to/yab.app。
开发
npm test # node --test, no dependencies
npm run snapshot # new src/tools.json and README tool list from the Yab on this Mac
npm run pack:mcpb # dist/yab-mcp-<version>.mcpb for Claude Desktop
npm run links # the Cursor and VS Code install links
npm run snapshot 只会向 Yab 发送 initialize 和 tools/list,绝不会调用工具。发布和目录列表见:PUBLISHING.md。
许可证
MIT,详见 LICENSE。Yab 本身免费但不开源;此仓库是其面向 Agent 的开源部分。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。