iOS模拟器MCP服务器

一个为iOS模拟器实现模型上下文协议(MCP)的服务器,支持通过标准化协议控制模拟器生命周期和应用交互。

  • by atom2ueki
  • TypeScript
  • 本地部署
  • 41 星标
  • 更新于
在 GitHub 查看 atom2ueki/mcp-server-ios-simulator

使用说明

📱 iOS模拟器的MCP服务器

一个为iOS模拟器实现模型上下文协议(MCP)的服务器,构建在 appium ios模拟器 并利用 MCP TypeScript SDK.

📋 概述

该项目在iOS模拟器和模型上下文协议之间提供了一座桥梁,允许与iOS模拟器实例进行标准化通信。它支持对iOS模拟器进行编程控制,同时利用MCP协议在不同环境中实现一致的接口。该服务器利用stdio作为其传输机制,使其非常适合与Claude Desktop和其他MCP兼容客户端集成。

🎬 演示

演示如何使用Claude AI Desktop启动iOS模拟器

🏗️ 建筑

服务器由三个主要组件组成:

  1. 🔄 模拟器管理层 -处理iOS模拟器生命周期和交互
  2. 🔌 MCP协议实现 -使用带有stdio传输的TypeScript SDK实现模型上下文协议
  3. 📊 记录器组件 -提供基于文件的日志记录,而不干扰stdio传输
┌─────────────────┐     ┌─────────────────┐     ┌─────────────────┐
│  MCP Protocol   │     │     Stdio       │     │    Simulator    │
│  Implementation │◄────┤    Transport    │◄────┤   Management    │
│                 │     │                 │     │      Layer      │
└─────────────────┘     └─────────────────┘     └─────────────────┘
        ▲                                                ▲
        │                                                │
        ▼                                                ▼
┌─────────────────┐                             ┌─────────────────┐
│   MCP Client    │                             │  iOS Simulator  │
│  (e.g. Claude)  │                             │                 │
└─────────────────┘                             └─────────────────┘

✨ 特性

  • 🚀 启动、停止和管理iOS模拟器实例
  • 🔌 启动和关闭模拟器
  • 📲 在模拟器上安装并启动应用程序
  • 📸 截取模拟器屏幕截图
  • 👆 在坐标上执行点击操作
  • 🔄 支持多个并发模拟器会话
  • 📝 全面的基于文件的日志记录,无需控制台输出
  • 🛡️ 容错操作

📋 先决条件

  • 🟢 Node.js(v16或更高版本)
  • 🍎 macOS(iOS模拟器所需)
  • 🛠️ 安装了iOS模拟器的Xcode
  • 📜 TypeScript 4.5+

🔧 安装

通过Smithery安装

通过以下方式自动安装Claude Desktop的iOS模拟器控制服务器 史密瑟里:

npx -y @smithery/cli install @atom2ueki/mcp-server-ios-simulator --client claude

手动安装

# Clone the repository
git clone https://github.com/atom2ueki/mcp-server-ios-simulator.git
cd mcp-server-ios-simulator

# Install dependencies
npm install

⚙️ 配置

配置是通过 src/config.ts 文件:

const config = {
  simulator: {
    defaultDevice: process.env.SIMULATOR_DEFAULT_DEVICE || 'iPhone 16',
    defaultOS: process.env.SIMULATOR_DEFAULT_OS || '18.2',
    timeout: parseInt(process.env.SIMULATOR_TIMEOUT || '30000', 10),
  }
};

您可以通过设置环境变量来自定义这些设置:

SIMULATOR_DEFAULT_DEVICE=iPhone 16
SIMULATOR_DEFAULT_OS=18.2
SIMULATOR_TIMEOUT=30000

🚀 用法

🔨 构建和启动服务器

# Build the project
npm run build

# Start the server
npm start

🧰 MCP工具

服务器提供了两种不同的方法来控制iOS模拟器:

📱 直接模拟器管理(推荐)

这些工具直接与模拟器UDID配合使用,不需要维护会话:

  • 📋 list-available-simulators -列出所有可用的模拟器及其UDID
  • ▶️ boot-simulator-by-udid -直接使用UDID启动模拟器
  • ⏹️ shutdown-simulator-by-udid -直接使用UDID关闭模拟器
  • 📊 list-booted-simulators -列出当前启动的所有模拟器

在以下情况下使用此方法: 您只想直接启动、使用和关闭模拟器。

📱 基于会话的管理(高级)

这些工具使用会话层来跟踪具有自定义会话ID的模拟器:

  • 📋 list-simulator-sessions -列出所有活动模拟器会话
  • ➕ create-simulator-session -创建新的模拟器会话
  • ❌ terminate-simulator-session -终止会话(关闭模拟器并清理)
  • 🔄 create-and-boot-simulator -创建一个新的模拟器会话并启动它
  • ▶️ boot-simulator -启动现有会话的模拟器
  • ⏹️ shutdown-simulator -关闭现有会话的模拟器

在以下情况下使用此方法: 您需要跟踪模拟器元数据,通过自定义ID引用模拟器,或使用更高级的管理功能。

📲 应用程序管理

  • 📥 install-app -在模拟器上安装应用程序
  • 🚀 launch-app -在模拟器上启动应用程序
  • 🛑 terminate-app -终止模拟器上正在运行的应用程序

🖱️ 交互工具

  • 📷 take-screenshot -截取模拟器屏幕的屏幕截图
  • 👆 tap-coordinate -在指定坐标处点击

🤖 Claude Desktop使用示例

  1. 配置Claude Desktop以将此服务器用作MCP工具:

    • 打开克劳德桌面
    • 前往“设置”>“高级”
    • 将以下配置添加到“MCP服务器”部分:
    {
      "mcpServers": {
        "simulator": {
          "command": "node",
          "args": [
            "/path/to/your/mcp-server-ios-simulator/dist/index.js"
          ]
        }
      }
    }
    
    • 替换 /path/to/your 带有安装此存储库的实际路径
    • 保存设置并重新启动Claude Desktop
  2. 使用提供的工具直接从Claude Desktop控制iOS模拟器:

    直接UDID方法(推荐):

    1. 首先,让克劳德列出可用的模拟器:

      "Show me all available iOS simulators"
      
    2. 然后使用UDID启动特定的模拟器:

      "Boot the iOS simulator with UDID 5272EA61-5796-4372-86FE-3B33831D5CC1"
      
    3. 完成后,使用相同的UDID将其关闭:

      "Shut down the simulator with UDID 5272EA61-5796-4372-86FE-3B33831D5CC1"
      

    对于大多数用例,直接UDID方法更简单、更可靠。

    基于会话的方法(高级): 仅当您需要会话跟踪的高级功能时才使用此方法:

    "Create a new simulator session for iPhone 16 Pro with iOS 18.2"
    "Boot the simulator for session abc-123"
    "Take a screenshot of the simulator for session abc-123"
    "Terminate the simulator session abc-123"
    

👨‍💻 发展

📁 项目结构

src/
├── simulator/       # Simulator management layer
├── mcp/             # MCP protocol implementation
├── bridge/          # Bridge component
├── utils/           # Utility functions including logger
├── config.ts        # Configuration handling
└── index.ts         # Entry point

🔨 建设项目

# Install development dependencies
npm install

# Run TypeScript compiler
npm run build

📜 许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。

🙏 致谢