Safari浏览器自动化服务器

Safari MCP Server是一个用于通过Safari进行可视化网页访问的模型上下文协议服务器,提供截图、元素检查、交互工具等功能,适用于网页自动化测试和开发。

  • by axivo
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 axivo/mcp-safari

使用说明

Safari MCP服务器

用于通过Safari进行可视化web访问的MCP(模型上下文协议)服务器。

特性

  • 可视化Web访问:用于目视检查的视口截图
  • 完全身份验证状态:在用户的实际Safari会话上运行,并保留Cookie
  • 标签感知定位:操作以捕获的工作选项卡为目标,观察操作是否遵循用户的焦点
  • 视口滚动:像素数量或视口页面索引
  • 元件检查:标签、可见性、属性、任何CSS选择器的边界矩形
  • 交互工具:单击、键入、悬停、选择选项
  • 等待条件:用于显示、消失或呈现页面文本的选择器
  • 链接提取:锚链接为 { text, href } 对
  • 浏览历史:前后导航
  • 控制台错误捕获:页面加载期间和之后的两相注入

先决条件

  • macOS → 系统设置→ 桌面和Dock→ 视窗→ “打开文档时首选选项卡”选项必须设置为 总是
  • macOS → 系统设置→ 隐私和安全→ 屏幕和系统录音→ 必须启用终端应用程序
  • 狩猎旅行 → 设置→ 开发者→ 自动化→ 必须启用“允许来自Apple Events的JavaScript”选项

MCP服务器配置

添加 mcp.json 服务器配置:

{
  "mcpServers": {
    "safari": {
      "command": "npx",
      "args": ["-y", "@axivo/mcp-safari"],
      "env": {
        "SAFARI_WINDOW_HEIGHT": "1600"
      }
    }
  }
}

环境变量

所有变量都是可选的:

  • SAFARI_PAGE_TIMEOUT -页面加载和选择器等待超时,以毫秒为单位(默认值: 10000)
  • SAFARI_WINDOW_BOUNDS -浏览器窗口边距从左上角偏移,以像素为单位(默认值: 20)
  • SAFARI_WINDOW_HEIGHT -浏览器窗口高度(像素)(默认值: 1024)
  • SAFARI_WINDOW_WIDTH -浏览器窗口宽度(像素)(默认值: 1280)

提示示例

  • "打开Safari并使用 status 指南工具"
  • "导航至 example.com"
  • "搜索 example query"
  • "截取当前页面的屏幕截图"
  • "阅读页面内容,了解页面内容"
  • "点击“登录”按钮"
  • "在登录表单中键入我的电子邮件并提交"
  • "刷新页面以查看最新更改"
  • "返回上一页"
  • "在浏览器历史记录中向前导航两步"
  • "向下滚动500像素"
  • "滚动到本文的第3页"
  • "搜索“Claude AI”并点击第一个结果"
  • "列出所有打开的浏览器选项卡"
  • "打开一个新的浏览器选项卡,然后转到 example.com"
  • "切换到第一个浏览器选项卡"
  • "关闭第二个浏览器选项卡"
  • "点击提交按钮前检查一下"
  • "将鼠标悬停在“产品”菜单上"
  • "在国家下拉列表中选择“加拿大”"
  • "等待加载旋转器消失"
  • "阅读此页面上的所有链接"

[!注意]

“使用 status “工具”指令帮助克劳德暂停并处理 _meta.usage 与浏览器交互前的指南。

MCP工具

