iOS simulators MCP

by InditexTech
Verified

local-only server

The server can only run on the client’s local machine because it depends on local resources.

Integrations

  • Leverages Facebook's idb tool to interact with iOS simulators, enabling app installation, UI automation, and debugging features.

  • Enables control of iOS simulators through natural language commands, supporting simulator management, app installation and launching, UI interaction, accessibility testing, screenshot/video capture, debugging, and crash log analysis.

  • Utilizes Meta's idb technology to provide iOS simulator control, supporting app testing, UI automation, and device management.

📱 iOS シミュレータ用 MCP サーバー

LLM が自然言語コマンドを通じて iOS シミュレーターと対話できるようにするモデル コンテキスト プロトコル (MCP) サーバー。

ℹ️ 概要

このMCPサーバーは、大規模言語モデル(LLM)とiOSシミュレータ間のブリッジを提供し、自然言語コマンドによる包括的な制御を提供します。その機能は以下のとおりです。

詳細な使用方法については、インストールガイドとサポートされるコマンドのセクションをご覧ください。このサーバーは、MCPに直接統合することも、スタンドアロンライブラリとして使用することもできます。

iOS シミュレーターの自然言語制御を可能にするためにコンポーネントがどのように連携するかを理解するには、「アーキテクチャ」セクションを確認してください。

🎮 シミュレーターコントロール

  • シミュレータセッションの作成と管理
  • 起動、シャットダウン、およびシミュレータの状態の監視
  • 利用可能なシミュレータと実行中のシミュレータの一覧
  • フォーカスシミュレータウィンドウ

📱 アプリケーション管理

  • iOSアプリケーションのインストールと管理
  • アプリの起動、終了、アンインストール
  • アプリの状態を監視し、インストールを検証する
  • アプリの権限と設定を管理する

🖱️ UIインタラクションとテスト

  • シミュレータUIを操作する
  • タップ、スワイプ、ボタン押下などのアクションを実行する
  • 入力テキストとキーシーケンス
  • UI テストのアクセシビリティ要素にアクセスする
  • UIインタラクションのビデオを録画する

🛠️ 開発とデバッグ

  • スクリーンショットとシステムログをキャプチャする
  • アプリケーションをリアルタイムでデバッグする
  • クラッシュログの監視と分析
  • 動的ライブラリをインストールしてアプリデータを管理する

⚡ 高度な機能

  • 追加機能は次のとおりです:
    • ロケーションシミュレーション
    • メディアインジェクション
    • URLスキームの処理
    • 連絡先データベース管理
    • キーチェーン操作

詳細な使用方法については、インストールガイドとサポートされるコマンドのセクションをご覧ください。このサーバーは、MCPに直接統合することも、スタンドアロンライブラリとして使用することもできます。

iOS シミュレーターの自然言語制御を可能にするためにコンポーネントがどのように連携するかを理解するには、「アーキテクチャ」セクションを確認してください。

📋 要件

  • macOS : iOSシミュレータのサポートに必要
  • Node.js : v14.0.0以上
  • Homebrew : 依存関係のインストールに必要
  • XCode : iOSシミュレータがインストールされている

🚀 インストール

このサーバーをインストールする最も簡単な方法は、Cline を使用することです。

  1. クライン氏に聞いてみてください。
Add this mcp to cline https://github.com/InditexTech/mcp-server-simulator-ios-idb
  1. Cline は依存関係の管理と構成を含むインストール プロセスを自動的に処理します。

あるいは、手動でインストールすることもできます。

# Clone the repository git clone https://github.com/InditexTech/mcp-server-simulator-ios-idb.git cd mcp-server-simulator-ios-idb # Create and activate Python virtual environment python3 -m venv venv source venv/bin/activate # On Unix/macOS # Install dependencies npm install # Build the project npm run build # Start the project npm start # Run tests npm test

インストール プロセスでは、次の処理が自動的に実行されます。

  1. macOSを実行しているか確認する
  2. Homebrew経由でidb-companionをインストールする
  3. 仮想環境にpip経由でfb-idbをインストールする

注: サーバーの使用中は、仮想環境をアクティブにしておいてください。ターミナルを閉じて後で戻ってきた場合は、 npm start実行する前に、 source venv/bin/activateコマンドで仮想環境を再度アクティブにする必要があります。

🔌 MCP統合

