Hi all,
I build drones (UAV/mechatronics background) and like a lot of you I’ve spent too many evenings scrolling through .bin logs by hand trying to work out why something fell out of the sky. So I built a tool to help, and it’s now open-source (MIT). I’d really value feedback from people here who read logs for a living.
What it is
ardupilot-mcp is a Model Context Protocol (MCP) server that diagnoses ArduPilot DataFlash (.bin) logs. You point an AI client at it — Claude Desktop, Cursor, VS Code, LM Studio, etc., including local open-source models — open a log, and ask in plain language: “why did it crash?” or “is the vibration OK?”. It answers in plain English, but every answer is grounded in a deterministic check engine with sourced thresholds, and it links the official ArduPilot wiki page for each finding. The goal was specifically to NOT let an LLM hallucinate numbers — the model explains; the check engine decides.
How it relates to existing tools: it’s not trying to replace Mission Planner’s Auto Analysis or the UAV Log Viewer, which are great and which I still use. The two differences are (a) the reasoning is conversational and you can ask follow-ups, and (b) it plugs into whatever AI client you already use via MCP, fully offline — the log never leaves your machine, and it’s strictly read-only (no vehicle actuation, no network).
I know the general view here (rightly) is ‘improve an existing tool before building a new one’ — I went the MCP route because I wanted the check engine to be reusable by any model/client rather than tied to one GUI, but I’m very open to the argument and to collaborating.
What it checks (16 checks)
- Flight dynamics: vibration, EKF health, GPS, power, attitude/control, RC loss, timing
- Config/setup: bad/anomalous params, calibration, wiring / silent sensors, pre-arm failures
- Physical reasoning: power margin and thrust-to-weight sanity
Validated against 40 real crash logs (Copter 3.2-4.6, Plane, QuadPlane, Heli, Rover).
A worked example (real log):
- Vibration: VibeZ clipping with peaks before the event → flagged, linked to the Vibration Damping wiki page.
- EKF: innovations spike / lane switch right before loss of control → flagged, linked to EKF Failsafe docs.
- Power: battery sag under high-throttle demand, computed thrust-to-weight margin near 1.2 → flagged as likely insufficient headroom.
- Plain-language summary: “Most likely a vibration-induced EKF/position-estimate failure, aggravated by a marginal power system.”
Every line carries the threshold it used and a doc link, so you can check its work.
Install
pip install ardupilot-mcp
or
uvx ardupilot-mcp
Repo (MIT, public): GitHub - furkanisikay/ardupilot-mcp: ArduPilot uçuş loglarını (.bin) teşhis eden deterministik MCP sunucusu — yapay zekâ açıklar, motor temellendirir. · GitHub
What I’m looking for
Testers and feedback — especially logs where it gets the diagnosis wrong, missing checks you’d want, and whether the thresholds match your real-world experience. Happy to help people get set up.
Thanks, and thanks to everyone whose forum crash threads I learned from while building this.
— Furkan