Add it to Claude Code
claude mcp add mcardupilot -- uvx mcardupilotIt flies a SITL binary you have built yourself. Install and connect
Ask for a flight. Get one, and a straight answer about it.
One request, flown
Section titled “One request, flown”A headless Claude Code session, asked to fly ArduPilot’s stock quadplane on 3 October 2026. The request and the answer are word for word. Times are the autopilot’s own clock, which is why nothing leaves the ground until 50 s: the autopilot would not arm until its position estimate had aligned with GPS.
You asked
Using the mcardupilot tools, fly ArduPilot's stock quadplane for me. Take off vertically and climb to 10 m, then hover there for 15 seconds while a 6 m/s gusty wind blows from the west (seed 7, so it can be repeated), then land. Keep the flight's log. Afterwards read the log and tell me how the hover went: how high it really got, how hard the motors worked, how much current it drew, and anything the autopilot said that matters. Use idle pacing so your thinking doesn't change the flight. Reply with one short paragraph written for a person rather than an engineer, and nothing else: no tables, no headings, no extra sections.
The agent, on the autopilot's clock
- sim 10.2 sStarted a stock quadplane SITL on a free instance, with a 6 m/s west wind gusting on a repeatable seed, and idle pacing so time stands nearly still between its calls
- sim 49.7 sArmed in QLOITER once the position estimator had aligned with GPS (the autopilot refused until then)
- sim 50.0 to 58.1 sClimbed on the throttle until the height reached 10 m, centring the stick in that same instant
- sim 58.1 to 73.1 sHeld for exactly 15 seconds of simulated time in the gusts
- sim 73.1 to 97.5 sSwitched to QLAND and waited for touchdown and the automatic disarm
- after touchdownClosed the session, kept the flight's log, and read it back: phases, battery, motors and every message the autopilot logged
The agent answered
The quadplane took off into the westerly wind, and the hover was steady but a bit high: when I centred the throttle at 10 m the aircraft was still climbing at about 1.4 m/s, so the autopilot settled on roughly 11.3 m and held within about 20 cm of that for the full 15 seconds, topping out at 11.5 m, and it never drifted more than a metre or so from its spot despite gusts swinging the wind between about 4 and 7 m/s. The four lift motors worked moderately hard, averaging around 58 percent of full output and swinging between roughly 44 and 67 percent as the gusts hit, which showed up in the battery as a draw that wandered between about 34 and 50 amps at a steady 12.1 volts, with the whole flight using just under 500 mAh (about 6 watt-hours). The autopilot complained repeatedly before takeoff that it was "not using configured AHRS type" until its EKF3 estimator finished aligning with GPS about 38 seconds after boot, after which it armed cleanly, performed one yaw reset a few seconds into the climb, and logged no errors at all; the landing was gentle, touching down at about 0.5 m/s before it announced "Land complete" and disarmed itself. The log is kept as 20261003T213056Z-hover-10m-wind-west-6mps-seed7.BIN in the mcardupilot logs directory, and because the gusts used seed 7 the same flight can be replayed exactly.
Quoted as written. ArduPlane V4.8.0-dev (4c98c922), ArduPilot's stock quadplane in SITL.
| Phase | Times | Peakm | Currentavg, A | EnergyWh |
|---|---|---|---|---|
| Take-off and hover QLOITER | 23.6 | 11.5 | 42.5 | 3.39 |
| Landing QLAND | 24.3 | 11.3 | 31.4 | 2.58 |
| Whole flight | 47.9 | 11.5 | 5.97 |
Why the answer matches the flight
Section titled “Why the answer matches the flight”The agent never had to fly in real time. While it thought between requests, the server kept the simulator connected and paced so that almost no simulated time passed, and once the aircraft was down it read the autopilot’s own log back. That is how the answer can say 11.3 m when 10 m was asked for. The tutorial walks through a flight like this one, and the pump thread and sim time explains the pacing.