Instruments MCP Server
MCP server for Xcode Instruments β AI agents get structured performance profiling (CPU, SwiftUI, memory, hitches) instead of raw xctrace XML
Ask AI about Instruments MCP Server
Powered by Claude Β· Grounded in docs
I know everything about Instruments MCP Server. Ask me about installation, configuration, usage, or troubleshooting.
0/500
Reviews
Documentation
InstrumentsMCP
Profiler data for agents.
MCP server that wraps Xcode Instruments. Record traces, automate the simulator, and return structured profiling data your coding agent can act on.
Quick Start
Requirements: macOS, Xcode, Node.js >= 20
Add to your project's .mcp.json:
{
"mcpServers": {
"instruments": {
"command": "npx",
"args": ["-y", "instrumentsmcp@latest"]
}
}
}
Or run directly: npx instrumentsmcp@latest
Works with Claude Code, Cursor, Windsurf, and any MCP client.
What It Does
Ask your agent to profile. It records a trace, drives the simulator, and returns structured results:
=== Time Profiler === severity: [WARNING] samples: 1587
Hotspots:
UpdateStack::update() (AttributeGraph) 42.3ms self βββββββββββββββ 12.1%
FeedViewModel.loadItems() (MyApp) 28.1ms self βββββββββββββββ 8.0%
Main thread blockers:
[WARNING] FeedViewModel.loadItems() 28.1ms
35 tools across profiling, UI automation, simulator control, and trace analysis. Full tool list β
Profiling
- One-shot β
profile_cpu,profile_swiftui,profile_memory,profile_hitches,profile_launch,profile_energy,profile_leaks,profile_network - Scripted scenarios β
profile_scenariorecords a trace while executing UI steps (tap, scroll, type, launch) - Interactive β
start_profiling/stop_profilingfor manual interaction - Health check β
performance_auditruns 5 templates and combines the results - Any template β
profile_rawhandles templates without a dedicated parser
UI Automation
Drive the simulator programmatically: ui_tap, ui_type, ui_swipe, ui_gesture, ui_snapshot, ui_long_press. Powered by AXe CLI (brew tap cameroncooke/axe && brew install axe).
Simulator Control
Launch/terminate apps, open deep links, push notifications, take screenshots, set location, toggle dark mode.
Analysis
Re-analyze saved traces, drill into specific functions, track regressions with baselines, generate Markdown reports.
CLI Mode
Record traces from the terminal without an MCP client:
npx instrumentsmcp record --process MyApp
npx instrumentsmcp record --process MyApp --template Allocations
Ctrl+C to stop. Feed the trace to your agent for analysis.
Compatibility
- Xcode Instruments (xctrace) 15.x through 26.x
- Handles xctrace 26 Deferred recording mode automatically
- Device identifiers (
booted, device name, UDID) resolved automatically
Docs
Architecture
src/
βββ index.ts # MCP server entry + CLI router
βββ cli.ts # CLI mode (instrumentsmcp record)
βββ tools/
β βββ profile.ts # One-shot profiling tools
β βββ simulator.ts # Simulator control + start/stop + scenarios
β βββ analyze.ts # Trace analysis + symbolication + audit
β βββ baseline.ts # Baseline comparison + report generation
β βββ investigate.ts # Drill-down + trace listing
β βββ ui.ts # UI automation (snapshot, tap, type, swipe)
β βββ list.ts # Discovery tools (status, templates, devices)
βββ parsers/ # Template-specific XMLβJSON parsers
βββ utils/ # xctrace, simctl, AXe wrappers + shared helpers
Build from source
git clone https://github.com/nemanjavlahovic/instruments-mcp-server.git
cd instruments-mcp-server
npm install && npm run build
Point your MCP client to dist/index.js.
License
MIT
