← 返回目录
S

Safari MCP

社区
让 AI 驱动你已登录的原生 Safari。
分类
浏览器自动化 第 20 / 32
Stars
★ 219 非常热门
传输方式
stdio(本地进程)
运行环境
Node.js 18+
凭据
无需凭据
许可证
MIT
最近提交
工具数
97
50FMRS · D

这是一个 MIT 许可、面向 macOS 稳定版 Safari 的社区维护 MCP 服务器,提供 97 个浏览器自动化工具和 stdio 传输。其主要优势是复用真实 Safari 会话、后台运行以及覆盖存储、网络、控制台、数据提取和 WebKit 验证;主要限制是仅支持 macOS,并需要多项系统权限。

最强项 · 文档质量 13/20 最弱项 · 安全与权限 6/20

可靠性
8/20
安全与权限
6/20
维护活跃度
12/20
文档质量
13/20
安装易用性
11/20
查看各项评分依据
可靠性 8/20
清单和stdio Node运行方式使基本启动路径看似可行,且工具分类较完整;但仅提供README和manifest,没有可核验的源代码、测试或CI覆盖,且描述中的80、97和96工具数量不一致,无法确认握手、工具行为和错误处理,因此扣分。
安全与权限 6/20
文档披露了本地stdio/localhost通信和所需macOS权限,未显示遥测或远程连接;但工具可执行任意JavaScript、读取和写入Cookie/存储/剪贴板、上传文件并注入原生事件,还会操作真实登录会话,缺少细粒度权限、危险操作确认和数据边界说明,因此只能给中低分。
维护活跃度 12/20
仓库未归档,标示版本2.14.0、MIT许可证、15个开放问题,并声称每周多次发布;但这些主要来自README/元数据,未提供可核验的提交、发布历史、依赖更新或安全响应渠道,故不能按持续维护满分计。
文档质量 13/20
README提供了安装、多个客户端配置、工具分类、权限、架构、扩展安装和故障排查,并披露macOS限制及扩展依赖;但存在工具数量和能力表述不一致,缺少逐工具参数、失败边界、成本/数据流的充分证据,且关键声明未由测试证据支持,因此扣分。
安装易用性 11/20
npx safari-mcp和多种客户端示例使基础配置较清楚;但仅支持macOS,需要Node、Safari开发者设置、Automation权限,截图和原生输入还需额外权限,扩展构建涉及Xcode、签名和反复启用未签名扩展,整体仍较脆弱。

静态评测 · 未实际运行收录于 2026-07-30

查看 FMRS 评分方法 →

选型与风险

能访问什么读取本地文件写入 / 删除本地文件执行命令或代码访问网络控制浏览器

适合谁

  • 使用 macOS 和 Safari 的 AI 编程代理
  • 需要复用真实 Safari 登录状态、Cookie 和会话的自动化
  • 希望浏览器在后台运行并减少额外 CPU 使用的用户
  • 需要 Safari、WebKit 或 iOS 页面验证的开发者

不适合谁

  • 非 macOS 环境
  • 需要 Chrome 专属调试、Lighthouse 或性能追踪的任务
  • 需要隔离、无登录状态的干净 WebDriver 会话的任务
  • 不愿授予 Safari 自动化、屏幕录制或辅助功能权限的用户

所需权限

  • Safari 中允许来自 Apple Events 的 JavaScript
  • macOS 自动化权限:运行 MCP 的 Terminal、VS Code 或其他父进程访问 Safari
  • 屏幕录制权限:用于截图
  • 辅助功能权限:用于 safari_native_* 工具和 safari_save_pdf

风险与副作用

  • 工具可操作真实已登录 Safari,因此可能访问账户、Cookie、剪贴板和页面数据
  • safari_evaluate 及相关脚本工具可在当前页面执行任意 JavaScript
  • 导出或导入存储可能包含会话信息
  • 操作系统级输入工具可能对非前台 Safari 产生真实点击、键盘和悬停事件
  • 自动化金融、社交或其他敏感网站时应先确认目标页面和操作

安装接入

准备工作

运行环境:Node.js 18+

其他可选配置项(3 个)
SAFARI_MCP_HTTP 可选 设为 1 时以共享 HTTP 守护进程模式运行(而非每客户端一个 stdio 进程),供多个代理会话共用;可选。
SAFARI_MCP_HTTP_PORT 可选 HTTP 模式监听的端口,默认示例为 9225;仅在启用 SAFARI_MCP_HTTP 时需要;可选。
SAFARI_PROFILE 可选 可选的配置档隔离;不设置时会话直接绑定你普通的 Safari 窗口、Cookie 和登录状态。

