📱 iOS模拟器的MCP服务器
](https://smithery.ai/server/@atom2ueki/mcp-server-ios-simulator)
📋 概述
该项目在iOS模拟器和模型上下文协议之间提供了一座桥梁,允许与iOS模拟器实例进行标准化通信。它支持对iOS模拟器进行编程控制,同时利用MCP协议在不同环境中实现一致的接口。该服务器利用stdio作为其传输机制,使其非常适合与Claude Desktop和其他MCP兼容客户端集成。
🎬 演示
*演示如何使用Claude AI Desktop启动iOS模拟器*
🏗️ 建筑
服务器由三个主要组件组成:
- 🔄 模拟器管理层 -处理iOS模拟器生命周期和交互
- 🔌 MCP协议实现 -使用带有stdio传输的TypeScript SDK实现模型上下文协议
- 📊 记录器组件 -提供基于文件的日志记录,而不干扰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使用示例
- 配置Claude Desktop以将此服务器用作MCP工具:
- 打开克劳德桌面 - 前往“设置”>“高级” - 将以下配置添加到“MCP服务器”部分:
{
"mcpServers": {
"simulator": {
"command": "node",
"args": [
"/path/to/your/mcp-server-ios-simulator/dist/index.js"
]
}
}
}- 替换 /path/to/your 带有安装此存储库的实际路径 - 保存设置并重新启动Claude Desktop
- 使用提供的工具直接从Claude Desktop控制iOS模拟器:
直接UDID方法(推荐):
1. 首先,让克劳德列出可用的模拟器:
"Show me all available iOS simulators"1. 然后使用UDID启动特定的模拟器:
"Boot the iOS simulator with UDID 5272EA61-5796-4372-86FE-3B33831D5CC1"1. 完成后,使用相同的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许可证获得许可-请参阅 许可证 文件以获取详细信息。
🙏 致谢
- 📱 appium ios模拟器 用于提供iOS模拟器交互功能
- 🔌 模型上下文协议 用于协议规范和TypeScript SDK
