MCP Server for iOS Simulator

MCP Server for iOS Simulator

一个连接 iOS 模拟器和模型上下文协议的桥梁,通过标准化的通信接口实现对 iOS 模拟器的程序化控制。

Category
访问服务器

README

📱 iOS 模拟器 MCP 服务器

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

📋 概述

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

🎬 演示

iOS 模拟器演示

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

🏗️ 架构

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

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

✨ 特性

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

📋 前提条件

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

🔧 安装

# 克隆存储库
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 列出可用的模拟器:

      "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/       # 模拟器管理层
├── mcp/             # MCP 协议实现
├── bridge/          # 桥接组件
├── utils/           # 实用程序函数,包括日志记录器
├── config.ts        # 配置处理
└── index.ts         # 入口点

🔨 构建项目

# 安装开发依赖项
npm install

# 运行 TypeScript 编译器
npm run build

📜 许可证

该项目根据 MIT 许可证获得许可 - 有关详细信息,请参阅 LICENSE 文件。

🙏 鸣谢

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选