Skip to main content

morph-pilot

MCP server that lets Claude control a KY UFO WiFi drone — fly it, move it, photograph with it, and capture live camera frames for vision AI.

Part of the morph-sense toolkit.


Hardware

  • Drone: KY UFO (cooingdv protocol) — widely available under many brand names
  • Connection: Connect your laptop to the drone's WiFi AP (192.168.1.1)
  • Camera: RTSP stream at rtsp://192.168.1.1:7070/webcam

Install

pip install morph-pilot

Or run directly from source:

git clone https://github.com/cklam12345/morphDrone
cd morphDrone
pip install opencv-python

Wire up Claude Code

Add to your project's .claude/settings.json:

{
  "mcpServers": {
    "drone": {
      "command": "morph-pilot"
    }
  }
}

Or if running from source:

{
  "mcpServers": {
    "drone": {
      "command": "python3",
      "args": ["/path/to/morphDrone/mcp/drone_server.py"]
    }
  }
}

Restart Claude Code — the drone tools will appear automatically.


Tools

Tool Description
connect Connect to drone and start heartbeat. Call first.
calibrate Calibrate gyro — drone must be on a flat surface. Wait 5s before takeoff.
take_off Toggle takeoff. Drone rises to hover altitude.
land Toggle land. Drone descends and cuts motors.
move Move on any axis. Values −100 to 100, duration in seconds.
emergency_stop Instant motor cut-off. Drone drops — emergencies only.
photograph Trigger onboard camera shutter.
videotape Toggle onboard video recording.
capture_frame Grab a JPEG frame from the live RTSP stream. Returns local file path.

move axis reference

Axis Negative (−100) Positive (+100)
roll Left Right
pitch Forward Backward
throttle Up Down
yaw Rotate left Rotate right

Note: pitch and throttle are hardware-inverted on KY UFO — morph-pilot handles this automatically.


Example conversation

"Connect to the drone, calibrate, take off, fly forward for 2 seconds, then land."

Claude will call: connect → calibrate → take_off → move(pitch=-50, duration=2) → land

"Capture a frame and tell me what the drone sees."

Claude will call: capture_frame → reads /tmp/drone_frame.jpg → describes the image.


Network setup

Address Purpose
192.168.1.1:7099 UDP Flight commands
192.168.1.1:7070 TCP RTSP camera stream
192.168.1.101 Required local bind address

License

MIT

Metadata

Release files for morph-pilot 1.0.0

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

Built distribution (wheel)

Table of built distributions (wheels) for morph-pilot 1.0.0
File Interpreter ABI Platform
morph_pilot-1.0.0-py3-none-any.whl Python 3 none any Details

Release files / morph_pilot-1.0.0-py3-none-any.whl

Download URL morph_pilot-1.0.0-py3-none-any.whl
Size 17.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
343996412fb295b15a9a370bb99f76736c0e0fd31d509f904e3d77f3c9156311
BLAKE2b-256 checksum
How to use checksums
6ca8426ac8bd259a0aaa93b139a1db4b31a665523e629dda5014c79c72fa6282
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.10.12

Release history Release notifications | RSS feed

This release

1.0.0 This release

1 release file

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