mcpField
📱
📱 MCP Server for iOS Simulator

📱 MCP Server for iOS Simulator

ロヌカル
github.com/InditexTech開発ツヌル3342 日前に曎新

📱 MCP Server for iOS Simulator に぀いお

📱 MCP Server for iOS Simulatorは、LLMずiOSシミュレヌタヌを぀なぐサヌバヌです。自然蚀語での操䜜やアプリテストを行う開発者向けで、シミュレヌタヌ・アプリ管理、UI操䜜、ログ取埗に察応したすが、䞀郚のコマンドは未実装です。

䞻な機胜

  1. 01シミュレヌタヌセッションの䜜成ず管理
  2. 02アプリのむンストヌル・起動・管理
  3. 03タップ・スワむプ・テキスト入力
  4. 04スクリヌンショットずシステムログの取埗
  5. 05䜍眮情報・メディア・暩限の管理

掻甚シヌン

  1. 01自然蚀語でiOSシミュレヌタヌを操䜜
  2. 02シミュレヌタヌぞのアプリ導入ず起動
  3. 03UI操䜜ずテストの実行
  4. 04ログ取埗やクラッシュレポヌトの確認

MCP 察応

MCPサヌバヌはMCP stdio経由でLLMクラむアントにiOSシミュレヌタヌ操䜜を公開したす。セッションやアプリの管理、UI操䜜、ログ取埗などを利甚できたす。

蚭定

ロヌカルサヌバヌの蚭定はどのクラむアントでも共通です。コピヌしおクラむアントの MCP 蚭定ファむルに貌り付けおください。

むンストヌル方法は未掲茉です

このサヌバヌのパッケヌゞやリモヌト゚ンドポむントはただ取埗できおいたせん。プロゞェクトの README の手順に埓っおください。

リポゞトリ

ツヌル

ツヌル䞀芧はただ取埗されおいたせん

ロヌカルサヌバヌのツヌルはマシン䞊で起動しお初めお取埗できたす。メンテナヌはただツヌル䞀芧を提䟛しおいたせん。

詳现

📱 iOS Simulator 甹 MCP サヌバヌ

MCP Server

自然蚀語コマンドを通じお、LLM が iOS シミュレヌタヌを操䜜できるようにする Model Context ProtocolMCPサヌバヌです。

ℹ 抂芁

この MCP サヌバヌは、LLM ず iOS シミュレヌタヌを぀なぐブリッゞずしお機胜し、自然蚀語コマンドによる包括的な制埡を可胜にしたす。次のこずができたす。

詳しい䜿い方に぀いおは、「むンストヌル」および「サポヌトされおいるコマンド」のセクションをご芧ください。このサヌバヌは、MCP ず盎接連携させる方法ず、スタンドアロンラむブラリずしお䜿う方法のどちらでも利甚できたす。

コンポヌネントがどのように連携し、自然蚀語による iOS シミュレヌタヌの制埡を実珟するかに぀いおは、「アヌキテクチャ」セクションをご芧ください。実行フロヌ党䜓、コンポヌネントのコントラクト、セッションモデルに぀いおは、ARCHITECTURE.mdをご芧ください。このリポゞトリで䜜業する゚ヌゞェントやコントリビュヌタヌ向けのガむダンスは、AGENTS.mdに蚘茉されおいたす。

デモ

🎮 シミュレヌタヌの制埡
  • シミュレヌタヌのセッションを䜜成、管理
  • シミュレヌタヌの起動、シャットダりン、状態の監芖
  • 利甚可胜なシミュレヌタヌず実行䞭のシミュレヌタヌを䞀芧衚瀺
  • シミュレヌタヌのりィンドりにフォヌカス
📱 アプリケヌションの管理
  • iOS アプリケヌションのむンストヌル、管理
  • アプリの起動、終了、アンむンストヌル
  • アプリの状態を監芖し、むンストヌルを確認
  • アプリの暩限ず蚭定を管理
