ð± MCP Server for iOS Simulator
ããŒã«ã«ð± MCP Server for iOS Simulator ã«ã€ããŠ
ð± MCP Server for iOS Simulatorã¯ãLLMãšiOSã·ãã¥ã¬ãŒã¿ãŒãã€ãªããµãŒããŒã§ããèªç¶èšèªã§ã®æäœãã¢ããªãã¹ããè¡ãéçºè åãã§ãã·ãã¥ã¬ãŒã¿ãŒã»ã¢ããªç®¡çãUIæäœããã°ååŸã«å¯Ÿå¿ããŸãããäžéšã®ã³ãã³ãã¯æªå®è£ ã§ãã
äž»ãªæ©èœ
- 01ã·ãã¥ã¬ãŒã¿ãŒã»ãã·ã§ã³ã®äœæãšç®¡ç
- 02ã¢ããªã®ã€ã³ã¹ããŒã«ã»èµ·åã»ç®¡ç
- 03ã¿ããã»ã¹ã¯ã€ãã»ããã¹ãå ¥å
- 04ã¹ã¯ãªãŒã³ã·ã§ãããšã·ã¹ãã ãã°ã®ååŸ
- 05äœçœ®æ å ±ã»ã¡ãã£ã¢ã»æš©éã®ç®¡ç
掻çšã·ãŒã³
- 01èªç¶èšèªã§iOSã·ãã¥ã¬ãŒã¿ãŒãæäœ
- 02ã·ãã¥ã¬ãŒã¿ãŒãžã®ã¢ããªå°å ¥ãšèµ·å
- 03UIæäœãšãã¹ãã®å®è¡
- 04ãã°ååŸãã¯ã©ãã·ã¥ã¬ããŒãã®ç¢ºèª
MCP 察å¿
MCPãµãŒããŒã¯MCP stdioçµç±ã§LLMã¯ã©ã€ã¢ã³ãã«iOSã·ãã¥ã¬ãŒã¿ãŒæäœãå ¬éããŸããã»ãã·ã§ã³ãã¢ããªã®ç®¡çãUIæäœããã°ååŸãªã©ãå©çšã§ããŸãã
èšå®
ããŒã«ã«ãµãŒããŒã®èšå®ã¯ã©ã®ã¯ã©ã€ã¢ã³ãã§ãå ±éã§ããã³ããŒããŠã¯ã©ã€ã¢ã³ãã® MCP èšå®ãã¡ã€ã«ã«è²Œãä»ããŠãã ããã
ãã®ãµãŒããŒã®ããã±ãŒãžããªã¢ãŒããšã³ããã€ã³ãã¯ãŸã ååŸã§ããŠããŸããããããžã§ã¯ãã® README ã®æé ã«åŸã£ãŠãã ããã
ããŒã«
ããŒã«ã«ãµãŒããŒã®ããŒã«ã¯ãã·ã³äžã§èµ·åããŠåããŠååŸã§ããŸããã¡ã³ãããŒã¯ãŸã ããŒã«äžèЧãæäŸããŠããŸããã
詳现
ð± iOS Simulator çš MCP ãµãŒããŒ
èªç¶èšèªã³ãã³ããéããŠã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 ãå©çšããããšã§ãã
- Cline ã«æ¬¡ã®ããã«äŸé ŒããŸãã
Add this mcp to cline https://github.com/InditexTech/mcp-server-simulator-ios-idb
- 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
ã€ã³ã¹ããŒã«ããã»ã¹ã§ã¯ã次ã®åŠçãèªåçã«è¡ãããŸãã
- 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
ð ã©ã€ãã©ãªãšããŠã®äœ¿çš
ãã®ããã±ãŒãžããç¬èªã®ãããžã§ã¯ãã§ã©ã€ãã©ãªãšããŠäœ¿çšããããšãã§ããŸãã
ð° åºæ¬çãªäœ¿ãæ¹
â ïž ã€ã³ããŒãæã®å¯äœçšïŒããã±ãŒãžã®ãšã³ããªãŒãã€ã³ã ïŒ
'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 ã€ã®äž»èŠã³ã³ããŒãã³ãã§æ§æãããŠããŸãã
- IDBManagerïŒidb ãéã㊠iOS ã·ãã¥ã¬ãŒã¿ãŒãšçŽæ¥ããåãããäœã¬ãã«ã®ã³ã³ããŒãã³ãã§ãã
- NLParserïŒèªç¶èšèªã®æç€ºãè§£éããæ§é åãããã³ãã³ãã«å€æããã³ã³ããŒãã³ãã§ãã
- MCPOrchestratorïŒããŒãµãŒãš IDBManager éã®ããåãã調æŽããäžå¿çãªã³ã³ããŒãã³ãã§ãã
ãããã®ã³ã³ããŒãã³ãã¯ãã¢ããã¿ãŒãéããŠæ¥ç¶ãããŠããŸãã
- ParserToOrchestratorïŒããŒãµãŒã®çµæããªãŒã±ã¹ãã¬ãŒã¿ãŒã®ã³ãã³ãã«å€æããŸãã
- OrchestratorToIDBïŒãªãŒã±ã¹ãã¬ãŒã¿ãŒã®ã³ãã³ãã IDBManager ã®åŒã³åºãã«å€æããŸãã
å®å
šãªå®è¡ãããŒïŒMCP stdio â ãªãŒã±ã¹ãã¬ãŒã¿ãŒ â ããŒãµãŒïŒã¬ãžã¹ã㪠â ã¢ããã¿ãŒ â IDBManager â idb ïŒ xcrun simctlïŒãã³ã³ããŒãã³ãã®å¥çŽãã»ãã·ã§ã³ã¢ãã«ïŒactiveSessionId ãš sessionId â UDIDïŒãããã³æ°ããã³ãã³ãã远å ããããã®ãã§ãã¯ãªã¹ãã«ã€ããŠã¯ãARCHITECTURE.md ã«èšèŒãããŠããŸãã
ð MCP ãšã®é£æº
ãã®ãµãŒããŒã Model Context Protocol ã§äœ¿çšããã«ã¯ãæ¬¡ã®æé ã«åŸããŸãã
- 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 ã®æ¡ä»¶ã®ããšããªãŒãã³ãœãŒã¹ãšããŠå©çšã§ããŸãã
ã³ã¡ã³ã
MCP ã¯åããŠã§ããïŒ
ãããã³ã«ã®æŠèŠããæåã®ãµãŒããŒã®å°å ¥ãŸã§ãããããçåã«ãŸãšããŠçããŸãã
AI ã¢ããªã±ãŒã·ã§ã³ãå€éšã®ããŒã«ãããŒã¿ãœãŒã¹ã«çµ±äžçãªæ¹æ³ã§æ¥ç¶ããããã®ãªãŒãã³ãªãããã³ã«ã§ããã¯ã©ã€ã¢ã³ãã¯ã¢ãã«ãšã®å¯Ÿè©±ãæ ããMCP ãµãŒããŒã¯ããŒã«ã»ãªãœãŒã¹ã»ããã³ãããã³ãã¬ãŒããæäŸããŸããæšæºã¡ãã»ãŒãžã§ããåãããããã1 ã€ã®ãµãŒããŒãè€æ°ã®ã¯ã©ã€ã¢ã³ãã§åå©çšã§ããŸãã