Skip to main content
Glama
nemanjavlahovic

InstrumentsMCP

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.

Related MCP server: Shotter

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-shotprofile_cpu, profile_swiftui, profile_memory, profile_hitches, profile_launch, profile_energy, profile_leaks, profile_network

  • Scripted scenariosprofile_scenario records a trace while executing UI steps (tap, scroll, type, launch)

  • Interactivestart_profiling / stop_profiling for manual interaction

  • Health checkperformance_audit runs 5 templates and combines the results

  • Any templateprofile_raw handles 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

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
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

Install Server
A
license - permissive license
A
quality
B
maintenance

Maintenance

Maintainers
Response time
2dRelease cycle
4Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/nemanjavlahovic/instruments-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server