mcpField
S
Safari Devtools Mcp

Safari Devtools Mcp

本地服务
github.com/HayoDev浏览器自动化228 周前更新

关于 Safari Devtools Mcp

Safari DevTools MCP 是面向 macOS 编码 Agent 的 MCP 服务,可检查、调试和自动化操作运行中的 Safari。它结合 WebDriver 控制浏览器,并提供网络、DOM、CSS、存储和标签页检查能力。

主要功能

  1. 01控制台与网络检查
  2. 02带稳定 UID 的 DOM 快照
  3. 03CSS 样式与存储管理
  4. 04Safari 标签页与页面控制
  5. 05表单、键盘和指针自动化
  6. 06iOS Safari 就绪度检查

适用场景

  1. 01诊断页面错误和网络响应
  2. 02自动化 Safari 页面测试
  3. 03检查 CSS 与无障碍结构
  4. 04检查移动 Safari 兼容性

MCP 相关

它通过 stdio 向 MCP 客户端提供 Safari 调试和自动化工具及引导式提示词。客户端可借此检查和控制运行中的 Safari 会话。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"safari-devtools": {
"command": "npx",
"args": [
"-y",
"safari-devtools-mcp"
]
}
}
}
启动命令npx -y safari-devtools-mcp

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmsafari-devtools-mcp1.8.1

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Safari DevTools MCP

npm version npm downloads license node

safari-devtools-mcp 可让你的编码 Agent(例如 Claude、Cursor、Copilot 或 Gemini)控制和检查 macOS 上正在运行的 Safari 浏览器。它充当 Model-Context-Protocol(MCP)服务,让你的 AI 编码助手能够使用 Safari DevTools 进行调试、自动化和测试。

Chrome 开发者可以通过 Google 的 chrome-devtools-mcp 获得强大的 AI 调试能力。Safari 开发者也应该拥有同等的工具——本项目将同样的体验带到 Safari,并采用匹配的工具名称和参数架构,让你能够轻松切换浏览器。

更新日志 | 贡献指南

注意: 此服务会向 MCP 客户端公开浏览器内容(页面数据、控制台日志、网络流量)。会话处于活动状态时,请避免浏览敏感网站或输入凭据。

为什么选择 safari-devtools-mcp?

本项目使用 WebDriver 提供仅靠脚本无法实现的功能:

  • 捕获网络请求/响应正文 — 拦截 fetch 和 XHR 调用,获取完整的标头、负载和时间信息
  • 通过无障碍树生成 DOM 快照 — 使用页面重新渲染后仍然稳定的元素 UID,而非脆弱的 CSS 选择器
  • 检查 CSS 计算样式 — 读取任意元素的任意计算属性
  • 管理 Cookie 和存储 — 读取、写入和删除 Cookie、localStorage 及 sessionStorage
  • 元素级截图 — 捕获单个元素,而不仅仅是整个视口
  • 会话自动恢复 — 检测失效的 SafariDriver 会话并自动重新连接

主要功能

  • 浏览器调试:捕获控制台日志、检查网络请求并执行 JavaScript,同时获取堆栈跟踪以及完整的请求/响应详情。
  • 可靠的自动化:使用带有稳定 UID 的无障碍树快照进行点击、输入、填写表单、拖放和触发键盘快捷键。
  • 原生 macOS 集成:通过 AppleScript 管理标签页,包括列出、切换和控制多个窗口中的 Safari 标签页

要求

  • macOS(Safari 和 SafariDriver 仅适用于 Apple 平台)
  • Node.js 18+(推荐使用 22+)
  • Safari,并已启用远程自动化
Safari 设置
  1. 打开 Safari > 设置 > 高级 > 勾选 “显示网页开发者功能”
  2. 开发菜单 > 勾选 “允许远程自动化”
  3. 授权 SafariDriver:
    sudo safaridriver --enable
    

开始使用