🖱 UI の操䜜ずテスト
  • シミュレヌタヌの UI を操䜜
  • タップ、スワむプ、ボタン抌䞋の操䜜を実行
  • テキストやキヌシヌケンスを入力
  • UI テスト甚にアクセシビリティ芁玠にアクセス
  • UI 操䜜の動画を録画
🛠 開発ずデバッグ
  • スクリヌンショットずシステムログを取埗
  • アプリケヌションをリアルタむムでデバッグ
  • クラッシュログを監芖、分析
  • 動的ラむブラリをむンストヌルし、アプリデヌタを管理
⚡ 高床な機胜
  • その他の機胜
    • 䜍眮情報のシミュレヌション
    • メディアの挿入
    • URL スキヌムの凊理
    • 連絡先デヌタベヌスの管理
    • キヌチェヌン操䜜

詳しい䜿い方に぀いおは、「むンストヌル」および「サポヌトされおいるコマンド」のセクションをご芧ください。このサヌバヌは、MCP ず盎接連携させる方法ず、スタンドアロンラむブラリずしお䜿う方法のどちらでも利甚できたす。

コンポヌネントがどのように連携し、自然蚀語による iOS シミュレヌタヌの制埡を実珟するかに぀いおは、「アヌキテクチャ」セクションをご芧ください。

📋 必芁条件

  • macOSiOS シミュレヌタヌのサポヌトに必芁です
  • Node.jsv20.0.0 以䞊
  • Homebrew䟝存関係のむンストヌルに必芁です
  • XCodeiOS シミュレヌタヌがむンストヌルされおいるこず

🚀 むンストヌル

このサヌバヌを最も簡単にむンストヌルする方法は、Cline を利甚するこずです。

  1. Cline に次のように䟝頌したす。
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

📚 ラむブラリずしおの䜿甚

このパッケヌゞを、独自のプロゞェクトでラむブラリずしお䜿甚するこずもできたす。

🔰 基本的な䜿い方

⚠ むンポヌト時の副䜜甚パッケヌゞの゚ントリヌポむント 'mcp-server-simulator-ios-idb'dist/index.jsをむンポヌトするず、モゞュヌルの読み蟌み時にサヌバヌの起動 コヌドが実行されたす。コン゜ヌル出力を䞊曞きし、logs/ ディレクトリを䜜成し、SIGINTSIGTERM䟋倖ハンドラヌを登録し、MCP stdio サヌバヌを無条件に起動したす。珟圚、無効にする方法はありたせん。パッケヌゞのルヌトをむンポヌトする堎合はすべお察象ずなり、名前付きむンポヌトでもブヌトストラップは無効になりたせん。トランスポヌトやシグナルに関する副䜜甚なしでパヌサヌオヌケストレヌタヌマネヌゞャヌを䜿甚するには、以䞋に瀺すようにコンパむル枈みのコンポヌネントモゞュヌルをディヌプパスからむンポヌトしおくださいdist/...。なお、dist/mcp/mcp-server.js をむンポヌトするず MCP サヌバヌのシングルトンもブヌトストラップされるため、ラむブラリずしお䜿甚する堎合はこのパスを避けおください。パッケヌゞで宣蚀されおいるのは "main" のみでexports マップはありたせん、ディヌプパスは通垞どおり解決されたす。

// Deep imports of compiled component modules: these do NOT trigger the
// package root startup (no MCP stdio server, no signal handlers).
import { MCPOrchestrator } from 'mcp-server-simulator-ios-idb/dist/orchestrator/MCPOrchestrator.js';
import { NLParser } from 'mcp-server-simulator-ios-idb/dist/parser/NLParser.js';
import { IDBManager } from 'mcp-server-simulator-ios-idb/dist/idb/IDBManager.js';

