ardupilot-mcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited ardupilot-mcp (Rules) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
🇹🇷 Türkçe · 🇬🇧 English
<!-- mcp-name: io.github.furkanisikay/ardupilot-mcp -->
Drone'un mu düştü ya da kötü mü uçtu? ArduPilot uçuş kontrolcüsü her uçuşta bir kara-kutu dosyası tutar — .bin uçuş logu. Bu araç o dosyayı okur ve bir yapay zekâ sohbet uygulamasının uçuşta ne olduğunu düz dille anlatmasını sağlar: düşük batarya, aşırı titreşim, GPS kaybı, kablo arızası, kötü ayar… Tahminle değil, deterministik bir kontrol motoruyla.
Nasıl bir şey bu? Kendi penceresi/uygulaması yok. Bir yapay zekâ sohbet uygulamasına takılır — Claude Desktop, Cursor, VS Code gibi (bunlara "MCP istemcisi" denir). Önce o uygulamalardan birini kurarsın, bu aracı ona eklersin, sonra düz dille sorarsın. (MCP = Model Context Protocol; bu uygulamaların araçlarla konuştuğu standart "fiş".)
Mission Planner'ın Auto Analysis'i ve UAV Log Viewer zaten var ve iyiler — ama farklı bir iş yapıyorlar. Kısaca: o araçlar veriyi gösterir, yorumu sen yaparsın; bu araç veriyi yorumlar, düz dille anlatır ve sorularını cevaplar.
| MP Auto Analysis | UAV Log Viewer | ardupilot-mcp | |
|---|---|---|---|
| Çıktı | sabit geç/kal listesi | grafik + 3B uçuş tekrarı | düz dille açıklama + sohbet |
| "Neden düştü?" diye sorup gerekçeli cevap | — | — | ✓ |
| Doğal dille takip sorusu ("15–30 sn titreşim?") | — | — | ✓ |
| Konfig/kurulum hataları (param denetimi, kalibrasyon, kablo, pre-arm) | kısmen | — | ✓ |
| Fiziksel muhakeme (güç marjı, itki/ağırlık) | — | — | ✓ |
| Her bulguda resmi ArduPilot doküman linki | — | — | ✓ |
| Grafik / 3B harita görselleştirme | — | ✓ | — |
| Anında, kurulum yok | ✓ (MP'de hazır) | ✓ (web) | AI istemcisi + uv gerekir |
Diğerlerini ne zaman kullan: bir sinyali grafikte görmek veya uçuş yolunu 3B izlemek için → UAV Log Viewer. Elinde Mission Planner açıkken hızlı bir geç/kal için → MP Auto Analysis. Bu araç onların yerini almaz; "neden böyle oldu?"yu açıklaması ve takip sorularını cevaplaması, kararı deterministik bir motora + resmi dokümana dayandırması, ve uçuş sinyallerinin yanı sıra konfig/kurulum ve fiziksel tarafı da kapsaması için var. Ayrıca tamamen offline ve salt-okunur çalışır.
En kısa yol — Claude Desktop ile:
uvx onunla gelir):powershell -c "irm https://astral.sh/uv/install.ps1 | iex"curl -LsSf https://astral.sh/uv/install.sh | shuv --version bir sürüm yazmalı. { "mcpServers": { "ardupilot-mcp": { "command": "uvx", "args": ["ardupilot-mcp"] } } }Sonra Claude Desktop'ı tamamen kapatıp yeniden aç — pencereyi kapatmak yetmez; sistem tepsisinden de çık.
uv yerine pip kullanmak ya da başka bir uygulama (Cursor, VS Code, Cline, LM Studio…) eklemek için → İstemcine ekle.
.bin) nereden bulurum?Uçuş kontrolcün her uçuş için bir .bin DataFlash logu kaydeder. Bilgisayarına almak için:
C:\loglar\). QGroundControl da olur.APM/LOGS veya /LOGS klasörü; dosya adı 00000042.BIN gibi görünür.Tam dosya yolunu not et — yapay zekâya vereceğin şey o. Detay: ArduPilot — Downloading and Analyzing Data Logs.
Bir AI uygulaması kurmadan, motorun çalıştığını görmek istersen kaynağı indir (örnek scriptler pip paketinde gelmez, repoyu klonlaman gerekir):
git clone https://github.com/furkanisikay/ardupilot-mcp
cd ardupilot-mcp
pip install -e .
python examples/generate_demo_log.py demo.bin # gerçekçi bir kaza logu üretir
python examples/analyze.py demo.bin # tam teşhisi terminale yazarHazır olunca demo.bin yerine kendi .bin dosyanı ver.
Yukarıdaki analyze.py demo.bin çıktısından (kısaltıldı). Bir AI istemcisinde aynı bulgular senin dilinde, sohbet havasında anlatılır:
ArduCopter V4.5.7 — 30 sn uçuş — 8 kritik, 2 uyarı, 3 bilgi
[KRİTİK] titreşim @ 9s : VibeZ titreşimi 72 m/s² zirve yaptı (>60); örneklerin %20'si eşiği aştı.
[KRİTİK] attitude @ 20s : Roll komutu 3 sn takip edilemedi, hata 35°'ye çıktı — kontrol kaybı / mekanik arıza.
[KRİTİK] gps @ 22s : GPS 3D fix'i 22–24 sn arasında kayboldu — konum desteği gitti.
[KRİTİK] güç @ 30s : Paket voltajı 13.22 V'a düştü (kritik 13.50 V failsafe) — acil iniş gerek.
...
TUNING (yalnız tavsiye): 80 Hz harmonik notch öner.Her bulgu ilgili resmi ArduPilot doküman linkini ve somut sayıları (zaman, değer, eşik) taşır.
Tek tıkla:
Kurulum (bir kez). Aşağıdaki config'lerin hepsi uvx ardupilot-mcp komutunu kullanır.
pip install gerekmez.pip install ardupilot-mcp yaptıysan, aşağıdaki config'lerde "command": "uvx", "args": ["ardupilot-mcp"] yerine "command": "ardupilot-mcp" yaz (args'sız). İkisi de çalışır; ikisini karıştırma.Python da gerekir (3.11+). Kontrol: terminalde python --version 3.11 veya üstünü yazmalı. Yoksa <https://python.org/downloads>'dan kur (Windows'ta kurulumda "Add Python to PATH"i işaretle). uv yolunu kullanırsan uv uygun bir Python'u kendi indirebilir, ayrıca kurman gerekmeyebilir.
Önemli: Config'i ekledikten/değiştirdikten sonra uygulamayı yeniden yükle. Dosya-tabanlı uygulamalarda (Claude Desktop, Cursor, VS Code, Windsurf, LM Studio, Zed) tamamen kapatıp aç — pencereyi kapatmak yetmez, tepside/menü çubuğunda açık kalır. Sonra araç listesini kontrol et.
<details> <summary><b>Claude Code</b></summary>
claude mcp add ardupilot-mcp -- uvx ardupilot-mcpTüm projelerde kullanmak için --scope user, takımla paylaşmak için --scope project (repoya .mcp.json yazar). Doğrula: claude mcp list.
Ya da eklenti olarak (MCP sunucusu + /diagnose komutu birlikte gelir):
/plugin marketplace add furkanisikay/ardupilot-mcp
/plugin install ardupilot-mcp@ardupilot-tools</details>
<details> <summary><b>Claude Desktop</b></summary>
Settings → Developer → Edit Config ile claude_desktop_config.json'a ekle, sonra Claude Desktop'ı tamamen kapatıp yeniden aç:
{
"mcpServers": {
"ardupilot-mcp": { "command": "uvx", "args": ["ardupilot-mcp"] }
}
}</details>
<details> <summary><b>Cursor</b></summary>
Üstteki Add to Cursor düğmesi; ya da ~/.cursor/mcp.json (projeye özel: .cursor/mcp.json):
{
"mcpServers": {
"ardupilot-mcp": { "command": "uvx", "args": ["ardupilot-mcp"] }
}
}</details>
<details> <summary><b>VS Code / VS Code Insiders</b></summary>
Üstteki düğme; ya da .vscode/mcp.json:
{
"servers": {
"ardupilot-mcp": { "type": "stdio", "command": "uvx", "args": ["ardupilot-mcp"] }
}
}Komut satırı: code --add-mcp '{"name":"ardupilot-mcp","command":"uvx","args":["ardupilot-mcp"]}' </details>
<details> <summary><b>Antigravity (IDE + CLI)</b></summary>
~/.gemini/config/mcp_config.json (Windows: %USERPROFILE%\.gemini\config\mcp_config.json) — IDE ile CLI aynı dosyayı paylaşır:
{
"mcpServers": {
"ardupilot-mcp": { "command": "uvx", "args": ["ardupilot-mcp"] }
}
}IDE: agent panelindeki ... → MCP Servers → View raw config → yapıştır → Refresh. CLI: agy çalıştırıp /mcp ile doğrula. </details>
<details> <summary><b>Windsurf</b></summary>
~/.codeium/windsurf/mcp_config.json (Windows: %USERPROFILE%\.codeium\windsurf\mcp_config.json):
{
"mcpServers": {
"ardupilot-mcp": { "command": "uvx", "args": ["ardupilot-mcp"] }
}
}Cascade → MCP paneli → View raw config → yapıştır → Refresh. </details>
<details> <summary><b>Cline</b></summary>
Cline paneli → MCP Servers → Configure → cline_mcp_settings.json:
{
"mcpServers": {
"ardupilot-mcp": { "command": "uvx", "args": ["ardupilot-mcp"], "disabled": false, "autoApprove": [] }
}
}</details>
<details> <summary><b>Continue</b></summary>
Çalışma alanında .continue/mcpServers/ardupilot-mcp.yaml:
name: ArduPilot MCP
version: 0.0.1
schema: v1
mcpServers:
- name: ArduPilot MCP
type: stdio
command: uvx
args:
- ardupilot-mcp</details>
<details> <summary><b>Zed</b></summary>
settings.json (context_servers altına):
{
"context_servers": {
"ardupilot-mcp": { "command": "uvx", "args": ["ardupilot-mcp"], "env": {} }
}
}</details>
<details> <summary><b>Goose</b></summary>
goose configure
# Add Extension → Command-line Extension → komut: uvx ardupilot-mcp</details>
<details> <summary><b>LM Studio (açık-kaynak / yerel modeller)</b></summary>
Üstteki Add to LM Studio düğmesi; ya da ~/.lmstudio/mcp.json (Windows: %USERPROFILE%\.lmstudio\mcp.json):
{
"mcpServers": {
"ardupilot-mcp": { "command": "uvx", "args": ["ardupilot-mcp"] }
}
}</details>
Model bağımsız: ardupilot-mcp, MCP'yi stdio üzerinden konuşur; alttaki modelden bağımsız olarak MCP destekli her istemcide çalışır — tamamen açık-kaynak / yerel modeller dahil (ör. LM Studio'da yerel GGUF modeller; Ollama veya LM Studio'ya bağlanan Continue / Cline / Goose). Anthropic/OpenAI hesabı gerektirmez; yeterli olan, istemcinin seçtiği modelin araç-çağırma (tool-calling) desteğidir.
pip install ardupilot-mcp yapıp config'i "command": "ardupilot-mcp" olarak değiştir..bin uzantısı dahil tam yolu ver; Windows'ta yolu çift tırnak içine al.python examples/analyze.py demo.bin).| Araç | Ne yapar |
|---|---|
analyze_log(path) | Tüm kontrol paketini çalıştırır → önem-sıralı bulgular + özet. Her bulgu resmi ArduPilot doküman linkleri taşır; rapor 4.x firmware için sürüm-özel parametre dokümanlarını da içerir. Manşet araç. |
log_summary(path) | Araç, firmware, süre, mesaj sayıları, uçuş modları, max irtifa, bütünlük. |
vehicle_profile(path) | Fiziksel / mimari profil: frame & tip, motor sayısı, batarya hücresi/kapasitesi, hover gazı, güç marjı ve itki/ağırlık. Fiziğe-dayalı muhakeme için. |
list_events(path, kinds?, start_s?, end_s?) | Çözümlenmiş ERR/MODE/EV/MSG zaman çizelgesi. |
query_timeseries(path, message_type, fields, start_s?, end_s?, max_points?) | Bir bulguya derinlemesine bakmak için seyreltilmiş sayısal seri. |
get_params(path, name_glob?) | Logun PARM dökümünden parametre değerleri (ör. INS_HNTCH_*), toplam sayı, yorumlamak için sürüm-özel metadata linki, ve döküm eksikse bir uyarı. |
load_param_file(path, name_glob?) | Kullanıcının dışa aktardığı .param/.params dosyasını okur — log dökümü kesikse veya "uçtuğu config vs şimdiki"yi karşılaştırmak için tam, otoriter config. |
recommend_tuning(path, area?) | Tavsiye niteliğinde tuning (gyro FFT'sinden harmonik notch, PID, autotune). Sadece öneri — asla uygulanmaz. |
list_checks() | Kayıtlı teşhis kontrolleri (genişletilebilir katalog). |
Sunucuyu istemcine ekledikten sonra yapay zekâya düz dille sor; ilgili araçları kendisi çağırır:
analyze_log), önem-sıralı bulguları doküman linkleriyle açıklar.vehicle_profile ile frame / motor / batarya / hover gazından güç marjını ve itki-ağırlık oranını çıkarır.query_timeseries ile VIBE serisini çekip eşiklerle karşılaştırır.list_events ile ERR/MSG zaman çizelgesini ve pre-arm uyarılarını çözer. parametrelerimi göster ve harmonik notch öner."** — get_params + recommend_tuning` (yalnızca tavsiye, asla uygulanmaz).load_param_file ile uçtuğu config'i otoriter dosyayla karşılaştırır.Claude Code kullanıyorsan (Claude Desktop'tan farklı bir uygulama) ve eklentiyi kurduysan (yukarıdaki Claude Code bölümü — düz MCP-sunucu kurulumu /diagnose eklemez), tek komut yeter: `/diagnose C:\loglar\ucus.bin` — uçtan uca teşhisi yukarıdaki araçları sırayla kullanarak yapar. Diğer istemcilerde bunun yerine düz dille sor.
Bir ArduPilot .bin logunu okumak uzmanlık ister: ERR satırlarını filtreler, mekanik arıza için ATT.DesRoll ile ATT.Roll'u karşılaştırır, titreşim / EKF / batarya clipping'ine göz gezdirirsin. Drone'un düştüğünde "neden?" sorusunun cevabı bu logun içindedir ama okumak doktorun röntgen okuması gibidir. Bu sunucu o kontrolleri deterministik olarak çalıştırır ve yapay zekânın sonucu sade dille anlatmasını sağlar.
.bin ──▶ parser.py (pymavlink DFReader) ──▶ FlightLog (saf domain modeli)
│
▼
checks/ registry ──▶ Check eklentileri (her biri bir konu)
│
▼
orchestrator.diagnose() ──▶ DiagnosisReport (yapısal)
│
▼
server.py (FastMCP, stdio) ──▶ Yapay zekâ bulguları anlatırpymavlink-bağımsız bir domain modelidir; bu yüzden kontroller ve testler gerçek .bin olmadan sentetik loglarla çalışır.@register_check). Yeni bir tane eklemek = tek bir yeni modül. Orchestrator, verisi loglanmamış kontrolü zarifçe atlar, araç tipine uymayanı (ör. heli/uçakta motor-dengesi) çalıştırmaz ve hata fırlatan kontrolü izole eder.apm.pdef.xml) yüzeye çıkarır. Sunucu offline/deterministik kalır; bu işaretçileri web erişimi olan yapay zekâya verir, o okur ve alıntılar.vehicle_profile) logu airframe gerçeklerine dönüştürür — frame, motor sayısı, batarya hücresi ve özellikle güç marjı (hover gazı → itki/ağırlık). Motorlarını sonuna kadar açıp düşen gerçek bir 12 kg'lık quad'da "underpowered, %69 gazda asılı, sadece %31 pay" diyor — kazanın asıl sebebi.Bu sürüm offline ve salt-okunur. MAVLink bağlantısı yok, arming yok, parametre yazma yok, aktüasyon yok. Tuning çıktısı sadece tavsiyedir. Canlı-araç özellikleri (düzgün bir güvenlik gateway'i ile: SITL-önce, insan-onayı, kill switch) bilinçli olarak kapsam dışı ve ertelenmiş.
Koddaki her sayısal eşik, enum, varsayılan ve davranışsal iddia otoriter kaynaklara karşı (ArduPilot wiki/firmware, MAVLink, MCP spec) docs/SOURCES.md'de denetlenmiştir — her biri onaylandı (atıflı), heuristik (bizim ihtiyatlı seçimimiz, en yakın rehber atıflı) veya tasarım kararı (bizim severity sınırımız) olarak işaretli. Bu denetim 8 gerçek hatayı bulup düzeltti (ör. yanlış bir heli FRAME_CLASS kümesi, yanlış-numaralı event id'leri, innovation test-ratio'su olmayan bir EKF alanı).
Katkılar için: CONTRIBUTING.md ve AGENTS.md (insanlar ve yapay zekâ asistanları için kurallar).
pip install -e ".[dev]"
ruff check ardupilot_mcp tests # lint
mypy ardupilot_mcp # tip kontrolü
pytest # testlerKontroller sentetik in-memory loglarla (tests/helpers.py) test edilir; sentetik bir DataFlash yazıcısı (tests/synth_bin.py) parser'a round-trip için gerçek, hermetik bir .bin verir — repoya büyük ikili fixture girmez.
.bin teşhisi + tuning tavsiyesi + genişletilebilir kontrol çerçevesi.MIT
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.