标准 MCP 配置:

{
  "mcpServers": {
    "safari-devtools": {
      "command": "npx",
      "args": ["-y", "safari-devtools-mcp@latest"]
    }
  }
}
Claude Code
claude mcp add safari-devtools -- npx -y safari-devtools-mcp@latest

或者使用上方的标准配置,添加到项目的 .mcp.json 中。

Claude Desktop

将标准配置添加到 ~/Library/Application Support/Claude/claude_desktop_config.json。

Cursor

将标准配置添加到 Cursor 的 MCP 设置中。

VS Code

将标准配置添加到 .vscode/mcp.json。

Copilot CLI
copilot mcp add safari-devtools -- npx -y safari-devtools-mcp@latest
Gemini CLI
gemini mcp add safari-devtools -- npx -y safari-devtools-mcp@latest

或者将标准配置添加到 ~/.gemini/settings.json。

Gemini Code Assist

将标准配置添加到项目根目录下的 .gemini/settings.json 中。

JetBrains AI Assistant & Junie

将标准配置添加到项目根目录下的 .junie/mcp.json 中。

Raycast

在 Raycast 中打开“Install MCP Server”并填写:

  • 命令:npx
  • 参数:-y safari-devtools-mcp@latest

或者在打开命令前复制上方的标准配置 JSON,Raycast 会自动填充表单。

Visual Studio

将标准配置添加到解决方案根目录下的 .vs/mcp.json 中。

Warp

将标准配置添加到 Warp MCP 设置文件 ~/.warp/mcp.json 中。

从源代码构建
git clone https://github.com/HayoDev/safari-devtools-mcp.git
cd safari-devtools-mcp
npm install && npm run build

然后将 MCP 客户端指向构建后的入口点:

{
  "mcpServers": {
    "safari-devtools": {
      "command": "node",
      "args": [
        "/path/to/safari-devtools-mcp/build/src/bin/safari-devtools-mcp.js"
      ]
    }
  }
}
你的第一个提示词

访问 https://example.com,截取快照,并列出所有控制台错误。

精简模式

使用 --slim,通过缩短工具描述来减少 token 用量。适用于使用上下文受限的模型或进行长时间对话的场景:

{
  "mcpServers": {
    "safari-devtools": {
      "command": "npx",
      "args": ["-y", "safari-devtools-mcp@latest", "--slim"]
    }
  }
}

提示词(技能)

该服务通过 MCP 提示词提供引导式调试工作流。支持提示词的客户端(例如 Claude Desktop、Claude Code)可以按名称调用:

提示词描述
safari-devtools入门指南——工具概览、推荐工作流和 Safari 特定说明
a11y-debugging无障碍审计——检查 a11y 树、注入 axe-core、进行 WCAG 检查
safari-specific-debugging调试 WebKit 特有问题——CSS 前缀、JS 功能缺失、ITP/CORS 问题
performance-debugging性能分析——Navigation Timing、Core Web Vitals、资源瀑布图

工具(45)

