使用说明
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 首先在会话开始时获取运行时状态和完整的工具界面:
- 行动工具 以捕获的工作选项卡为目标
- 观察工具 瞄准前窗的当前选项卡
-
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- 在中选择一个选项
<select>元素 - 类型:
act工具 - 所需输入:
selector(string):CSS选择器<select>
- 可选输入(需要一个):
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和switchurl(字符串):URLopen