The packetiser is RFC 6184: single-NAL packets, FU-A fragmentation, and STAP-A aggregation for parameter sets and SEI. Pure stdlib, because the simulator ships in the package and cannot drag a media library behind it. A VCL NAL is never aggregated and interleaved mode is absent; the docstring says so rather than leaving it to be discovered. Parameter sets repeat rather than appearing once at the head of the stream, which is what the aircraft does and the only reason a viewer joining a flight already in progress can recover. A start offset, random with a controllable seed, exists to hand a decoder a stream that begins mid-GOP on purpose. Capture and replay is the other half, and the two are different instruments. The packetised path paces at a nominal frame rate, which proves a decoder and a renderer work. A replay reproduces the recorded inter-packet gaps packet for packet, which is what a latency or jitter measurement needs. The aircraft's packet-type mix cannot be derived from first principles: the measurement we have read only the outer header byte of each packet, so what its 740 FU-A packets carried is still unknown, and only a real capture settles it. The loop point is the one gap a file cannot describe. It is estimated from the capture's mean frame period rather than its median packet gap, which was the first thing tried and is wrong: with a dozen packets to a frame most gaps are intra-frame, so the stream looped a frame early every time.
mcbebop
An MCP server for the Parrot Bebop 2, so an agent can talk to the drone without anyone writing code for each question.
Parrot abandoned the Bebop line, but the aircraft is still a capable, cheap platform and its protocol is fully described by Parrot's own XML, which this package vendors. Every one of the 264 commands is reachable; nothing is hand-wrapped.
Status: in development. Not flight-tested. See the safety section.
What it talks to
| Interface | Notes |
|---|---|
| ARSDK3 over UDP | commands and telemetry; this package implements the protocol directly |
| ARStream2 | live H.264 video. The Bebop 2 serves no RTSP, despite what older libraries assume |
| FTP | media, flight plans, blackbox logs |
| Telnet | read-only shell, only after the drone's debug mode is enabled |
Safety
Commands are classified by consequence. Observing and configuring are open;
anything that can spin a motor or change the flight envelope refuses until
arm() is called with a reason, and re-locks on a timer and on disconnect.
Landing and Emergency are deliberately never locked, because refusing to
land an airborne aircraft is the more dangerous answer.
connect(target="sim") runs everything against a protocol-accurate simulator,
which is where anything involving motion should be rehearsed.
Install
uvx mcbebop
claude mcp add mcbebop -- uvx mcbebop
Credits
arsdk-xml/ is Parrot SA's own protocol definition, BSD-3-Clause. See
arsdk-xml/PROVENANCE.md.