Ardupilot-mcp - open-source, offline log-diagnosis tool for ArduPilot (MCP server, looking for feedback)

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

I added your software to the long list of automated ArduPilot log analysis tools

I think that is better to prevent crashes by improving configuration and operational procedures, instead of figuring out why the expensive drone crashed :stuck_out_tongue:

Thank you Amilcar,

That is the my plan. I want to add this to your post :face_with_tongue: .

Thank you,
Best