ardupilot-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| analyze_logA | Run the full deterministic diagnostic suite over an ArduPilot .bin log (or a ground station's .tlog). A .tlog is the telemetry the ground station received: a few Hz, the primary sensor and EKF core only, and gaps where the radio link dropped. Checks that would read a link dropout as a vehicle fault (log integrity, timing) are skipped on it; prefer the onboard .bin when the user has it. Returns severity-ranked findings (each with concrete evidence AND official
ArduPilot doc links), per-check results, a plain-language summary, and
|
| incident_timelineA | What went wrong first, and what followed: the onset (first anomaly while armed), the impact (crash check, crash disarm, or the log ending while armed), and every firmware verdict, error, failsafe mode change and finding in time order, each tagged before_onset / onset / after_onset / impact / after_impact. Use it to answer "what failed first, and is the rest just the crash?". Time order only — never causation. |
| forum_reportA | A Markdown reply to paste into a discuss.ardupilot.org thread: vehicle and firmware, what went wrong first (onset and impact), the findings with their corroborating log records, and a small text plot of the data behind each one. It contains no GPS positions and is returned as text (nothing is written to disk). Review it with the user and add what they saw before they post it. |
| compare_logsA | What changed between two logs of the same vehicle ("it flew fine last week")? Lists configuration parameters that differ (separately from values the autopilot learns/counts itself), parameters present in only one log, the firmware change, and flight metrics side by side (vibration, hover throttle, battery/board voltage minimums). Differences only — it does not judge which side is right. By convention A is the earlier/good flight and B the later/bad one. |
| log_summaryB | Cheap orientation: vehicle, firmware, duration, message counts, flight modes, max altitude, integrity. |
| vehicle_profileA | Physical / architecture profile of the aircraft inferred from the log. Frame class & type, motor count, battery cells/capacity, and — the key physical insight — the hover throttle and resulting power margin / thrust-to-weight. Use this to reason about the craft physically and to combine with real-world details the user gives (weight, prop diameter, motor KV, wind). |
| list_eventsB | Decoded ERR/MODE/EV/MSG timeline. |
| query_timeseriesB | Numeric time series for a message type and fields, for drilling into a finding. Multi-instance messages (VIBE/IMU per IMU, GPS per receiver, MAG per compass, BAT per
battery, XKF* per EKF core) are returned one instance at a time: pass |
| get_paramsA | Parameter values recorded in the log's PARM dump. Includes |
| load_param_fileA | Load a user-exported ArduPilot parameter file (.param / .params). The authoritative complete configuration — use it when the log's PARM snapshot is truncated/incomplete,
or to compare the flown config (get_params) against the user's current/intended config. |
| recommend_tuningB | Advisory tuning recommendations (harmonic notch from the batch sampler, a fast IMU, the in-flight FFT or ESC RPM; PID; autotune). Recommendation ONLY — never applied. |
| list_checksA | List the registered diagnostic checks (the extensible catalogue). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 12 tools
Most tools have clearly distinct roles: analyze_log (full diagnostics) vs incident_timeline (time ordering) vs log_summary (cheap orientation) vs list_events (raw decoded events) vs query_timeseries (raw drilling) are well differentiated. Minor potential overlap between analyze_log's findings and incident_timeline's tags, but descriptions make the boundary clear.
All names use snake_case and most follow a verb_noun pattern (analyze_log, get_params, compare_logs, load_param_file, query_timeseries, recommend_tuning, list_events, list_checks). A few are noun phrases (incident_timeline, forum_report, vehicle_profile, log_summary), a minor deviation but still readable and predictable.
12 tools is well within the ideal range and each earns its place in a log-diagnosis workflow: entry point (log_summary), deep analysis (analyze_log), temporal/raw access (incident_timeline, list_events, query_timeseries), config (get_params, load_param_file, compare_logs), and reporting/advisory (forum_report, recommend_tuning).
Covers the core diagnostic lifecycle: orient, diagnose, temporalize, inspect parameters/config, compare flights, and produce reports/advisories. Minor gaps: no direct visualization/export beyond the text plot in forum_report, and recommend_tuning is advisory-only with no apply path, but these are reasonable for a read/diagnose server.