crashdx — Claude Code MCP server: .ips crash diagnosis
Reads Apple .ips crash reports, uses dSYMs for symbolication, and ranks likely causes with evidence you can trace back to the report.
Open on GitHubWhat crashdx does
crashdx processes Apple .ips reports and extracts signals from watchdog data, jetsam records, register and memory state, exceptions, and lastExceptionBacktrace. It compares possible causes instead of stopping at a symbolicated stack trace. Each supporting fact points to a location in the original JSON report.
The project includes the Swift library CrashDXCore, the crashdx CLI, and the crashdx-mcp server, all backed by the same engine. The engine makes no LLM calls; it returns facts, ranked interpretations, and follow-up checks. When the leading explanation is not clearly supported, the result stays inconclusive and lists the competing candidates. App frames remain only partly symbolicated without dSYMs.
What it helps with
- parse an Apple
.ipscrash report - symbolicate app frames with a dSYM
- rank competing crash hypotheses
- trace evidence back to the raw report
- separate a strong diagnosis from an inconclusive result
Example prompts for the agent
- Analyze
crash.ipsand explain the most likely cause. - Use
crash.ipswithMyApp.dSYMand cite the facts supporting the diagnosis. - List the competing hypotheses for this report and what would distinguish them.
How to install crashdx
Install
The MCP registry has no launch command for it: see the repository README
Step by step, with commands for each platform: How to add an MCP server to Claude Code, Codex, Cursor, VS Code, Gemini CLI and more
Questions about crashdx
How do I install crashdx in Claude Code?
Connect crashdx-mcp to Claude Code as an MCP server. Then provide an .ips report and its dSYM for analysis.
What does crashdx do?
It parses Apple crash reports, combines symbolication with rule-based evidence extraction, and returns a ranked diagnosis with traceable support.
Does crashdx need a dSYM?
A dSYM is used to symbolicate application frames. Without one, some frames appear as no_dsym, leaving the diagnosis with less app-level detail.