📱 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 を使用することです。
- クライン氏に聞いてみてください。
- Cline は依存関係の管理と構成を含むインストール プロセスを自動的に処理します。
あるいは、手動でインストールすることもできます。
インストール プロセスでは、次の処理が自動的に実行されます。
- macOSを実行しているか確認する
- Homebrew経由でidb-companionをインストールする
- 仮想環境にpip経由でfb-idbをインストールする
注: サーバーの使用中は、仮想環境をアクティブにしておいてください。ターミナルを閉じて後で戻ってきた場合は、 npm start
実行する前に、 source venv/bin/activate
コマンドで仮想環境を再度アクティブにする必要があります。
🔌 MCP統合
このサーバーを Claude または他の LLM アシスタントで使用するには:
- Claude Desktop の MCP 設定にサーバーを追加します。
- LLM は自然言語コマンドを使用して iOS シミュレーターを制御できるようになりました。
📚 ライブラリとしての使用
このパッケージを独自のプロジェクトのライブラリとして使用することもできます。
🔰 基本的な使い方
🚀 高度な使用法
個々のコンポーネントを直接使用することもできます。
🏗️ プロジェクト構造
🎯 サポートされているコマンド
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 つの主要コンポーネントで構成されています。
- IDBManager : idb を介して iOS シミュレータと直接対話する低レベル コンポーネント。
- NLParser : 自然言語の指示を解釈し、構造化されたコマンドに変換するコンポーネント。
- MCPOrchestrator : パーサーと IDBManager 間の相互作用を調整する中心的なコンポーネント。
これらのコンポーネントはアダプタを介して接続されます。
- ParserToOrchestrator : パーサーの結果をオーケストレーター コマンドに変換します。
- OrchestratorToIDB : オーケストレーター コマンドを IDBManager 呼び出しに変換します。
🔌 MCP統合
このサーバーをモデルコンテキストプロトコルで使用するには:
- MCP 設定にサーバーを追加します。
- LLM アプリケーションでサーバーに接続します。
🙏 謝辞
このプロジェクトは、iOSシミュレータの制御機能を提供するfacebook/idbなしでは実現できません。Facebook/Metaチームとidbプロジェクトへのすべての貢献者の皆様に、このような強力で信頼性の高いツールの開発と維持に心から感謝申し上げます。
📄 ライセンス
このツールは、Apache-2.0 の規約に基づいてオープンソースとして利用できます。
This server cannot be installed
local-only server
The server can only run on the client's local machine because it depends on local resources.
LLM が自然言語コマンドを通じて iOS シミュレーターと対話できるようにする MCP サーバー。
Related MCP Servers
- -securityFlicense-qualityAn MCP server to control iOS Simulators.Last updated -4122JavaScript
- AsecurityAlicenseAqualityEnables interaction with iOS simulators by providing tools to inspect UI elements, control UI interactions, and manage simulators through natural language commands.Last updated -6198466JavaScriptMIT License
- -securityAlicense-qualityA bridge between iOS simulators and the Model Context Protocol, enabling programmatic control of iOS simulators through standardized communication interfaces.Last updated -25TypeScriptMIT License
- -securityFlicense-qualityA customized MCP server that enables integration between LLM applications and documentation sources, providing AI-assisted access to LangGraph and Model Context Protocol documentation.Last updated -1Python