Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
MAVLINK_MCP_URLNoMAVLink endpoint (PX4 SITL's offboard port). With MAVSDK 2.x the older syntax udp://:14540 is used automatically.udpin://0.0.0.0:14540
MAVLINK_MCP_READONLYNoReject every tool that can move the vehicle (see Safety)true
MAVLINK_MCP_MAX_ALTITUDE_MNoCeiling for takeoff/goto/mission altitudes, meters above launch. 0 disables.50
MAVLINK_MCP_GEOFENCE_RADIUS_MNoSoft geofence radius around the home position, meters. 0 disables.200

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

CapabilityDetails
tasks
{
  "list": {},
  "cancel": {},
  "requests": {
    "tools": {
      "call": {}
    },
    "prompts": {
      "get": {}
    },
    "resources": {
      "read": {}
    }
  }
}
tools
{
  "listChanged": true
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
get_capabilitiesA

Discover what this vehicle can do and which guardrails are active.

Takes no arguments; does not require a live vehicle. Call this first. Returns {"adapter", "capabilities": ["telemetry", "arm_disarm", ...], "guardrails": {"readonly", "max_altitude_m", "geofence_radius_m"}, "connected"}. Plan only with listed capabilities; if "readonly" is true, every tool that can move the vehicle will be rejected.

get_telemetryA

Read one snapshot of the vehicle's telemetry. Read-only.

Takes no arguments. Returns {"position": {latitude_deg, longitude_deg, absolute_altitude_m, relative_altitude_m}, "attitude": {roll_deg, pitch_deg, yaw_deg}, "battery": {voltage_v, remaining_percent}, "gps": {num_satellites, fix_type}, "flight_mode", "armed", "in_air"}. Fields the vehicle did not report within a few seconds are null. Always check telemetry before commanding motion.

get_flight_modeA

Report the current flight mode (e.g. HOLD, TAKEOFF, MISSION, RTL).

Takes no arguments. Read-only. Returns {"flight_mode": "HOLD"}.

get_connection_statusA

Report the MAVLink endpoint, connection state, and guardrail config.

Takes no arguments. The connection is opened lazily, so "connected" is false until another tool has been used. Check this first when other tools report errors.

armA

Arm the vehicle (spin up motors). DANGEROUS on real hardware.

Rejected in readonly mode. Additionally requires confirm=true: ask the human operator for approval first — never set confirm=true on your own initiative. Preflight: check get_telemetry (GPS fix, battery) before arming. Returns {"armed": true} or {"error": ...}.

disarmA

Disarm the vehicle (stop motors). Autopilots reject this in flight.

Rejected in readonly mode. Returns {"disarmed": true} or {"error": ...}.

takeoffA

Take off vertically to altitude_m meters above the launch point.

Rejected in readonly mode. Additionally requires confirm=true after human operator approval — never set it on your own initiative. The vehicle must be armed first (call arm). Altitude is validated against the configured ceiling (MAVLINK_MCP_MAX_ALTITUDE_M, default 50 m).

Returns {"takeoff_started": true, "target_altitude_m": ...} — takeoff is asynchronous; poll get_telemetry to watch the climb.

landA

Land at the current position.

Rejected in readonly mode (no confirmation needed — landing makes the vehicle safer). Returns {"landing_started": true}; poll get_telemetry until "in_air" is false.

holdA

Pause: stop and loiter at the current position (HOLD mode).

Rejected in readonly mode. Use this to interrupt a goto or mission safely. Returns {"holding": true}.

return_to_launchA

Fly back to the launch point and land there (RTL).

Rejected in readonly mode (no confirmation needed — RTL is a recovery action). Returns {"rtl_started": true}; poll get_telemetry until "in_air" is false.

goto_locationA

Fly to a single waypoint and loiter there. The vehicle must be flying already (armed + taken off).

Args: latitude_deg: Target latitude (WGS84). longitude_deg: Target longitude (WGS84). relative_altitude_m: Target altitude above the launch point, in meters. Checked against the altitude ceiling. yaw_deg: Heading at the target, 0 = north (default 0).

Rejected in readonly mode. The target is also checked against the soft geofence around home (MAVLINK_MCP_GEOFENCE_RADIUS_M, default 200 m). Returns {"goto_started": true, "target": {...}} — travel is asynchronous; poll get_telemetry to track progress.

fly_missionA

Upload a waypoint mission and start flying it. The vehicle must be armed and flying (or the autopilot will take off per its mission config).

Args: waypoints: List of {"latitude_deg", "longitude_deg", "relative_altitude_m", "speed_m_s"?} objects, flown in order. Every waypoint is validated against the altitude ceiling and the soft geofence before anything is uploaded.

Rejected in readonly mode. Returns {"mission_started": true, "waypoint_count": N}. Use hold to pause or return_to_launch to abort; poll get_flight_mode — mode leaves MISSION when the mission ends.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

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