Skip to main content

MCP server for controlling KY UFO WiFi drones from Claude

Project description

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: connectcalibratetake_offmove(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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

morph_pilot-1.0.0-py3-none-any.whl (17.6 kB view details)

Uploaded Python 3

File details

Details for the file morph_pilot-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: morph_pilot-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 17.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.12

File hashes

Hashes for morph_pilot-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 343996412fb295b15a9a370bb99f76736c0e0fd31d509f904e3d77f3c9156311
MD5 aaab078b616c52f7766c7faf642ad3bf
BLAKE2b-256 6ca8426ac8bd259a0aaa93b139a1db4b31a665523e629dda5014c79c72fa6282

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page