呼叫 status 首先在会话开始时获取运行时状态和完整的工具界面:

  • 行动工具 以捕获的工作选项卡为目标
  • 观察工具 瞄准前窗的当前选项卡
  1. click

    • 单击工作选项卡上的元素
    • 类型: act 工具
    • 可选输入:
      • key (string):要按的键(例如,Escape、ArrowRight、Enter、Tab)
      • selector (string):目标元素的CSS选择器
      • text (string):要匹配的可见文本或aria标签
      • wait (string):点击后等待的CSS选择器
      • x (数字):X坐标(像素)
      • y (数字):Y坐标(像素)
    • 返回:带有变化检测的结果
  2. close

    • 关闭工作选项卡
    • 类型: act 工具
  3. execute

    • 在工作选项卡中执行JavaScript
    • 类型: act 工具
    • 所需输入:
      • script (string):JavaScript代码
  4. hover

    • 发送悬停事件以显示悬停触发的UI
    • 类型: act 工具
    • 可选输入(需要一个):
      • selector (string):目标元素的CSS选择器
      • text (string):要匹配的可见文本
  5. inspect

    • 返回CSS选择器的元素元数据
    • 类型: observe 工具
    • 所需输入:
      • selector (string):目标元素的CSS选择器
    • 可选输入:
      • index (数字):前窗标签索引
    • 退货: { found, tag, text, visible, disabled, attributes, rect }
  6. navigate

    • 将工作选项卡导航到URL或浏览历史记录
    • 类型: act 工具
    • 可选输入(url 或 direction 必填):
      • direction (字符串: back 或 forward)
      • selector (string):加载后等待的CSS选择器
      • steps (数字,默认值:1):历史导航步骤
      • url (字符串):要导航到的URL
  7. open

    • 打开空白选项卡作为工作目标
    • 类型: act 工具
  8. read

    • 从选项卡获取页面标题、URL和文本或链接
    • 类型: observe 工具
    • 可选输入:
      • index (数字):前窗标签索引
      • mode (字符串: text 或 links,默认值: text)
      • selector (string):用于作用域提取的CSS选择器
  9. refresh

    • 刷新工作选项卡
    • 类型: act 工具
    • 可选输入:
      • hard (布尔值,默认值:false):绕过缓存
      • selector (string):重新加载后等待的CSS选择器
  10. screenshot

    • 捕获Safari窗口、元素、整页或屏幕
    • 类型: observe 工具
    • 可选输入:
      • display (数字):显示索引 screen 模式,基于1,默认为主显示
      • mode (字符串: element, page, screen, window,默认值: window):捕获模式
      • selector (string):CSS选择器 element 模式
      • settle (数字):用于 page 模式,每次滚动后等待内容稳定的毫秒数(默认值: 500).对于动态速度较慢的站点,调高;对于静态站点,调低。
      • share (布尔值,默认值: false):保存到磁盘并仅返回文件路径,而不是内联映像
    • 返回:内联base64图像 share 是 false,或 { path, width, height, mimeType, ... } 当 share 是 true.浏览器元数据 { innerHeight, scrollHeight, pages } 包含非-screen 模式。
  11. scroll

    • 按方向滚动或滚动到视口页面索引
    • 类型: observe 工具
    • 可选输入:
      • direction (字符串: up 或 down)
      • page (数字):要滚动到的视口页面索引
      • pixels (数字):要滚动的像素,与配对 direction
  12. search

    • 使用浏览器的默认引擎进行搜索
    • 类型: act 工具
    • 所需输入:
      • text (string):搜索查询
  13. select

    • 在中选择一个选项 <select> 元素
    • 类型: act 工具
    • 所需输入:
      • selector (string):CSS选择器 <select>
    • 可选输入(需要一个):
      • text (string):选项可见文本
      • value (string):选项值属性
  14. status

    • 返回当前Safari选项卡和完整的工具界面
    • 类型: observe 工具
    • 退货: { tabs, tools }
  15. type

    • 在输入框中键入文本
    • 类型: act 工具
    • 所需输入:
      • text (string):要键入的文本
    • 可选输入:
      • append (boolean,默认值:false):追加而不是替换
      • selector (string):输入的CSS选择器
      • submit (boolean,默认值:false):键入后按Enter键
  16. wait

    • 等待选择器或页面文本条件
    • 类型: observe 工具
    • 可选输入(恰好是前三个必需输入之一):
      • selector (string):要等待的CSS选择器
      • selectorGone (string):CSS选择器缺席等待
      • text (string):要等待的页面文本
      • timeoutMs (number):超时时间(毫秒)
    • 退货: { matched, elapsedMs }
  17. window

    • 管理浏览器窗口选项卡
    • 类型: observe 工具
    • 所需输入:
      • action (字符串: close, list, open, switch)
    • 可选输入:
      • index (数字):标签索引 close 和 switch
      • url (字符串):URL open