调试
工具描述
list_console_messages列出控制台消息,可按级别(log、warn、error)筛选
get_console_message获取详细消息,包括堆栈跟踪和参数
clear_console清除所有已捕获的控制台消息
list_network_requests监控网络请求:Fetch、XHR 和资源加载
get_network_request获取完整的请求/响应详细信息,包括标头和正文
clear_network清除所有已捕获的网络请求
evaluate_script在浏览器上下文中执行 JavaScript 并返回结果
take_screenshot截取页面或特定元素的 PNG 屏幕截图
take_snapshot获取 DOM 的无障碍树快照,其中包含用于定位元素的稳定 UID
页面内容
工具描述
get_page_content获取页面标题、URL 和可见文本内容
get_html_source获取页面的完整 HTML 源代码
extract_links提取所有链接及其文本、href 和 rel 属性
extract_meta提取 meta 标签(og:、twitter:、description 等)
导航
工具描述
list_pages列出所有窗口中打开的 Safari 标签页
select_page切换到指定标签页
new_page打开新标签页并导航到指定 URL
close_page关闭标签页
navigate_page导航到指定 URL、返回、前进或重新加载
wait_for等待页面上出现指定文本
resize_page调整浏览器窗口大小
handle_dialog接受或关闭浏览器对话框(alert、confirm、prompt)
滚动
工具描述
scroll按指定距离向任意方向滚动页面
scroll_to_element根据元素的 UID 将其滚动到可见位置
CSS 检查
工具描述
get_computed_style根据元素的 UID 获取其计算后的 CSS 样式
Cookie 和存储
工具描述
get_cookies获取浏览器 Cookie,可按名称或域名筛选
set_cookie设置 Cookie,包括名称、值和可选属性
delete_cookie按名称删除 Cookie,或删除所有 Cookie
get_storage从 localStorage 或 sessionStorage 读取
set_storage向 localStorage 或 sessionStorage 写入键值对
delete_storage删除键,或清除 localStorage/sessionStorage 中的所有条目
输入自动化
工具描述
click根据快照中的 UID 点击元素
click_at点击指定的 x/y 坐标
right_click右键点击元素(打开上下文菜单)
select_option根据值或标签选择下拉菜单中的选项
hover将鼠标悬停在元素上
fill在输入框中键入内容,或从下拉菜单中选择选项
fill_form一次填写多个表单字段
type_text在当前聚焦的元素中输入文本
drag在元素或坐标之间拖放
press_key按下按键或组合键(例如 Meta+A、Enter)
upload_file通过文件输入框上传文件
iOS Safari 验证
工具描述
inspect_viewport_meta解析 viewport meta 标签,并根据 iOS 最佳实践验证(宽度、缩放、viewport-fit)
get_safe_area_insets读取 CSS safe-area-inset 值,并检查页面是否正确适配带刘海的设备
check_ios_web_app_readiness检查页面是否满足添加到主屏幕 / PWA 的要求(apple-touch-icon、manifest、启动屏幕、状态栏)
check_webkit_compatibility通过 CSS.supports(),对照当前 Safari 会话检查页面 CSS 兼容性

架构

MCP Client (Claude, Cursor, etc.)
    | stdio (MCP protocol)
    v
Safari DevTools MCP Server
    |
    v
+-------------------------------+
|  SafariDriver                 |
|  +-- Selenium WebDriver       | <-- Browser automation
|  +-- JS Injection             | <-- Console/Network capture
|  +-- AppleScript (osascript)  | <-- Native tab management
+-------------------------------+
    |
    v
Safari Browser

已知限制

  • 单一会话:Safari 一次只允许一个 WebDriver 会话。不支持同时运行多个实例。
  • 仅限 macOS:Safari 和 SafariDriver 仅适用于 Apple 系统,此 MCP 服务无法在 Linux 或 Windows 上运行。
  • 不支持无头模式:Safari 不支持无头运行。必须使用可见的浏览器窗口。
  • 控制台注入前的空缺:在注入捕获脚本之前记录的控制台消息不会被捕获。
  • 网络注入前的空缺:注入前发出的网络请求会通过 Performance API 补录,但详情有限(只有时间和大小,没有标头或状态码)。
  • 仅支持 PNG:Safari WebDriver 仅支持 PNG 截图,不支持 JPEG 或 WebP。无法捕获整页。
  • AppleScript 权限:标签页管理功能需要 macOS 辅助功能权限才能使用 osascript。

致谢

  • chrome-devtools-mcp,由 Google/ChromeDevTools 开发——本项目的灵感来源及其借鉴的接口标准。工具名称和架构有意保持兼容,因此你可以在 Chrome 和 Safari 之间无缝切换。
  • safari-mcp-server——我们在开发期间研究的 Safari MCP 集成先例。

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。