mavlink-mcp
mavlink-mcp
mavlink-mcp — это вендор-нейтральный уровень возможностей UAV + сервер Model Context Protocol, построенный на открытых стандартах. Он подключает AI-агентов (Claude Desktop, Cursor, VS Code и любой другой клиент MCP) к дронам, которые говорят на MAVLink — PX4 SITL, ArduPilot SITL и автопилоты класса Pixhawk — через MAVSDK (BSD-3-Clause). Вместо обёртывания протокольных сообщений он предоставляет 8 возможностей полёта (телеметрия, режим полёта, arm/disarm, взлёт, посадка, goto, миссия, возврат на точку старта) за одним чистым API с включенными по умолчанию защитными ограничениями.
Это сестринский проект rosbridge-mcp (AI-агенты ↔ роботы ROS 2) и разделяет его философию: только открытые протоколы, защитные ограничения по умолчанию в режиме только чтения, сначала симуляция, нулевая телеметрия, лицензия MIT.
Примечание о названии: «mavlink-mcp» — рабочее название. «MAVLink» является товарным знаком Dronecode Foundation; название проекта может быть скорректировано после рассмотрения их политики использования товарных знаков перед любым публичным релизом.
Отказ от ответственности: этот проект создан для симуляции и исследований. Полёты на реальных летательных аппаратах осуществляются исключительно на ваш собственный риск и под вашу ответственность, включая соблюдение местного авиационного законодательства (регистрация, разрешения на полёты, лицензирование пилотов). См. SECURITY.md.
Зачем уровень возможностей, а не очередной SDK?
Для AI-агентов возможности лучше, чем 400 функций SDK. Агент запрашивает
get_capabilities(«что умеет этот дрон?»), получает небольшой словарь физических действий и планирует с ним — никаких знаний MAVLink на стороне модели не требуется.Вендор-нейтральность по построению. Возможности определены в физических величинах (градусы, метры, вольты) из открытых спецификаций — не скопированы с поверхности какого-либо проприетарного SDK. Адаптер MAVSDK — одна реализация; будущий адаптер ROS 2 (использующий rosbridge-mcp) реализует тот же интерфейс.
Защитные ограничения — часть API, а не запоздалая мысль. Режим только чтения включён по умолчанию, вооружение и взлёт требуют явного подтверждения оператором, а каждая команда с координатами проверяется на потолок высоты и мягкий геозон — прежде чем что-либо достигнет автопилота.
Related MCP server: ArduPilot MCP Server Sandbox
Архитектура
+--------------------+ stdio (MCP) +----------------------------------+ MAVLink (UDP) +------------------+
| AI client | <-----------> | mavlink-mcp | <-------------> | PX4 / ArduPilot |
| (Claude, Cursor, | | MCP server | via | SITL or real FC |
| VS Code, ...) | | └─ capability layer + policy | MAVSDK | (Pixhawk-class) |
+--------------------+ | └─ MAVSDK adapter | (BSD-3) +------------------+
+----------------------------------+
Python scripts use the same capability layer directly (mavlink_mcp.Drone).Уровень возможностей (Drone) владеет всей политикой — только чтение, подтверждение, высота, геозона. Адаптер (MavsdkAdapter) только переводит одобренные операции в MAVLink; это единственный модуль, который импортирует mavsdk. Новые бэкенды реализуют тот же интерфейс DroneAdapter и получают обе поверхности (инструменты MCP + библиотека Python) и все защитные ограничения бесплатно.
Быстрый старт (60 секунд)
pip install git+https://github.com/hieutachi/mavlink-mcp.gitЗапустите PX4 SITL (см. docs/simulator-quickstart.md — одна команда Docker), затем добавьте в конфигурацию вашего MCP-клиента:
{
"mcpServers": {
"mavlink": {
"command": "mavlink-mcp",
"env": { "MAVLINK_MCP_READONLY": "true" }
}
}
}Затем спросите вашего агента: «Что умеет этот дрон и где он сейчас?»
Когда будете готовы лететь (в симуляторе!), установите MAVLINK_MCP_READONLY в "false".
Возможности и инструменты
12 инструментов, покрывающих 8 возможностей. Все инструменты возвращают JSON; ошибки возвращаются в виде {"error": "...", "guardrail": true} вместо исключений, чтобы агент мог прочитать и отреагировать.
Инструмент | Возможность | Что делает | Мутабельный? |
| — | Что поддерживает транспортное средство + активные защитные ограничения | нет |
| Telemetry | Положение, ориентация, батарея, GPS, режим, вооружение, в воздухе | нет |
| FlightMode | Текущий режим полёта (HOLD, MISSION, RTL, ...) | нет |
| — | Конечная точка, состояние соединения, конфигурация защитных ограничений | нет |
| Arm/Disarm | Запуск двигателей | да — требуется |
| Arm/Disarm | Остановка двигателей (на земле) | да |
| Takeoff | Подъём на целевую высоту | да — требуется |
| Land | Приземление в текущей позиции | да |
| FlightMode | Пауза: остановка и зависание на месте | да |
| ReturnToLaunch | Полёт домой и посадка | да |
| Goto | Полёт к одной путевой точке и зависание | да — проверка геозоны + высоты |
| Mission | Загрузка миссии из путевых точек и запуск | да — проверка каждой точки |
Пример диалога
Вы: Проверь дрон, и если он в порядке, соверши короткий патруль на высоте 20 м.
Агент: (вызывает
get_capabilities— видит, что режим только чтения выключен, геозона 200 м; вызываетget_telemetry— GPSFIX_3D, 10 спутников, батарея 100%) Дрон в порядке. Мне нужно ваше одобрение на вооружение и взлёт — подтверждаете?Вы: Подтверждаю, действуйте.
Агент: (вызывает
arm(confirm=true),takeoff(altitude_m=20, confirm=true), затемfly_missionс 3 путевыми точками внутри геозоны, отслеживаетget_telemetry, завершаетreturn_to_launch) Патруль завершён — дрон вернулся на точку старта и разоружён.
Конфигурация
Переменная окружения | По умолчанию | Описание |
|
| Конечная точка MAVLink (внешний порт PX4 SITL). С MAVSDK 2.x автоматически используется старый синтаксис |
|
| Отклоняет любой инструмент, способный перемещать транспортное средство (см. Безопасность) |
|
| Потолок для взлёта/goto/миссии, метры над точкой старта. |
|
| Радиус мягкого геозона вокруг домашней позиции, метры. |
Безопасность
Позволить языковой модели управлять летательным аппаратом — реальный риск, поэтому защитные ограничения строже, чем в типичном SDK:
Только чтение по умолчанию. В отличие от большинства инструментов, вы должны явно дать согласие на полёт с помощью
MAVLINK_MCP_READONLY=false. В режиме только чтения все инструменты телеметрии работают; каждый мутабельный инструмент отклоняется с понятным объяснением.Двухшаговое подтверждение для опасных переходов.
armиtakeoffтребуютconfirm=true, и описания инструментов предписывают агенту сначала получить одобрение человека — агент не может легитимно взлететь за один автономный шаг.Мягкий геозон + потолок высоты. Каждая команда с координатами (goto и каждая путевая точка миссии) проверяется относительно
MAVLINK_MCP_GEOFENCE_RADIUS_Mвокруг дома иMAVLINK_MCP_MAX_ALTITUDE_Mперед отправкой автопилоту.Действия по безопасности остаются без барьеров.
land,holdиreturn_to_launchникогда не требуют подтверждения — деэскалация всегда должна быть лёгкой.
Эти проверки являются политикой внутри данного процесса — не заменой собственных средств безопасности автопилота, реального геозона, настроенного в PX4/ArduPilot, сетевой изоляции или человека с RC-передатчиком. Прочитайте SECURITY.md перед рассмотрением реального оборудования и рассматривайте полёты в реальном мире как требующие регистрации/разрешений в соответствии с местным авиационным законодательством (например, Вьетнамский Указ о БПЛА 288/2025 требует регистрации и разрешений на полёты).
Библиотека Python
Тот же уровень возможностей можно импортировать для скриптов и блокнотов — см. examples/patrol_sitl.py для полного цикла взлёт → путевые точки → посадка на SITL:
from mavlink_mcp import Drone, GuardrailConfig
from mavlink_mcp.adapters.mavsdk_adapter import MavsdkAdapter
drone = Drone(MavsdkAdapter(), guardrails=GuardrailConfig(readonly=False))
snapshot = await drone.get_telemetry()
await drone.arm(confirm=True)
await drone.takeoff(20.0, confirm=True)Конфиденциальность и юридические аспекты
Никакой телеметрии, никакого сбора данных. Единственное сетевое соединение, которое открывает этот пакет — это конечная точка MAVLink, которую вы настраиваете (MAVLINK_MCP_URL). Данные транспортного средства, возвращаемые инструментами, отправляются исключительно вашему MCP-клиенту.
Соблюдение лицензий. Ядро целенаправленно зависит от MAVSDK-Python (BSD-3-Clause) и не от pymavlink (LGPL-3), что сохраняет разрешительный характер дерева зависимостей в рамках MIT-лицензии этого проекта. Прямые зависимости: mavsdk (BSD-3-Clause), fastmcp (Apache-2.0). Весь код в этом репозитории является оригинальной работой, написанной на основе публичных открытых спецификаций (документация протокола MAVLink, документация MAVSDK) — никаких проприетарных SDK, никакого обратного инжиниринга, никаких принятых вендорных EULA.
Часто задаваемые вопросы
Нужен ли мне дрон? Нет. MVP1 ориентирован на симуляцию: всё работает против PX4 SITL (одна команда Docker) и спроектировано для работы также против ArduPilot SITL. См. docs/simulator-quickstart.md.
Работает ли он с ArduPilot? Уровень возможностей нацелен как на PX4, так и на ArduPilot через MAVSDK. PX4 SITL является основным протестированным целевым объектом в MVP1; заметки о совместимости с ArduPilot SITL находятся в кратком руководстве, а проверка в CI — пункт дорожной карты.
Почему бы не использовать MAVSDK напрямую? Если вы пишете Python вручную — используйте! mavlink-mcp добавляет уровень, которого нет в MAVSDK: поверхность инструментов MCP для AI-агентов, модель возможностей с обнаружением во время выполнения и производственные защитные ограничения (только чтение, подтверждение, геозон), применяемые над протоколом.
Агент говорит, что транспортное средство не обнаружено.
Проверьте, что SITL запущен и отправляет MAVLink на конечную точку, указанную в MAVLINK_MCP_URL (PX4 SITL по умолчанию отправляет на UDP 14540). В кратком руководстве есть таблица устранения неполадок.
Передаются ли мои данные куда-либо? Только вашему MCP-клиенту, который пересылает их той LLM, которую вы используете — обращайтесь с данными о положении соответственно.
Дорожная карта
Поэтапный план в ROADMAP.md: MVP1 (этот — уровень возможностей + MCP сервер на SITL), MVP2 (реальное оборудование класса Pixhawk, адаптер ROS 2, повторно использующий rosbridge-mcp, система плагинов/соответствия), MVP3 (адаптеры сообщества, несколько транспортных средств, сервисы с открытым ядром).
Участие в разработке
Вклады приветствуются — см. CONTRIBUTING.md. Пожалуйста, подписывайте свои коммиты (DCO). Обратите внимание на правило чистого вклада: PR должны быть основаны только на публичных спецификациях и документации.
Лицензия
MIT — см. LICENSE. Лицензии зависимостей являются разрешительными и совместимыми: mavsdk (BSD-3-Clause), fastmcp (Apache-2.0). В ядре нет зависимостей GPL/LGPL/AGPL.
Краткое содержание на русском
mavlink-mcp — это вендор-нейтральный уровень возможностей для БПЛА с MCP-сервером, построенный полностью на открытых стандартах: подключает AI-агентов (Claude Desktop, Cursor, VS Code...) к дронам, общающимся на MAVLink (PX4/ArduPilot), через библиотеку MAVSDK (BSD-3). Это проект-близнец rosbridge-mcp.
8 возможностей: телеметрия (позиция/ориентация/заряд батареи/GPS), режим полета, взведение/снятие, взлет, посадка, переход, миссия, возврат на базу — 12 инструментов MCP.
Безопасность по умолчанию: режим только для чтения включен по умолчанию (
MAVLINK_MCP_READONLYпо умолчаниюtrue); для взведения и взлета требуетсяconfirm=trueпосле согласия оператора; мягкий геозон + настраиваемый потолок высоты.Симуляция в первую очередь: запуск с PX4 SITL (одна команда Docker) — см. docs/simulator-quickstart.md. Проект предназначен для симуляции/исследований; реальные полеты полностью на вашей ответственности, включая регистрацию устройства и получение разрешения на полет в соответствии с Законом о народной противовоздушной обороне 49/2024 и Постановлением 288/2025.
Название "mavlink-mcp" временное — будет проверена политика товарных знаков Dronecode перед публикацией.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- FlicenseAqualityDmaintenanceEnables Large Language Models to interact with the ILP Drone Delivery System to plan deliveries, check drone availability, and generate route visualizations. It allows users to manage logistics tasks like capacity planning and temperature requirement matching through natural language.6
- Alicense-qualityFmaintenanceEnables natural language control of ArduPilot drones via MAVLink, supporting arm, takeoff, mode changes, and mission uploads.9GPL 3.0
- Alicense-qualityAmaintenanceEnables AI agents to interact with an ArduPilot vehicle in real-time via MAVLink, including reading state, inspecting and changing parameters, switching flight modes, diagnosing arming failures, and gated arming/disarming.1MIT
- AlicenseBqualityBmaintenanceEnables AI assistants to control Betaflight flight controllers over serial via MSP and CLI, providing real-time sensor reads, full CLI access, and auto-generated variable tools for configuration and tuning.100231AGPL 3.0
Related MCP Connectors
Build, validate, and deploy multi-agent AI solutions from any AI environment.
Operate Linux, macOS and Windows from your LLM. Every action runs through an auditable allowlist.
Create and manage AI agents that collaborate and solve problems through natural language interacti…
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/hieutachi/mavlink-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server