Safari Mcp Server

Safari Mcp Server

🚀 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 的自动化功能:

  1. 启用开发者菜单
    • 打开 Safari → 偏好设置 → 高级
    • 勾选“在菜单栏中显示开发菜单”
  2. 启用远程自动化
    • 在 Safari 的菜单栏中选择:开发 → 允许远程自动化
  3. 授权 SafariDriver
    sudo safaridriver --enable
    
    当系统提示时,输入你的管理员密码。

安装步骤

  1. 克隆或进入项目目录
    cd C:\Users\\RiderProjects\AIPacketAnalyzer\safari-mcp-server
    
  2. 安装依赖项
    npm install
    
  3. 构建项目
    npm run build
    

💻 使用示例

启动服务器

npm start

服务器将启动并在标准输入输出上监听 MCP 协议消息。

开发模式

npm run dev

可用工具

会话管理

  • safari_start_session - 启动一个新的 Safari 自动化会话
  • safari_close_session - 关闭一个 Safari 会话
  • safari_list_sessions - 列出所有活动会话

导航与页面信息

  • safari_navigate - 导航到指定 URL
  • safari_get_page_info - 获取当前页面的 URL 和标题

开发者工具访问

  • safari_get_console_logs - 获取浏览器控制台日志
  • safari_get_network_logs - 获取网络活动日志
  • safari_get_performance_metrics - 获取页面性能指标

浏览器交互

  • safari_execute_script - 在浏览器中执行 JavaScript
  • safari_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//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 技术预览版
}
}

局限性

  1. 单会话限制:Safari 一次只允许一个 WebDriver 会话
  2. 仅支持 macOS:此服务器仅在 macOS 系统上运行
  3. Safari 特定:与 Chrome DevTools 协议不同,Safari 的调试 API 访问有限
  4. 网络日志:网络日志依赖于 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

故障排除

常见问题

  1. “未找到会话”错误
    • 确保在使用其他命令之前已经启动了会话
    • 检查 Safari 是否意外崩溃或关闭
  2. “未启用远程自动化”错误
    • 验证 Safari 的开发者菜单是否已启用
    • 检查“允许远程自动化”是否在开发菜单中已启用
  3. 权限错误
    • 运行 sudo safaridriver --enable 并输入密码
    • 确保终端具有必要的权限
  4. Safari 无响应
    • Safari 一次只能有一个自动化会话处于活动状态
    • 在启动新会话之前关闭所有现有的自动化会话

调试模式

若要查看详细日志,你可以修改服务器以包含更详细的输出,或者在自动化运行时检查 Safari 的 Web 检查器。

贡献指南

  1. 分叉仓库
  2. 创建功能分支
  3. 进行更改
  4. 如有必要,添加测试
  5. 提交拉取请求

📄 许可证

本项目采用 MIT 许可证,详情请参阅 LICENSE 文件。

相关项目

  • 0 关注
  • 0 收藏,21 浏览
  • system 提出于 2025-10-05 00:24

相似服务问题

相关AI产品