mavlink/MAVSDK-Python

MAVSDK client for Python.

What it solves

MAVSDK-Python lets Python developers control drones and other MAVLink-based vehicles without writing low-level MAVLink code. It provides an asyncio-based Python API that communicates with a C++ backend, so you can send commands like takeoff and land from a simple Python script.

How it works

The wrapper is a gRPC client that talks to a gRPC server written in C++ (the "backend" or mavsdk_server). Most of the Python code is automatically generated from proto files (MAVSDK-Proto). When you connect with await drone.connect(), the package automatically starts an embedded mavsdk_server on port 50051 by default, unless you specify a different server address. You can also run mavsdk_server manually and connect to it, which is useful on platforms where the embedded binary doesn't work (like older Raspberry Pi).

Who it’s for

Python developers who want to control drones, ground stations, or other MAVLink devices using a high-level, asynchronous API. It's for anyone using MAVSDK who prefers Python over the native C++ API.

Highlights

  • Auto-generated from proto definitions – the API is always in sync with the official MAVSDK protocol.
  • Async/await support – requires Python 3.7+ and uses asyncio for non-blocking operations.
  • Bundled server – mavsdk_server is included and started automatically upon connection.
  • Rename to mavsdk-grpc – the package moved from mavsdk to mavsdk-grpc on PyPI; the old name now refers to a different native binding.

Related

  • Project
  • Project
  • Project
  • Project