要求 macOS、Node.js 18+,并在 Safari 设置中启用“显示网页开发者功能”和“允许来自 Apple Events 的 JavaScript”。运行 npx safari-mcp;也可使用 npm install -g safari-mcp 或 Homebrew 安装。将提供的 stdio 配置加入 MCP 客户端。扩展是可选的,但构建扩展需要从源码克隆项目、安装 Xcode、构建并签名,然后在 Safari 中启用 Safari MCP Bridge;每次 Safari 重启后可能需要重新启用“允许未签名扩展”。

.mcp.json
{"mcpServers":{"safari":{"command":"npx","args":["safari-mcp"]}}}

以 Claude Code 为例。其他客户端的配置文件位置或字段可能不同(如 VS Code 使用 servers 字段),可用下方配置生成器转换。

.vscode/mcp.json
{
  "servers": {
    "safari": {
      "command": "npx",
      "args": [
        "safari-mcp"
      ]
    }
  }
}

写入项目的 .vscode/mcp.json(VS Code 使用 servers 字段)。

Terminal
claude mcp add safari -- npx safari-mcp

在终端运行;先把 <…> 占位符换成你自己的值。

验证是否装好

启动 `npx safari-mcp` 后,客户端工具列表中应出现 safari_navigate、safari_snapshot 等以 safari_ 开头的工具;调用 safari_doctor 可诊断 macOS 权限链,或让代理执行 safari_list_tabs 返回真实标签页即证明连接成功。

常见排障

  1. 遇到 AppleScript 错误时,启用 Safari 的“允许来自 Apple Events 的 JavaScript”
  2. 未授权发送 Apple Events 时,为启动 MCP 的 IDE 或 Terminal 授予访问 Safari 的自动化权限
  3. 截图为空时,为 Terminal 或 VS Code 授予屏幕录制权限
  4. 找不到标签页时先调用 safari_list_tabs 刷新索引
  5. safari_native_* 成功但页面无反应时,将 safari-helper 加入辅助功能并启用
  6. npm 更新后权限失效时,重新运行来源提供的 osascript 权限触发命令
  7. 若需要现代 SPA、封闭 Shadow DOM 或严格 CSP 支持,检查可选扩展是否已安装并连接

试试这样问

连接成功后,可以直接对 AI 助手这样说:

  • 用 Safari 打开 https://github.com 并告诉我页面标题和主要内容
  • 对当前页面的登录表单截图,并用 accessibility snapshot 列出所有可交互元素
  • 在 example.com 的搜索框里填写关键词并提交,然后读取结果页面
  • 列出当前 Safari 里所有打开的标签页的标题和 URL

工具能力 97

