article
README
🚀 Safari MCP 服务器
Safari MCP 服务器是一个基于模型上下文协议(MCP)的服务器,它为 AI 助手提供 Safari 浏览器自动化和开发者工具访问功能。借助该服务器,大语言模型(LLMs)可以与 Safari 进行交互,获取控制台日志,监控网络活动,并执行浏览器自动化任务。
✨ 主要特性
- 🚀 Safari 浏览器自动化:启动、控制和管理 Safari 会话
- 🔍 开发者工具访问:获取控制台日志、网络日志和性能指标
- 📸 截图功能:捕获页面截图以进行可视化分析
- 🕵️ 元素检查:检查 DOM 元素及其属性
- ⚡ JavaScript 执行:在浏览器上下文中运行自定义 JavaScript
- 📊 性能监控:访问时间指标和性能数据
- 🔧 多会话管理:管理多个 Safari 自动化会话
📦 安装指南
前提条件
系统要求
- 仅支持 macOS(因为 Safari 和 SafariDriver 仅在 macOS 上可用)
- Node.js 18 及以上版本
- Safari 10 及以上版本(自带 WebDriver 支持)
Safari 设置
在使用此 MCP 服务器之前,你需要启用 Safari 的自动化功能:
- 启用开发者菜单:
- 打开 Safari → 偏好设置 → 高级
- 勾选“在菜单栏中显示开发菜单”
- 启用远程自动化:
- 在 Safari 的菜单栏中选择:开发 → 允许远程自动化
- 授权 SafariDriver:
当系统提示时,输入你的管理员密码。sudo safaridriver --enable
安装步骤
- 克隆或进入项目目录:
cd C:\Users\<USERNAME>\RiderProjects\AIPacketAnalyzer\safari-mcp-server - 安装依赖项:
npm install - 构建项目:
npm run build
💻 使用示例
启动服务器
npm start
服务器将启动并在标准输入输出上监听 MCP 协议消息。
开发模式
npm run dev
可用工具
会话管理
safari_start_session- 启动一个新的 Safari 自动化会话safari_close_session- 关闭一个 Safari 会话safari_list_sessions- 列出所有活动会话
导航与页面信息
safari_navigate- 导航到指定 URLsafari_get_page_info- 获取当前页面的 URL 和标题
开发者工具访问
safari_get_console_logs- 获取浏览器控制台日志safari_get_network_logs- 获取网络活动日志safari_get_performance_metrics- 获取页面性能指标
浏览器交互
safari_execute_script- 在浏览器中执行 JavaScriptsafari_take_screenshot- 捕获页面截图safari_inspect_element- 检查 DOM 元素
与 Claude Desktop 配合使用示例
将以下配置添加到你的 Claude Desktop 配置文件中:
macOS:~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"safari-devtools": {
"command": "node",
"args": ["C:/Users/<USERNAME>/RiderProjects/AIPacketAnalyzer/safari-mcp-server/build/index.js"]
}
}
}
示例命令
连接到像 Claude Desktop 这样的 MCP 客户端后,你可以使用以下命令:
启动一个 ID 为 "main" 的 Safari 会话并导航到 Google:
- 启动会话:safari_start_session 并指定 sessionId 为 "main"
- 导航:safari_navigate 到 "https://www.google.com"
- 截图:safari_take_screenshot
- 获取控制台日志:safari_get_console_logs
📚 详细文档
配置选项
在启动会话时,你可以指定以下选项:
{
"sessionId": "my-session",
"options": {
"enableInspection": true, // 启用 Web 检查器
"enableProfiling": true, // 启用时间线分析
"usesTechnologyPreview": false // 使用 Safari 技术预览版
}
}
局限性
- 单会话限制:Safari 一次只允许一个 WebDriver 会话
- 仅支持 macOS:此服务器仅在 macOS 系统上运行
- Safari 特定:与 Chrome DevTools 协议不同,Safari 的调试 API 访问有限
- 网络日志:网络日志依赖于 Safari 的性能日志,可能存在一定限制
开发相关
项目结构
safari-mcp-server/
├── src/
│ ├── index.ts # 主入口文件
│ ├── safari-mcp-server.ts # MCP 服务器实现
│ ├── safari-driver.ts # Safari WebDriver 管理器
│ └── types.ts # TypeScript 类型定义
├── build/ # 编译后的 JavaScript 文件
├── package.json
├── tsconfig.json
└── README.md
构建项目
npm run build
监听文件变化
npm run watch
清理构建文件
npm run clean
故障排除
常见问题
- “未找到会话”错误:
- 确保在使用其他命令之前已经启动了会话
- 检查 Safari 是否意外崩溃或关闭
- “未启用远程自动化”错误:
- 验证 Safari 的开发者菜单是否已启用
- 检查“允许远程自动化”是否在开发菜单中已启用
- 权限错误:
- 运行
sudo safaridriver --enable并输入密码 - 确保终端具有必要的权限
- 运行
- Safari 无响应:
- Safari 一次只能有一个自动化会话处于活动状态
- 在启动新会话之前关闭所有现有的自动化会话
调试模式
若要查看详细日志,你可以修改服务器以包含更详细的输出,或者在自动化运行时检查 Safari 的 Web 检查器。
贡献指南
- 分叉仓库
- 创建功能分支
- 进行更改
- 如有必要,添加测试
- 提交拉取请求
📄 许可证
本项目采用 MIT 许可证,详情请参阅 LICENSE 文件。
微信扫一扫