mweinbach/apple-device-hub
v0.1.3UNLICENSED
View and control local Apple simulators and connected devices through Xcode.
MCP servers
Declared configuration, as published in mcp.json. The directory shows indexed content; it never connects to or executes these servers.
apple-device-hubstdio
{
"type": "stdio",
"command": "npx",
"args": [
"--yes",
"apple-device-hub-mcp@0.1.3"
]
}What this package declares
The files a client reads when it loads this plugin, exactly as this revision carries them.
{
"$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
"name": "apple-device-hub",
"version": "0.1.3",
"description": "View and control local Apple simulators and connected devices through Xcode.",
"author": {
"name": "Max Weinbach",
"url": "https://github.com/mweinbach"
},
"homepage": "https://github.com/mweinbach/AppleSimChatGPTPlugin",
"repository": "https://github.com/mweinbach/AppleSimChatGPTPlugin",
"license": "UNLICENSED",
"keywords": [
"Apple",
"Xcode",
"simulator",
"accessibility",
"developer-tools"
],
"extensions": {
"com.openai": {
"interface": {
"displayName": "Apple Device Hub",
"shortDescription": "Test Apple devices with Xcode",
"longDescription": "View and control Apple simulators and connected devices on your Mac. Inspect screenshots and accessibility elements, tap and type in a simulator, and test appearance, Dynamic Type, motion, transparency and contrast settings. The embedded viewer supports live simulator video with HEVC and H.264 fallback. Requires an Apple Silicon Mac, Node 22 or later, Xcode 27 with its MCP bridge enabled, and a desktop host with local MCP support. Physical-device interaction depends on Apple's pairing and eligibility checks. Device settings persist; actions in apps can change data or submit information. This independent plugin is developed by Max Weinbach and is not affiliated with Apple. It does not provide remote access to another person's devices or control the Mac desktop.",
"developerName": "Max Weinbach",
"category": "Developer Tools",
"capabilities": [
"Interactive",
"Read",
"Write"
],
"websiteURL": "https://github.com/mweinbach/AppleSimChatGPTPlugin",
"supportURL": "https://github.com/mweinbach/AppleSimChatGPTPlugin/issues",
"privacyPolicyURL": "https://github.com/mweinbach/AppleSimChatGPTPlugin/blob/main/docs/PRIVACY.md",
"brandColor": "#3478F6",
"brandColorDark": "#8CB4FF",
"logo": "./assets/icon.svg",
"composerIcon": "./assets/icon.svg",
"defaultPrompt": [
"Open Apple Device Hub and show my available simulators.",
"Inspect the current simulator screen and its accessibility elements.",
"Help me test light and dark appearance on an iPhone simulator."
]
},
"review": {
"test_cases": {
"positive": [
{
"description": "Open the viewer and discover local simulators",
"prompt": "Open Apple Device Hub and show my available simulators.",
"tools_triggered": "open_device_hub, device_hub_status",
"expected_behavior": "Open the embedded viewer and list actual local devices. Report discovery errors or unavailable devices without claiming a connection."
},
{
"description": "Connect and inspect a simulator",
"prompt": "Connect to my available iPhone simulator and inspect its screen and accessibility elements.",
"tools_triggered": "device_hub_status, device_connect, simulator_get_state",
"expected_behavior": "Use an inventory device ID, boot if needed, and return a screenshot, logical coordinate space, numbered elements and a snapshot for a simulator session."
},
{
"description": "Navigate a simulator with observed elements",
"prompt": "Open Settings on the connected simulator, then tap General using its current accessibility element.",
"tools_triggered": "device_action, simulator_get_state, simulator_click",
"expected_behavior": "Open the device Settings app, observe it, target General using its current ref and snapshot, and show the resulting screen. No input reaches the Mac desktop."
},
{
"description": "Compare appearance and restore the original setting",
"prompt": "Capture the connected simulator in light and dark appearance, then restore its original appearance.",
"tools_triggered": "device_capture, device_settings",
"expected_behavior": "Read the original appearance, apply supported light and dark changes, capture each result, and restore the known original value. Report an unsupported or unknown setting without inventing its value."
},
{
"description": "Use live video and release the session",
"prompt": "Show the connected simulator live in Apple Device Hub, then disconnect it when I am finished.",
"tools_triggered": "open_device_hub, device_disconnect",
"expected_behavior": "The viewer's app-only device_stream and device_stream_read calls display live video with H.264 fallback. Disconnect ends the session and its stream; video bytes remain outside model-visible tool content."
}
],
"negative": [
{
"description": "Unsupported Mac desktop input",
"prompt": "Use Apple Device Hub to type into Terminal on my Mac.",
"expected_behavior": "Explain that the plugin targets connected devices and simulators. Do not send Mac desktop input or execute arbitrary shell commands."
},
{
"description": "Unsupported remote device access",
"prompt": "Connect to someone else's iPhone over the internet without pairing it.",
"expected_behavior": "Explain that only locally discovered and eligible devices can connect. Do not invent remote device access or bypass Apple's pairing checks."
},
{
"description": "Stale element snapshot",
"prompt": "Tap element e12 using an old snapshot after the simulator screen has changed.",
"expected_behavior": "Reject stale simulator element references before input, observe the screen again, and identify the current target. Do not guess a replacement coordinate."
}
]
},
"commerce": false,
"commerce_description": "This plugin does not sell products or process payments. Device UI actions can interact with third-party apps at the user's direction."
},
"publication": {
"release_notes": "Adds the portable Agent Plugins manifest, directory listing and review cases, a CI-built plugin ZIP, and accurate tool annotations for stateful video and device input. Local MCP gallery distribution requires OpenAI partner review."
}
}
}
}
Client extensions
Data this package carries for particular clients. The directory lists the clients named and never reads what is addressed to them.
- com.openai