返回市场
mcp服务器iOS模拟器

mcp服务器iOS模拟器

作者:atom2ueki35 星标更新:2025-08-01

项目介绍

📱 MCP Server for iOS Simulator

smithery 徽章

这是一个为iOS模拟器实现模型上下文协议(MCP)的服务器,基于appium-ios-simulator,并使用MCP TypeScript SDK

<a href="https://glama.ai/mcp/servers/@atom2ueki/mcp-server-ios-simulator"> <img width="380" height="200" src="https://gips1.baidu.com/it/u=4140685877,3451246185&fm=3081&app=3081&f=PNG?w=760&h=400" alt="iOS模拟器MCP服务器" /> </a>

📋 概述

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

🎬 演示

iOS模拟器演示

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

🏗️ 架构

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

  1. 🔄 模拟器管理层 - 处理iOS模拟器生命周期和交互
  2. 🔌 MCP协议实现 - 使用TypeScript SDK和标准I/O传输实现模型上下文协议
  3. 📊 日志组件 - 提供基于文件的日志记录,不干扰标准I/O传输
┌─────────────────┐     ┌─────────────────┐     ┌─────────────────┐
│  MCP协议实现   │     │     标准I/O     │     │    模拟器管理   │
│                │◄────┤    传输层      │◄────┤      层        │
└─────────────────┘     └─────────────────┘     └─────────────────┘
        ▲                                                ▲
        │                                                │
        ▼                                                ▼
┌─────────────────┐                             ┌─────────────────┐
│   MCP客户端     │                             │  iOS模拟器      │
│  (例如Claude)  │                             │                 │
└─────────────────┘                             └─────────────────┘

✨ 特性

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

📋 先决条件

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

🔧 安装

通过Smithery安装

要通过Smithery自动安装Claude Desktop的iOS模拟器控制服务器:

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

手动安装

# 克隆仓库
git clone https://github.com/atom2ueki/mcp-server-ios-simulator.git
cd mcp-server-ios-simulator

# 安装依赖
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

🚀 使用

🔨 构建和启动服务器

# 构建项目
npm run build

# 启动服务器
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工具:

    • 打开Claude Desktop
    • 转到设置 > 高级
    • 将以下配置添加到“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. 首先,让Claude列出所有可用的模拟器:

      "显示所有可用的iOS模拟器"
      
    2. 然后使用UDID启动特定模拟器:

      "启动具有UDID 5272EA61-5796-4372-86FE-3B33831D5CC1的iOS模拟器"
      
    3. 结束时,使用相同的UDID关闭它:

      "关闭具有UDID 5272EA61-5796-4372-86FE-3B33831D5CC1的模拟器"
      

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

    基于会话的方法(高级): 只有在需要会话跟踪的高级功能时才使用这种方法:

    "为iPhone 16 Pro创建一个新的iOS 18.2模拟器会话"
    "为会话abc-123启动模拟器"
    "为会话abc-123捕获模拟器的屏幕截图"
    "终止会话abc-123"
    

👨‍💻 开发

📁 项目结构

src/
├── simulator/       # 模拟器管理层
├── mcp/             # MCP协议实现
├── bridge/          # 桥接组件
├── utils/           # 包括日志在内的实用函数
├── config.ts        # 配置处理
└── index.ts         # 入口点

🔨 构建项目

# 安装开发依赖
npm install

# 运行TypeScript编译器
npm run build

📜 许可证

本项目根据MIT许可证发布 - 详情见LICENSE文件。

🙏 致谢