このサーバーを Claude または他の LLM アシスタントで使用するには:

  1. Claude Desktop の MCP 設定にサーバーを追加します。
{ "mcpServers": { "ios-simulator": { "command": "node", "args": ["/path/to/mcp-server-simulator-ios-idb/dist/index.js"], "env": {} } } }
  1. LLM は自然言語コマンドを使用して iOS シミュレーターを制御できるようになりました。
create a simulator session with iPhone 14 install app /path/to/my-app.ipa launch app com.example.myapp tap at 100, 200 take a screenshot

📚 ライブラリとしての使用

このパッケージを独自のプロジェクトのライブラリとして使用することもできます。

🔰 基本的な使い方

import { createMCPServer } from 'mcp-server-simulator-ios-idb'; async function main() { // Create an instance of the MCP server const { orchestrator } = createMCPServer(); // Process natural language commands // Create a simulator session const sessionResult = await orchestrator.processInstruction('create session'); console.log(`Session created: ${sessionResult.data}`); // Interact with the simulator await orchestrator.processInstruction('tap at 100, 200'); // Capture a screenshot const screenshotResult = await orchestrator.processInstruction('take screenshot'); console.log(`Screenshot saved at: ${screenshotResult.data}`); } main().catch(console.error);

🚀 高度な使用法

個々のコンポーネントを直接使用することもできます。

import { IDBManager, NLParser, MCPOrchestrator, ParserToOrchestrator, OrchestratorToIDB } from 'mcp-server-simulator-ios-idb'; // Create instances const idbManager = new IDBManager(); const parser = new NLParser(); const orchestrator = new MCPOrchestrator(parser, idbManager); // Use the components directly const sessionId = await idbManager.createSimulatorSession({ deviceName: 'iPhone 12', platformVersion: '15.0' }); await idbManager.tap(sessionId, 100, 200);

🏗️ プロジェクト構造

mcp-server-simulator-ios-idb/ ├── src/ # Source code │ ├── adapters/ # Adapter components │ ├── idb/ # IDB manager implementation │ ├── mcp/ # MCP server implementation │ ├── orchestrator/ # Command orchestrator │ ├── parser/ # Natural language parser │ └── index.ts # Main entry point ├── types/ # TypeScript type definitions ├── scripts/ # Installation scripts ├── package.json # Project configuration └── tsconfig.json # TypeScript configuration

🎯 サポートされているコマンド

NLParser は次の自然言語コマンドをサポートしています。

🎮 シミュレータ管理

指示説明
セッションを作成新しいシミュレータセッションを作成する「セッションを作成」、「iPhone 12シミュレーターを作成」
セッションを終了する現在のセッションを終了します「セッションを終了する」、「シミュレータを閉じる」
シミュレータの一覧利用可能なシミュレータの一覧「シミュレータの一覧表示」、「シミュレータの表示」
起動したシミュレータの一覧ランニングシミュレーターの一覧「起動したシミュレータの一覧を表示する」、「実行中のシミュレータを表示する」
ブートシミュレーターUDIDでシミュレータを起動する「ブートシミュレーター 5A321B8F-4D85-4267-9F79-2F5C91D142C2」
シャットダウンシミュレータシミュレータをシャットダウンする「シャットダウンシミュレーター 5A321B8F-4D85-4267-9F79-2F5C91D142C2」
フォーカスシミュレーターシミュレータウィンドウを最前面に表示します「シミュレータにフォーカス」、「シミュレータを最前面に表示する」
シミュレータセッションの一覧アクティブなシミュレータセッションを一覧表示します「シミュレータセッションの一覧を表示する」、「アクティブなセッションを表示する」

📱 アプリ管理

指示説明
アプリをインストールシミュレータにアプリをインストールする「アプリをインストール /path/to/app.ipa」
アプリを起動シミュレータ上でアプリを起動する「アプリ com.example.app を起動する」
アプリを終了する実行中のアプリを終了します「アプリ com.example.app を終了」
アプリをアンインストールするアプリをアンインストールする「com.example.app のアプリをアンインストールする」
アプリを一覧表示するインストールされているアプリケーションを一覧表示します「アプリを一覧表示する」、「インストールされているアプリを表示する」
アプリがインストールされているかどうかを確認するアプリがインストールされているかどうかを確認する「アプリ com.example.app はインストールされていますか?」

🖱️ UIインタラクション

指示説明
タップ特定の座標をタップ「100、200でタップ」
スワイプスワイプジェスチャーを実行する「100、200から300、400にスワイプ」
ボタンを押すデバイスのボタンを押す「HOMEボタンを押してください」、「SIRIボタンを押してください」
入力テキストテキストを入力する「入力テキスト Hello World」
キーを押すコードでキーを押す「4キーを押してください」
キーシーケンスを押す一連のキーを押す「キーシーケンス4 5 6を押してください」

♿ アクセシビリティ

指示説明
要素を説明するすべてのアクセシビリティ要素を一覧表示します「すべての要素を説明する」、「アクセシビリティ要素を表示する」
ポイントを説明する座標の要素を記述する「ポイント100、200を説明してください」、「ポイント150、300には何がありますか」

📸 キャプチャとログ

指示説明
スクリーンショットを撮るスクリーンショットをキャプチャする「スクリーンショットを撮る」、「画面をキャプチャする」
ビデオを録画する画面アクティビティを記録する「ビデオを録画 /path/output.mp4」
録画を停止ビデオ録画を停止します「録画を停止」、「ビデオ録画を停止」
ログを取得するシステムまたはアプリのログを取得します「ログを取得」、「com.example.app のログを取得」

🐛 デバッグ

指示説明
デバッグを開始デバッグセッションを開始します「アプリ com.example.app をデバッグ」、「com.example.app のデバッグを開始」
デバッグを停止デバッグセッションを停止します「デバッグを停止」、「デバッグセッションを終了する」
デバッグステータスデバッグセッションのステータスを取得します「デバッグステータス」、「デバッグ情報を表示」

💥 クラッシュログ

指示説明
クラッシュログの一覧利用可能なクラッシュログを一覧表示します「クラッシュログを一覧表示する」、「クラッシュログを表示する」
クラッシュログを表示クラッシュログの内容を表示します「クラッシュログを表示 crash_2023-01-01」
クラッシュログを削除するクラッシュログを削除します「クラッシュログを削除する」、「クラッシュログをクリアする」

🔧 追加コマンド

指示説明
dylibをインストールする動的ライブラリをインストールする「dylib をインストール /path/to/library.dylib」
URLを開くシミュレータでURLを開きます「URL https://example.comを開く」
クリアキーホルダーシミュレータのキーチェーンをクリアします「クリアキーホルダー」
場所を設定するシミュレータの位置を設定する「場所を37.7749、-122.4194に設定」
メディアを追加カメラロールにメディアを追加します「メディアを /path/to/image.jpg に追加」
権限を承認するアプリの権限を承認する「com.example.app フォト カメラの権限を承認」
連絡先を更新する連絡先データベースを更新「連絡先を更新する /path/to/contacts.sqlite」

このインターフェースは、idb CLI ツールで使用可能なすべてのコマンドをサポートし、iOS シミュレータの自動化のための包括的な操作セットを提供します。

🔍 建築

サーバーは 3 つの主要コンポーネントで構成されています。

  1. IDBManager : idb を介して iOS シミュレータと直接対話する低レベル コンポーネント。
  2. NLParser : 自然言語の指示を解釈し、構造化されたコマンドに変換するコンポーネント。
  3. MCPOrchestrator : パーサーと IDBManager 間の相互作用を調整する中心的なコンポーネント。

これらのコンポーネントはアダプタを介して接続されます。

  • ParserToOrchestrator : パーサーの結果をオーケストレーター コマンドに変換します。
  • OrchestratorToIDB : オーケストレーター コマンドを IDBManager 呼び出しに変換します。

🔌 MCP統合

このサーバーをモデルコンテキストプロトコルで使用するには:

  1. MCP 設定にサーバーを追加します。
{ "mcpServers": { "ios-simulator": { "command": "node", "args": ["/path/to/mcp-server-simulator-ios-idb/dist/index.js"], "env": {} } } }
  1. LLM アプリケーションでサーバーに接続します。
const result = await useMcpTool({ serverName: "ios-simulator", toolName: "process-instruction", arguments: { instruction: "create simulator session" } });

🙏 謝辞

このプロジェクトは、iOSシミュレータの制御機能を提供するfacebook/idbなしでは実現できません。Facebook/Metaチームとidbプロジェクトへのすべての貢献者の皆様に、このような強力で信頼性の高いツールの開発と維持に心から感謝申し上げます。

📄 ライセンス

このツールは、Apache-2.0 の規約に基づいてオープンソースとして利用できます。

ID: lpriwa3d78