📱 iOS シミュレータ用 MCP サーバー
LLM が自然言語コマンドを通じて iOS シミュレーターと対話できるようにするモデル コンテキスト プロトコル (MCP) サーバー。
ℹ️ 概要
このMCPサーバーは、大規模言語モデル(LLM)とiOSシミュレータ間のブリッジを提供し、自然言語コマンドによる包括的な制御を提供します。その機能は以下のとおりです。
詳細な使用方法については、インストールガイドとサポートされるコマンドのセクションをご覧ください。このサーバーは、MCPに直接統合することも、スタンドアロンライブラリとして使用することもできます。
iOS シミュレーターの自然言語制御を可能にするためにコンポーネントがどのように連携するかを理解するには、「アーキテクチャ」セクションを確認してください。

🎮 シミュレーターコントロール
シミュレータセッションの作成と管理
起動、シャットダウン、およびシミュレータの状態の監視
利用可能なシミュレータと実行中のシミュレータの一覧
フォーカスシミュレータウィンドウ
📱 アプリケーション管理
iOSアプリケーションのインストールと管理
アプリの起動、終了、アンインストール
アプリの状態を監視し、インストールを検証する
アプリの権限と設定を管理する
🖱️ UIインタラクションとテスト
シミュレータUIを操作する
タップ、スワイプ、ボタン押下などのアクションを実行する
入力テキストとキーシーケンス
UI テストのアクセシビリティ要素にアクセスする
UIインタラクションのビデオを録画する
🛠️ 開発とデバッグ
スクリーンショットとシステムログをキャプチャする
アプリケーションをリアルタイムでデバッグする
クラッシュログの監視と分析
動的ライブラリをインストールしてアプリデータを管理する
⚡ 高度な機能
追加機能は次のとおりです:
ロケーションシミュレーション
メディアインジェクション
URLスキームの処理
連絡先データベース管理
キーチェーン操作
詳細な使用方法については、インストールガイドとサポートされるコマンドのセクションをご覧ください。このサーバーは、MCPに直接統合することも、スタンドアロンライブラリとして使用することもできます。
iOS シミュレーターの自然言語制御を可能にするためにコンポーネントがどのように連携するかを理解するには、「アーキテクチャ」セクションを確認してください。
Related MCP server: Moodle MCP Server
📋 要件
macOS : iOSシミュレータのサポートに必要
Node.js : v14.0.0以上
Homebrew : 依存関係のインストールに必要
XCode : iOSシミュレータがインストールされている
🚀 インストール
このサーバーをインストールする最も簡単な方法は、Cline を使用することです。
クライン氏に聞いてみてください。
Add this mcp to cline https://github.com/InditexTech/mcp-server-simulator-ios-idbCline は依存関係の管理と構成を含むインストール プロセスを自動的に処理します。
あるいは、手動でインストールすることもできます。
# 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インストール プロセスでは、次の処理が自動的に実行されます。
macOSを実行しているか確認する
Homebrew経由でidb-companionをインストールする
仮想環境にpip経由でfb-idbをインストールする
注: サーバーの使用中は、仮想環境をアクティブにしておいてください。ターミナルを閉じて後で戻ってきた場合は、 npm start実行する前に、 source venv/bin/activateコマンドで仮想環境を再度アクティブにする必要があります。
🔌 MCP統合
このサーバーを Claude または他の LLM アシスタントで使用するには:
Claude Desktop の MCP 設定にサーバーを追加します。
{
"mcpServers": {
"ios-simulator": {
"command": "node",
"args": ["/path/to/mcp-server-simulator-ios-idb/dist/index.js"],
"env": {}
}
}
}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 つの主要コンポーネントで構成されています。
IDBManager : idb を介して iOS シミュレータと直接対話する低レベル コンポーネント。
NLParser : 自然言語の指示を解釈し、構造化されたコマンドに変換するコンポーネント。
MCPOrchestrator : パーサーと IDBManager 間の相互作用を調整する中心的なコンポーネント。
これらのコンポーネントはアダプタを介して接続されます。
ParserToOrchestrator : パーサーの結果をオーケストレーター コマンドに変換します。
OrchestratorToIDB : オーケストレーター コマンドを IDBManager 呼び出しに変換します。
🔌 MCP統合
このサーバーをモデルコンテキストプロトコルで使用するには:
MCP 設定にサーバーを追加します。
{
"mcpServers": {
"ios-simulator": {
"command": "node",
"args": ["/path/to/mcp-server-simulator-ios-idb/dist/index.js"],
"env": {}
}
}
}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 の規約に基づいてオープンソースとして利用できます。