Skip to main content

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.

The simulator streams video

The simulator can push RTP/H.264 exactly as the aircraft does, so a viewer's whole video path can be developed and measured without a drone. It answers the handshake with arstream2_server_stream_port: 5004, sends nothing until ardrone3.MediaStreaming.VideoEnable arrives with 1, then streams from its own 5004 to whatever arstream2_client_stream_port the client named, and stops on a 0, on a link loss, or at shutdown.

python -m mcbebop.sim --video clip.h264                 # steady 30 fps
python -m mcbebop.sim --video clip.h264 --start-offset random --seed 7
python -m mcbebop.sim --video flight.rtpcap             # a real capture, replayed

MCBEBOP_SIM_VIDEO_SOURCE=clip.h264 does the same for connect(target="sim").

Two kinds of source, and they are different instruments:

Source Pacing Use it for
.h264 Annex-B elementary stream packetised here, steady frame rate does the decoder work, does the renderer work
.rtpcap capture off the aircraft the recorded inter-packet gaps, packet for packet latency and jitter, bursts, loss behaviour

Make the first from any video, at the resolution the aircraft streams:

ffmpeg -i anything.mp4 -t 10 -vf scale=856:480 -r 30 \
  -c:v libx264 -preset ultrafast -pix_fmt yuv420p -g 30 -f h264 clip.h264

-f h264 already writes Annex-B, so no bitstream filter is wanted; h264_mp4toannexb converts the other direction and ffmpeg rejects it here.

Make the second from a real drone. Start the recorder first, because RTP is connectionless and anything sent before the bind is gone, then enable video from a session that holds the ARSDK link:

python -m mcbebop.media.capture flight.rtpcap --seconds 30   # binds 55004

--start-offset random is worth knowing about. It begins mid-GOP, which is what a viewer switched on while the drone is already flying is handed, and --seed makes a failure repeatable. Parameter sets repeat about once a second on the packetised path, which is what lets a late joiner recover at all.

Install

uvx mcbebop
claude mcp add mcbebop -- uvx mcbebop

Licence

This package is MIT (LICENSE), and it vendors one third-party component: src/mcbebop/arsdk-xml/ is Parrot SA's own protocol definition, BSD-3-Clause (LICENSE-arsdk-xml). It ships in both the sdist and the wheel because nothing here can decode a single command without it. What that snapshot is and how it differs from upstream is recorded in arsdk-xml/PROVENANCE.md.

So the distribution as a whole is MIT AND BSD-3-Clause.

Metadata

Release files for mcbebop 2026.10.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for mcbebop 2026.10.2
File Size Uploaded
mcbebop-2026.10.2.tar.gz 116.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for mcbebop 2026.10.2
File Interpreter ABI Platform
mcbebop-2026.10.2-py3-none-any.whl Python 3 none any Details

Total release size: 253.8 kB

Release files / mcbebop-2026.10.2.tar.gz

Download URL mcbebop-2026.10.2.tar.gz
Size 116.2 kB
Tags Source
SHA-256 checksum
How to use checksums
4e05e638f2c9817c2f386f560a433430b3d090fe2643ecc74de6efa98cc8c996
BLAKE2b-256 checksum
How to use checksums
5712c1f9ef13545b6d2fd3508ca6834caaadb83ae49e7418838aec10c7d65993
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.3 {"installer":{"name":"uv","version":"0.11.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"EndeavourOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / mcbebop-2026.10.2-py3-none-any.whl

Download URL mcbebop-2026.10.2-py3-none-any.whl
Size 137.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
52ff9c2b956fb6fca7b069ef1a3f18eafd75f9bd5f504099978063699e5d2702
BLAKE2b-256 checksum
How to use checksums
b029cc222abdb846ce99d37613df85ec8eb0b0b66513ea1f132d587eb6771caa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.3 {"installer":{"name":"uv","version":"0.11.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"EndeavourOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

This release

2026.10.2 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page