run-on-deviceLABSCO SUMMARY
The build-test-read-the-failure loop runs from the chat window instead of the Xcode UI.
run-on-device covers the whole path from build to launch on hardware, including streamed logs and launch arguments, and simctl-manager covers the simulator side of the same question. Signing is reported by xcode-codesign-info rather than changed by it, so certificate work stays where it was. Everything is scoped to a projectPath you pass in, which makes several checkouts on one machine straightforward to keep apart.
What it is
A wrapper over the Xcode toolchain that exposes build, test, archive, code-signing, simulator and device-launch commands as tools.
What you get
- Builds of a named scheme against a destination and configuration, with an optional clean step and room for extra arguments.
- Test runs driven by a test plan with onlyTesting and skipTesting filters, writing a result bundle where you point it.
- Archive and export of a scheme through an exportOptionsPlist.
- Code-signing settings for a target, plus scheme and project details.
- Simctl for the simulators and Swift Package Manager for a package directory.
- Launch on real hardware with environment variables, launch arguments, streamed logs and a start-stopped option.
Requirements
Xcode installed on the machine and a project to point projectPath at; run-on-device also needs the device it will launch on.
Setup effort
One command — npx @devyhan/xcode-mcp -y
USE CASES
Chasing a test failure back to the scheme that produced it
Schemes first, then a targeted run: onlyTesting and skipTesting narrow the run to the failing set, and the result bundle is written where you can read it.
Getting a build onto real hardware and watching what it prints
Device runs need the build, the install and the log stream in one place; environment variables and launch arguments go in with the same call.
Producing a signed archive for distribution
Export needs the signing picture first; xcode-archive then takes the exportOptionsPlist and writes the export where you point it.
Building a Swift package the app depends on
Package work sits outside the app scheme, so it gets its own command surface in its own directory.
9 tools
Counted once with only startup setup. Other versions, modes or optional credentials may expose a different list.
simctl-managerswift-package-managerxcode-archivexcode-buildxcode-codesign-infoxcode-list-schemesxcode-project-infoxcode-testBEFORE YOU INSTALL
What to know first
Tools you get
9 tools when we connected.
Requires
- Node.js 16 or higher
- npm 6 or higher
- Xcode 14 or higher (for all features)
- Xcode 16 or higher (required for devicectl and real device features)
Where it runs
The documented client runs the server on your machine.
CONTEXT COST
Light Standing cost
Rated by the size of the 9 tool definitions that ride along on every turn, not by how many there are
INSTALLATION
Connect your client
Server setup
npx @devyhan/xcode-mcp -yMCP Clients
Claude Desktop
{
"mcpServers": {
"xcode-mcp": {
"command": "npx",
"args": [
"@devyhan/xcode-mcp",
"-y"
]
}
}
}