safari_navigate 写入
导航到 URL。
safari_go_back 写入
返回上一页。
safari_go_forward 写入
前进到下一页。
safari_reload 写入
重新加载页面,可选强制刷新。
safari_read_page 只读
读取页面标题、URL 和文本内容。
safari_get_source 只读
获取完整 HTML 源码。
safari_navigate_and_read 写入
导航并读取页面。
safari_click 写入
按 CSS 选择器、可见文本或坐标点击。
展开其余 89 个工具
safari_double_click 写入
双击元素。
safari_right_click 写入
右键点击元素。
safari_hover 写入
将鼠标悬停在元素上。
safari_click_and_wait 写入
点击并等待导航。
safari_click_and_read 写入
点击后返回更新后的页面。
safari_fill 写入
填写输入框,兼容 React、Vue 和 Angular。
safari_clear_field 写入
清空输入框。
safari_select_option 写入
选择下拉选项。
safari_fill_form 写入
批量填写多个字段。
safari_fill_and_submit 写入
填写表单并提交。
safari_type_text 写入
输入真实按键。
safari_press_key 写入
按键,可使用修饰键。
safari_react_select_set 写入
通过 React fiber 设置 react-select v5 的值。
safari_react_select_list_options 只读
列出 react-select v5 下拉框选项。
safari_replace_editor 写入
替换代码编辑器中的全部内容。
safari_verify_state 只读
验证编辑器的框架级状态。
safari_screenshot 只读
截取视口或整页 PNG。
safari_screenshot_element 只读
截取指定元素。
safari_save_pdf 写入
将页面导出为 PDF。
safari_scroll 写入
按像素上下滚动。
safari_scroll_to 写入
滚动到指定位置。
safari_scroll_to_element 写入
平滑滚动到元素。
safari_list_tabs 只读
列出所有标签页。
safari_new_tab 写入
在后台打开新标签页。
safari_close_tab 写入
关闭标签页。
safari_switch_tab 写入
按索引切换标签页。
safari_wait_for_new_tab 只读
等待新标签页并自动切换。
safari_wait_for 只读
等待元素、文本或 URL 变化。
safari_wait 只读
等待指定毫秒数。
safari_evaluate 写入
执行 JavaScript 并返回结果。
safari_eval_file 写入
执行文件中的 JavaScript。
safari_get_element 只读
获取元素标签、矩形、属性和可见性。
safari_query_all 只读
查找所有匹配元素。
safari_get_computed_style 只读
获取计算后的 CSS 样式。
safari_detect_forms 只读
自动检测页面表单及字段选择器。
safari_accessibility_snapshot 只读
获取完整无障碍树。
safari_snapshot 只读
获取带交互元素引用 ID 的无障碍树。
safari_drag 写入
在元素或坐标之间拖拽。
safari_upload_file 写入
通过 JavaScript DataTransfer 上传文件。
safari_paste_image 写入
将图像粘贴到编辑器。
safari_handle_dialog 写入
处理 alert、confirm 和 prompt。
safari_resize 写入
调整浏览器窗口大小。
safari_emulate 写入
模拟 iPhone、iPad、Pixel 或 Galaxy。
safari_reset_emulation 写入
恢复桌面模式。
safari_get_cookies 只读
获取所有 Cookie。
safari_set_cookie 写入
设置带完整选项的 Cookie。
safari_delete_cookies 破坏性
删除一个或全部 Cookie。
safari_local_storage 只读
读取 localStorage。
safari_set_local_storage 写入
写入 localStorage。
safari_delete_local_storage 破坏性
删除或清空 localStorage。
safari_session_storage 只读
读取 sessionStorage。
safari_set_session_storage 写入
写入 sessionStorage。
safari_delete_session_storage 破坏性
删除或清空 sessionStorage。
safari_export_storage 只读
将全部存储导出为 JSON。
safari_import_storage 写入
从 JSON 导入存储状态。
safari_clipboard_read 只读
读取剪贴板文本。
safari_clipboard_write 写入
写入文本到剪贴板。
safari_network 只读
通过 Performance API 快速读取网络请求。
safari_start_network_capture 写入
开始捕获 fetch 和 XHR 请求。
safari_network_details 只读
获取已捕获请求的标头和计时信息。
safari_clear_network 破坏性
清除已捕获请求。
safari_mock_route 写入
模拟网络响应并拦截 fetch 或 XHR。
safari_clear_mocks 破坏性
移除所有网络模拟。
safari_start_console 写入
开始捕获控制台消息。
safari_get_console 只读
获取已捕获的控制台消息。
safari_clear_console 破坏性
清除控制台消息。
safari_console_filter 只读
按级别筛选控制台消息。
safari_performance_metrics 只读
获取导航计时、Web Vitals 和内存指标。
safari_throttle_network 写入
模拟慢速网络或离线状态。
safari_extract_tables 只读
将表格提取为结构化 JSON。
safari_extract_meta 只读
提取 OG、Twitter、JSON-LD 和 canonical 元数据。
safari_extract_images 只读
提取图像及尺寸和加载信息。
safari_extract_links 只读
提取链接及 rel、外部和 nofollow 信息。
safari_override_geolocation 写入
覆盖浏览器地理位置。
safari_list_indexed_dbs 只读
列出 IndexedDB 数据库。
safari_get_indexed_db 只读
读取 IndexedDB 记录。
safari_css_coverage 只读
查找未使用的 CSS 规则。
safari_analyze_page 只读
在一次调用中分析页面。
safari_doctor 只读
诊断 macOS 权限和守护进程链。
safari_reload_extension 写入
热重载 Safari MCP Bridge 扩展。
safari_run_script 写入
在一次调用中运行多个操作。
safari_native_click 写入
使用操作系统级鼠标点击。
safari_native_hover 写入
使用操作系统级光标悬停。
safari_native_type 写入
通过真实粘贴流程插入文本。
safari_native_keyboard 写入
向 Safari 发送操作系统级按键。
safari_inspect_viewport 只读
检查 iOS Safari viewport 元标签。
safari_safe_area_insets 只读
读取安全区域 inset 和 viewport-fit 使用情况。
safari_check_pwa 只读
检查 iOS 添加到主屏幕和 PWA 准备情况。
safari_webkit_compat 只读
使用 CSS.supports 检查 Safari WebKit 兼容性。

使用场景

自动浏览和读取网页
在已登录的 Gmail、GitHub、Slack 或其他网站中执行操作
填写 React、Vue、Angular 表单及代码编辑器
截屏、导出 PDF、提取表格和页面元数据
测试网络、控制台、存储、性能和 WebKit 兼容性

支持客户端

Claude Code
Claude Desktop
Cursor
Windsurf部分支持
VS Code部分支持
Cline部分支持
Continue部分支持
Goose部分支持
LM Studio部分支持
Zed部分支持

依据项目文档列出,未经本站实测。

详细介绍

Safari MCP 是面向 macOS 的 Safari 浏览器自动化 MCP 服务器,通过 AppleScript 和可选的 Safari 扩展提供 97 个工具。它使用本机 WebKit,复用现有 Safari 的登录状态、Cookie 和会话,并支持后台运行。服务器通过 Node.js npm 包以 stdio 传输运行。

同类可选方案

源版本 2712d78ffbee 数据同步于 2026-10-19 查看 FMRS 评分方法