{"id":29730214,"url":"https://github.com/inditextech/mcp-server-simulator-ios-idb","last_synced_at":"2026-01-29T06:36:52.202Z","repository":{"id":285752478,"uuid":"950568971","full_name":"InditexTech/mcp-server-simulator-ios-idb","owner":"InditexTech","description":"A Model Context Protocol (MCP) server that enables LLMs to interact with iOS simulators through natural language commands.","archived":false,"fork":false,"pushed_at":"2025-04-25T08:31:47.000Z","size":18986,"stargazers_count":67,"open_issues_count":3,"forks_count":3,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-25T09:41:08.605Z","etag":null,"topics":["claude","cline","mcp","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/InditexTech.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-03-18T11:11:28.000Z","updated_at":"2025-04-25T08:31:51.000Z","dependencies_parsed_at":"2025-04-02T14:22:59.618Z","dependency_job_id":"f1a48b45-be27-47ed-83b1-4b8e932524bf","html_url":"https://github.com/InditexTech/mcp-server-simulator-ios-idb","commit_stats":null,"previous_names":["inditextech/mcp-server-simulator-ios-idb"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/InditexTech/mcp-server-simulator-ios-idb","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/InditexTech%2Fmcp-server-simulator-ios-idb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/InditexTech%2Fmcp-server-simulator-ios-idb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/InditexTech%2Fmcp-server-simulator-ios-idb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/InditexTech%2Fmcp-server-simulator-ios-idb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/InditexTech","download_url":"https://codeload.github.com/InditexTech/mcp-server-simulator-ios-idb/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/InditexTech%2Fmcp-server-simulator-ios-idb/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266959702,"owners_count":24012550,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-25T02:00:09.625Z","response_time":70,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["claude","cline","mcp","typescript"],"created_at":"2025-07-25T05:02:31.034Z","updated_at":"2026-01-29T06:36:52.158Z","avatar_url":"https://github.com/InditexTech.png","language":"TypeScript","funding_links":[],"categories":["Embedded System"],"sub_categories":["How to Submit"],"readme":"# 📱 MCP Server for iOS Simulator\n\n[![MCP Server](https://glama.ai/mcp/servers/@InditexTech/mcp-server-simulator-ios-idb/badge)](https://glama.ai/mcp/servers/@InditexTech/mcp-server-simulator-ios-idb)\n\nA Model Context Protocol (MCP) server that enables LLMs to interact with iOS simulators through natural language commands.\n\n## ℹ️ Overview\n\nThis MCP server provides a bridge between Large Language Models (LLMs) and iOS simulators, offering comprehensive control through natural language commands. Here's what it can do:\n\nFor detailed usage, see the Installation guide and Supported Commands sections. You can use this server either through direct MCP integration or as a standalone library.\n\nCheck out the Architecture section to understand how the components work together to enable natural language control of iOS simulators.\n\n![demo](demo/demo.gif)\n\n### 🎮 Simulator Control\n- Create and manage simulator sessions\n- Boot, shutdown, and monitor simulator states\n- List available and running simulators\n- Focus simulator windows\n\n### 📱 Application Management\n- Install and manage iOS applications\n- Launch, terminate, and uninstall apps\n- Monitor app states and verify installations\n- Handle app permissions and configurations\n\n### 🖱️ UI Interaction \u0026 Testing\n- Interact with the simulator UI\n- Execute tap, swipe, and button press actions\n- Input text and key sequences\n- Access accessibility elements for UI testing\n- Record videos of UI interactions\n\n### 🛠️ Development \u0026 Debugging\n- Capture screenshots and system logs\n- Debug applications in real-time\n- Monitor and analyze crash logs\n- Install dynamic libraries and manage app data\n\n### ⚡ Advanced Features\n- Additional functionality includes:\n  - Location simulation\n  - Media injection\n  - URL scheme handling\n  - Contact database management\n  - Keychain operations\n\nFor detailed usage, see the Installation guide and Supported Commands sections. You can use this server either through direct MCP integration or as a standalone library.\n\nCheck out the Architecture section to understand how the components work together to enable natural language control of iOS simulators.\n\n## 📋 Requirements\n\n- **macOS**: Required for iOS simulator support\n- **Node.js**: v14.0.0 or higher\n- **Homebrew**: Required for installing dependencies\n- **XCode**: With iOS simulators installed\n\n## 🚀 Installation\n\nThe easiest way to install this server is through Cline:\n\n1. Simply ask Cline:\n```\nAdd this mcp to cline https://github.com/InditexTech/mcp-server-simulator-ios-idb\n```\n\n2. Cline will handle the installation process automatically, including dependency management and configuration.\n\nAlternatively, you can install it manually:\n\n```bash\n# Clone the repository\ngit clone https://github.com/InditexTech/mcp-server-simulator-ios-idb.git\ncd mcp-server-simulator-ios-idb\n\n# Create and activate Python virtual environment\npython3 -m venv venv\nsource venv/bin/activate  # On Unix/macOS\n\n# Install dependencies\nnpm install\n\n# Build the project\nnpm run build\n\n# Start the project\nnpm start\n\n# Run tests\nnpm test\n```\n\nThe installation process will automatically:\n1. Check if you're running macOS\n2. Install idb-companion via Homebrew\n3. Install fb-idb via pip in the virtual environment\n\nNote: Make sure to keep the virtual environment activated while using the server. If you close your terminal and come back later, you'll need to reactivate the virtual environment with the `source venv/bin/activate` command before running `npm start`.\n\n## 🔌 MCP Integration\n\nTo use this server with Claude or other LLM assistants:\n\n1. Add the server to your MCP settings in Claude Desktop:\n\n```json\n{\n  \"mcpServers\": {\n    \"ios-simulator\": {\n      \"command\": \"node\",\n      \"args\": [\"/path/to/mcp-server-simulator-ios-idb/dist/index.js\"],\n      \"env\": {}\n    }\n  }\n}\n```\n\n2. The LLM can now use natural language commands to control iOS simulators:\n\n```\ncreate a simulator session with iPhone 14\ninstall app /path/to/my-app.ipa\nlaunch app com.example.myapp\ntap at 100, 200\ntake a screenshot\n```\n\n## 📚 Usage as a Library\n\nYou can also use this package as a library in your own projects:\n\n### 🔰 Basic Usage\n\n```typescript\nimport { createMCPServer } from 'mcp-server-simulator-ios-idb';\n\nasync function main() {\n  // Create an instance of the MCP server\n  const { orchestrator } = createMCPServer();\n  \n  // Process natural language commands\n  \n  // Create a simulator session\n  const sessionResult = await orchestrator.processInstruction('create session');\n  console.log(`Session created: ${sessionResult.data}`);\n  \n  // Interact with the simulator\n  await orchestrator.processInstruction('tap at 100, 200');\n  \n  // Capture a screenshot\n  const screenshotResult = await orchestrator.processInstruction('take screenshot');\n  console.log(`Screenshot saved at: ${screenshotResult.data}`);\n}\n\nmain().catch(console.error);\n```\n\n### 🚀 Advanced Usage\n\nYou can also use the individual components directly:\n\n```typescript\nimport { \n  IDBManager, \n  NLParser, \n  MCPOrchestrator,\n  ParserToOrchestrator,\n  OrchestratorToIDB\n} from 'mcp-server-simulator-ios-idb';\n\n// Create instances\nconst idbManager = new IDBManager();\nconst parser = new NLParser();\nconst orchestrator = new MCPOrchestrator(parser, idbManager);\n\n// Use the components directly\nconst sessionId = await idbManager.createSimulatorSession({\n  deviceName: 'iPhone 12',\n  platformVersion: '15.0'\n});\n\nawait idbManager.tap(sessionId, 100, 200);\n```\n\n## 🏗️ Project Structure\n\n```\nmcp-server-simulator-ios-idb/\n├── src/                      # Source code\n│   ├── adapters/             # Adapter components\n│   ├── idb/                  # IDB manager implementation\n│   ├── mcp/                  # MCP server implementation\n│   ├── orchestrator/         # Command orchestrator\n│   ├── parser/              # Natural language parser\n│   └── index.ts             # Main entry point\n├── types/                   # TypeScript type definitions\n├── scripts/                 # Installation scripts\n├── package.json            # Project configuration\n└── tsconfig.json          # TypeScript configuration\n```\n\n## 🎯 Supported Commands\n\nThe NLParser supports the following natural language commands:\n\n### 🎮 Simulator Management\n| Command | Description | Example |\n|---------|-------------|---------|\n| Create session | Creates a new simulator session | \"create session\", \"create simulator iPhone 12\" |\n| Terminate session | Terminates the current session | \"terminate session\", \"close simulator\" |\n| List simulators | Lists available simulators | \"list simulators\", \"show simulators\" |\n| List booted simulators | Lists running simulators | \"list booted simulators\", \"show running simulators\" |\n| Boot simulator | Boots a simulator by UDID | \"boot simulator 5A321B8F-4D85-4267-9F79-2F5C91D142C2\" |\n| Shutdown simulator | Shuts down a simulator | \"shutdown simulator 5A321B8F-4D85-4267-9F79-2F5C91D142C2\" |\n| Focus simulator | Brings simulator window to front | \"focus simulator\", \"bring simulator to front\" |\n| List simulator sessions | Lists active simulator sessions | \"list simulator sessions\", \"show active sessions\" |\n\n### 📱 App Management\n| Command | Description | Example |\n|---------|-------------|---------|\n| Install app | Installs an app on the simulator | \"install app /path/to/app.ipa\" |\n| Launch app | Launches an app on the simulator | \"launch app com.example.app\" |\n| Terminate app | Terminates a running app | \"terminate app com.example.app\" |\n| Uninstall app | Uninstalls an app | \"uninstall app com.example.app\" |\n| List apps | Lists installed applications | \"list apps\", \"show installed apps\" |\n| Check if app installed | Checks if an app is installed | \"is app com.example.app installed\" |\n\n### 🖱️ UI Interaction\n| Command | Description | Example |\n|---------|-------------|---------|\n| Tap | Taps at specific coordinates | \"tap at 100, 200\" |\n| Swipe | Performs a swipe gesture | \"swipe from 100, 200 to 300, 400\" |\n| Press button | Presses a device button | \"press button HOME\", \"press button SIRI\" |\n| Input text | Types text | \"input text Hello World\" |\n| Press key | Presses a key by code | \"press key 4\" |\n| Press key sequence | Presses a sequence of keys | \"press key sequence 4 5 6\" |\n\n### ♿ Accessibility\n| Command | Description | Example |\n|---------|-------------|---------|\n| Describe elements | Lists all accessibility elements | \"describe all elements\", \"show accessibility elements\" |\n| Describe point | Describes element at coordinates | \"describe point 100, 200\", \"what's at 150, 300\" |\n\n### 📸 Capture and Logs\n| Command | Description | Example |\n|---------|-------------|---------|\n| Take screenshot | Captures a screenshot | \"take screenshot\", \"capture screen\" |\n| Record video | Records screen activity | \"record video /path/output.mp4\" |\n| Stop recording | Stops video recording | \"stop recording\", \"stop video recording\" |\n| Get logs | Retrieves system or app logs | \"get logs\", \"get logs for com.example.app\" |\n\n### 🐛 Debug\n| Command | Description | Example |\n|---------|-------------|---------|\n| Start debug | Starts a debug session | \"debug app com.example.app\", \"start debug com.example.app\" |\n| Stop debug | Stops a debug session | \"stop debug\", \"terminate debug session\" |\n| Debug status | Gets debug session status | \"debug status\", \"show debug info\" |\n\n### 💥 Crash Logs\n| Command | Description | Example |\n|---------|-------------|---------|\n| List crash logs | Lists available crash logs | \"list crash logs\", \"show crash logs\" |\n| Show crash log | Shows content of a crash log | \"show crash log crash_2023-01-01\" |\n| Delete crash logs | Deletes crash logs | \"delete crash logs\", \"clear crash logs\" |\n\n### 🔧 Additional Commands\n| Command | Description | Example |\n|---------|-------------|---------|\n| Install dylib | Installs a dynamic library | \"install dylib /path/to/library.dylib\" |\n| Open URL | Opens a URL in the simulator | \"open url https://example.com\" |\n| Clear keychain | Clears the simulator's keychain | \"clear keychain\" |\n| Set location | Sets the simulator's location | \"set location 37.7749, -122.4194\" |\n| Add media | Adds media to the camera roll | \"add media /path/to/image.jpg\" |\n| Approve permissions | Approves app permissions | \"approve permissions com.example.app photos camera\" |\n| Update contacts | Updates contacts database | \"update contacts /path/to/contacts.sqlite\" |\n\nThe interface supports all commands available in the idb CLI tool, providing a comprehensive set of operations for iOS simulator automation.\n\n## 🔍 Architecture\n\nThe server consists of three main components:\n\n1. **IDBManager**: Low-level component that interacts directly with iOS simulators through idb.\n2. **NLParser**: Component that interprets natural language instructions and converts them into structured commands.\n3. **MCPOrchestrator**: Central component that coordinates interactions between the parser and the IDBManager.\n\nThese components are connected through adapters:\n- **ParserToOrchestrator**: Converts parser results into orchestrator commands.\n- **OrchestratorToIDB**: Translates orchestrator commands into IDBManager calls.\n\n## 🔌 MCP Integration\n\nTo use this server with the Model Context Protocol:\n\n1. Add the server to your MCP settings:\n\n```json\n{\n  \"mcpServers\": {\n    \"ios-simulator\": {\n      \"command\": \"node\",\n      \"args\": [\"/path/to/mcp-server-simulator-ios-idb/dist/index.js\"],\n      \"env\": {}\n    }\n  }\n}\n```\n\n2. Connect to the server in your LLM application:\n\n```typescript\nconst result = await useMcpTool({\n  serverName: \"ios-simulator\",\n  toolName: \"process-instruction\",\n  arguments: {\n    instruction: \"create simulator session\"\n  }\n});\n```\n\n## 🙏 Acknowledgments\n\nThis project would not be possible without [facebook/idb](https://github.com/facebook/idb), which provides the underlying iOS simulator control capabilities. We extend our sincere gratitude to the Facebook/Meta team and all contributors to the idb project for creating and maintaining such a powerful and reliable tool.\n\n## 📄 License\n\nThis tool is available as open source under the terms of the Apache-2.0.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finditextech%2Fmcp-server-simulator-ios-idb","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Finditextech%2Fmcp-server-simulator-ios-idb","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finditextech%2Fmcp-server-simulator-ios-idb/lists"}