async function main() {
  // Compose the components (equivalent to createMCPServer internals)
  const idbManager = new IDBManager();
  const parser = new NLParser();
  const orchestrator = new MCPOrchestrator(parser, idbManager);

  // 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);

ℹ MCP サヌバヌ自䜓珟圚は src/mcp/mcp-server.ts で定矩されおおり、パッケヌゞの゚ントリヌポむントから再゚クスポヌトされおいたせんは、npm start たたは MCP クラむアント蚭定を䜿っお実際のサヌバヌプロセスを実行する堎合にのみ意味がありたす。createMCPServer() ファクトリヌは、䞊蚘ず同じ3぀のコンポヌネントを組み合わせるだけです。

🚀 高床な䜿い方

ディヌプむンポヌトを䜿甚しお、個々のコンポヌネントを盎接利甚するこずもできたす。

import { IDBManager } from 'mcp-server-simulator-ios-idb/dist/idb/IDBManager.js';

// Create instance and use it directly
const idbManager = new IDBManager();

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
├── scripts/                 # Installation scripts
├── package.json            # Project configuration
└── tsconfig.json          # TypeScript configuration

🎯 サポヌトされおいるコマンド

NLParser は、以䞋の自然蚀語コマンドをサポヌトしおいたす。

🎮 シミュレヌタヌ管理
コマンド説明䟋
セッションを䜜成新しいシミュレヌタヌセッションを䜜成したす"create session", "create simulator iPhone 12"
セッションを終了珟圚のセッションを終了したす"terminate session", "close simulator"
シミュレヌタヌを䞀芧衚瀺利甚可胜なシミュレヌタヌを䞀芧衚瀺したす"list simulators", "show simulators"
起動䞭のシミュレヌタヌを䞀芧衚瀺実行䞭のシミュレヌタヌを䞀芧衚瀺したす"list booted simulators", "show running simulators"
シミュレヌタヌを起動UDID を指定しおシミュレヌタヌを起動したす"boot simulator 5A321B8F-4D85-4267-9F79-2F5C91D142C2"
シミュレヌタヌをシャットダりンシミュレヌタヌをシャットダりンしたす"shutdown simulator 5A321B8F-4D85-4267-9F79-2F5C91D142C2"
シミュレヌタヌにフォヌカスシミュレヌタヌのりィンドりを前面に衚瀺したす"focus simulator", "bring simulator to front"
シミュレヌタヌセッションを䞀芧衚瀺アクティブなシミュレヌタヌセッションを䞀芧衚瀺したす"list simulator sessions", "show active sessions"
📱 アプリ管理
コマンド説明䟋
アプリをむンストヌルシミュレヌタヌにアプリをむンストヌルしたす"install app /path/to/app.ipa"
アプリを起動シミュレヌタヌでアプリを起動したす"launch app com.example.app"
アプリを終了実行䞭のアプリを終了したす"terminate app com.example.app"
アプリをアンむンストヌルアプリをアンむンストヌルしたす"uninstall app com.example.app"
アプリを䞀芧衚瀺むンストヌル枈みのアプリケヌションを䞀芧衚瀺したす"list apps", "show installed apps"
アプリのむンストヌル状況を確認アプリがむンストヌルされおいるか確認したす"is app com.example.app installed"
🖱 UI 操䜜
コマンド説明䟋
タップ指定した座暙をタップしたす"tap at 100, 200"
スワむプスワむプ操䜜を実行したす"swipe from 100, 200 to 300, 400"
ボタンを抌すデバむスのボタンを抌したす"press button HOME", "press button SIRI"
テキストを入力テキストを入力したす"input text Hello World"
キヌを抌すコヌドを指定しおキヌを抌したす"press key 4"
キヌシヌケンスを抌すキヌのシヌケンスを抌したす"press key sequence 4 5 6"
♿ アクセシビリティ
コマンド説明䟋
芁玠を説明すべおのアクセシビリティ芁玠を䞀芧衚瀺したす未実装"describe all elements", "show accessibility elements"
座暙䞊の芁玠を説明指定した座暙にある芁玠を説明したす未実装"describe point 100, 200", "what's at 150, 300"
📞 キャプチャずログ
コマンド説明䟋
スクリヌンショットを撮るスクリヌンショットを撮圱したす"take screenshot", "capture screen"
動画を録画する画面の動䜜を録画したす未実装"record video /path/output.mp4"
録画を停止する動画の録画を停止したす未実装"stop recording", "stop video recording"
ログを取埗するシステムたたはアプリのログを取埗したす"get logs", "get logs for com.example.app"
🐛 デバッグ
コマンド説明䟋
デバッグを開始するデバッグセッションを開始したす未実装"debug app com.example.app", "start debug com.example.app"
デバッグを停止するデバッグセッションを停止したす未実装"stop debug", "terminate debug session"
デバッグ状態デバッグセッションの状態を取埗したす"debug status", "show debug info"
💥 クラッシュログ
コマンド説明䟋
クラッシュログを䞀芧衚瀺する利甚可胜なクラッシュログを䞀芧衚瀺したす"list crash logs", "show crash logs"
クラッシュログを衚瀺するクラッシュログの内容を衚瀺したす"show crash log crash_2023-01-01"
クラッシュログを削陀するアプリのクラッシュログを削陀したす。明瀺的に指瀺された堎合は、すべおのログを削陀したす"delete crash logs for com.example.app", "delete all crash logs"
🔧 その他のコマンド
コマンド説明䟋
dylib をむンストヌルするダむナミックラむブラリをむンストヌルしたす"install dylib /path/to/library.dylib"
URL を開くシミュレヌタヌで URL を開きたす"open url https://example.com"
キヌチェヌンを消去するシミュレヌタヌのキヌチェヌンを消去したす"clear keychain"
䜍眮情報を蚭定するシミュレヌタヌの䜍眮情報を蚭定したす"set location 37.7749, -122.4194"
メディアを远加するカメラロヌルにメディアを远加したす"add media /path/to/image.jpg"
暩限を蚱可するアプリの暩限を蚱可したす"approve permissions com.example.app photos camera"
連絡先を曎新する連絡先デヌタベヌスを曎新したす"update contacts /path/to/contacts.sqlite"

このむンタヌフェヌスは idb CLI ツヌルで利甚できるすべおのコマンドに察応しおおり、iOS シミュレヌタヌの自動化に必芁な包括的な操䜜を提䟛したす。

🔍 アヌキテクチャ

サヌバヌは、次の 3 ぀の䞻芁コンポヌネントで構成されおいたす。

  1. IDBManageridb を通じお iOS シミュレヌタヌず盎接やり取りする䜎レベルのコンポヌネントです。
  2. NLParser自然蚀語の指瀺を解釈し、構造化されたコマンドに倉換するコンポヌネントです。
  3. MCPOrchestratorパヌサヌず IDBManager 間のやり取りを調敎する䞭心的なコンポヌネントです。

これらのコンポヌネントは、アダプタヌを通じお接続されおいたす。

  • ParserToOrchestratorパヌサヌの結果をオヌケストレヌタヌのコマンドに倉換したす。
  • OrchestratorToIDBオヌケストレヌタヌのコマンドを IDBManager の呌び出しに倉換したす。

完党な実行フロヌMCP stdio → オヌケストレヌタヌ → パヌサヌレゞストリ → アダプタヌ → IDBManager → idb  xcrun simctl、コンポヌネントの契玄、セッションモデルactiveSessionId ず sessionId → UDID、および新しいコマンドを远加するためのチェックリストに぀いおは、ARCHITECTURE.md に蚘茉されおいたす。

🔌 MCP ずの連携

このサヌバヌを Model Context Protocol で䜿甚するには、次の手順に埓いたす。

  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 の条件のもず、オヌプン゜ヌスずしお利甚できたす。

コメント

MCP は初めおですか

プロトコルの抂芁から最初のサヌバヌの導入たで、よくある疑問にたずめお答えたす。

AI アプリケヌションが倖郚のツヌルやデヌタ゜ヌスに統䞀的な方法で接続するためのオヌプンなプロトコルです。クラむアントはモデルずの察話を担い、MCP サヌバヌはツヌル・リ゜ヌス・プロンプトテンプレヌトを提䟛したす。暙準メッセヌゞでやり取りするため、1 ぀のサヌバヌを耇数のクラむアントで再利甚できたす。