protocol/types.py and arsdk/types.py are the interfaces the parallel streams build against: command/arg/enum/expectation specs and the safety tiers on one side, frame encoding and the buffer conventions on the other. Logging goes to stderr throughout, since stdout carries JSON-RPC. That is also why this package will speak ARSDK itself rather than through pyparrot, which prints from its receive thread.
44 lines
1.5 KiB
Markdown
44 lines
1.5 KiB
Markdown
# 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
|
|
|
|
```bash
|
|
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`.
|