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\\RiderProjects\AIPacketAnalyzer\safari-mcp-server- 安装依赖项:
npm install- 构建项目:
npm run build使用方法
运行服务器
npm start服务器将启动并在标准输入/输出(stdio)上监听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(发音为 /ˈmæk θaʊ s/,中文常简称为“苹果系统”或直接称为“macOS”,是苹果公司为其Mac系列电脑开发的操作系统): ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"safari-devtools": {
"command": "node",
"args": ["C:/Users//RiderProjects/AIPacketAnalyzer/safari-mcp-server/build/index.js"]
}
}
}示例命令
一旦连接到像Claude Desktop这样的MCP客户端,您就可以使用以下命令:
Start a Safari session with ID "main" and navigate to Google:
- Start session: safari_start_session with sessionId "main"
- Navigate: safari_navigate to "https://www.google.com"
- Take screenshot: safari_take_screenshot
- Get console logs: safari_get_console_logs配置选项
在开始会话时,您可以指定选项:
{
"sessionId": "my-session",
"options": {
"enableInspection": true, // Enable Web Inspector
"enableProfiling": true, // Enable timeline profiling
"usesTechnologyPreview": false // Use Safari Technology Preview
}
}局限性
- 单次会话限制Safari 一次只允许一个 WebDriver 会话
- 仅限 macOS此服务器仅在macOS系统上运行
- 专为Safari设计与Chrome DevTools协议不同,Safari的调试API访问有限
- 网络日志网络日志记录依赖于Safari的性能日志,可能存在局限性
发展
项目结构
safari-mcp-server/
├── src/
│ ├── index.ts # Main entry point
│ ├── safari-mcp-server.ts # MCP server implementation
│ ├── safari-driver.ts # Safari WebDriver manager
│ └── types.ts # TypeScript type definitions
├── build/ # Compiled 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 Inspector。
贡献
- 克隆(或“分叉”)该仓库
- 创建一个特性分支
- 做出你的更改
- 如适用,请添加测试
- 提交拉取请求
许可证
MIT 许可证 - 详情请参阅 LICENSE 文件。
