Safari MCP服务器
 ](https://www.npmjs.com/package/@axivo/mcp-safari)  ](https://nodejs.org/) 
用于通过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 首先在会话开始时获取运行时状态和完整的工具界面:
- 行动工具 以捕获的工作选项卡为目标
- 观察工具 瞄准前窗的当前选项卡
click
- 单击工作选项卡上的元素 - 类型: act 工具 - 可选输入: - key (string):要按的键(例如,Escape、ArrowRight、Enter、Tab) - selector (string):目标元素的CSS选择器 - text (string):要匹配的可见文本或aria标签 - wait (string):点击后等待的CSS选择器 - x (数字):X坐标(像素) - y (数字):Y坐标(像素) - 返回:带有变化检测的结果
close
- 关闭工作选项卡 - 类型: act 工具
execute
- 在工作选项卡中执行JavaScript - 类型: act 工具 - 所需输入: - script (string):JavaScript代码
hover
- 发送悬停事件以显示悬停触发的UI - 类型: act 工具 - 可选输入(需要一个): - selector (string):目标元素的CSS选择器 - text (string):要匹配的可见文本
inspect
- 返回CSS选择器的元素元数据 - 类型: observe 工具 - 所需输入: - selector (string):目标元素的CSS选择器 - 可选输入: - index (数字):前窗标签索引 - 退货: { found, tag, text, visible, disabled, attributes, rect }
navigate
- 将工作选项卡导航到URL或浏览历史记录 - 类型: act 工具 - 可选输入(url 或 direction 必填): - direction (字符串: back 或 forward) - selector (string):加载后等待的CSS选择器 - steps (数字,默认值:1):历史导航步骤 - url (字符串):要导航到的URL
open
- 打开空白选项卡作为工作目标 - 类型: act 工具
read
- 从选项卡获取页面标题、URL和文本或链接 - 类型: observe 工具 - 可选输入: - index (数字):前窗标签索引 - mode (字符串: text 或 links,默认值: text) - selector (string):用于作用域提取的CSS选择器
refresh
- 刷新工作选项卡 - 类型: act 工具 - 可选输入: - hard (布尔值,默认值:false):绕过缓存 - selector (string):重新加载后等待的CSS选择器
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 模式。
scroll
- 按方向滚动或滚动到视口页面索引 - 类型: observe 工具 - 可选输入: - direction (字符串: up 或 down) - page (数字):要滚动到的视口页面索引 - pixels (数字):要滚动的像素,与配对 direction
search
- 使用浏览器的默认引擎进行搜索 - 类型: act 工具 - 所需输入: - text (string):搜索查询
select
- 在中选择一个选项 ` 元素 - 类型: act 工具 - 所需输入: - selector (string):CSS选择器 - 可选输入(需要一个): - text (string):选项可见文本 - value` (string):选项值属性
status
- 返回当前Safari选项卡和完整的工具界面 - 类型: observe 工具 - 退货: { tabs, tools }
type
- 在输入框中键入文本 - 类型: act 工具 - 所需输入: - text (string):要键入的文本 - 可选输入: - append (boolean,默认值:false):追加而不是替换 - selector (string):输入的CSS选择器 - submit (boolean,默认值:false):键入后按Enter键
wait
- 等待选择器或页面文本条件 - 类型: observe 工具 - 可选输入(恰好是前三个必需输入之一): - selector (string):要等待的CSS选择器 - selectorGone (string):CSS选择器缺席等待 - text (string):要等待的页面文本 - timeoutMs (number):超时时间(毫秒) - 退货: { matched, elapsedMs }
window
- 管理浏览器窗口选项卡 - 类型: observe 工具 - 所需输入: - action (字符串: close, list, open, switch) - 可选输入: - index (数字):标签索引 close 和 switch - url (字符串):URL open
