Back to catalog

Starlink Dish

Local-first dish monitoring — no cloud, no credentials

Local Starlink dish monitoring and control via gRPC — connectivity, alerts, obstruction mapping, throughput history, GPS, diagnostics, and hardware control. No cloud API or credentials required.

certified v0.1.0 leo-modem-v1 uv MIT
Authorgroupthink-dev
Setuptrivial
Authnone

Service Contract

leo-modem

Highlights

📡 Status — real-time connectivity, throughput, SNR, and antenna orientation
⚠️ Alerts — 22 hardware and environment flags with human-readable descriptions
🧭 Obstruction — 12-wedge directional map showing where signal is blocked
📊 History — throughput, latency, and power as token-efficient statistical summaries
📍 GPS — dish coordinates for multi-site tracking (opt-in via Starlink app)
🔧 Control — reboot, stow, and unstow with dual-gated safety

About

What it does

Starlink Dish gives your AI agent direct hardware access to your Starlink terminal over the local gRPC interface at 192.168.100.1:9200. No cloud API, no enterprise credentials, no internet dependency.

Your agent can check real-time connectivity, diagnose obstruction issues, review alert flags, analyse throughput trends, and — when enabled — reboot or stow the dish. All data comes directly from the hardware over your LAN.

Built on starlink-grpc-core, the same library that powers the Home Assistant Starlink integration.

How it differs from other Starlink MCPs

This plugin Enterprise MCP SpaceX MCP
Interface Local gRPC (dish hardware) Enterprise cloud API Public SpaceX API
Auth required None OAuth2 enterprise credentials None
Works offline Yes No No
Residential dish Yes Enterprise fleet only N/A
Dish control Reboot, stow, unstow Read-only None
Obstruction detail 12-wedge directional Aggregate only None

This is the only MCP that talks directly to the dish hardware. The Enterprise MCP (available separately in the marketplace) targets fleet operators managing hundreds of terminals via the cloud API.

Token efficiency

The Starlink dish generates dense per-second telemetry. Dumping raw history wastes context on thousands of near-identical samples.

starlink_history returns statistical summaries (min/avg/max per metric) over the requested window. A 900-second window produces ~8 lines vs ~5,400 lines of raw data — a 99.8% reduction in tokens with no information loss for typical analysis.

Safety model

Read tools work immediately — status, alerts, obstruction, history, location, diagnostics.

Write tools (reboot, stow, unstow) require dual gating:

  1. STARLINK_WRITE_ENABLED=true environment variable (persistent, set in plugin config)
  2. confirm=true parameter on each call (per-invocation, prevents accidental execution)

Both gates must pass. Your agent can inspect the dish freely but must be explicit about hardware control.

Network requirements

The dish exposes an unauthenticated gRPC endpoint on the LAN. If you use the Starlink router directly, it works out of the box.

Third-party router in bypass mode (UniFi UCG/UDM, pfSense, etc.): the dish management subnet 192.168.100.0/24 is separate from your WAN IP. You need a static route — Destination 192.168.100.0/24, Next Hop = WAN interface facing the Starlink. Some router firmware also needs a secondary IP on the WAN interface in the 192.168.100.0/24 range (e.g. 192.168.100.2/24) for the traffic to egress correctly.

Remote/headless sites: run the MCP server on any host that can reach 192.168.100.1 — a local machine, a NAS container, or any device on the Starlink-connected network.

Tool reference

Tool Type What it does
starlink_status read Identity, state, connectivity, throughput, SNR, orientation
starlink_alerts read 22 alert flags (thermal, motor, ethernet, roaming, water)
starlink_obstruction read Fraction obstructed, 12-wedge map, timing stats
starlink_history read Throughput/latency/power as min/avg/max summary
starlink_location read GPS lat/lon/alt (requires Starlink app opt-in)
starlink_diagnostics read Hardware version, firmware, GPS sats, alert count
starlink_reboot gated Restart the dish (2–5 min downtime)
starlink_stow gated Stow dish face-down for storage/transport
starlink_unstow gated Resume normal satellite tracking

Conformance

Required6/6
Recommended1/1
Last tested2026-04-11

Setup

Your device must be on the same network as the Starlink dish (connected via Starlink router or Ethernet Adapter). The dish is auto-discovered at 192.168.100.1:9200. If using a third-party router in bypass mode (e.g. UniFi UCG/UDM), the dish management subnet (192.168.100.0/24) is not automatically routable from your LAN. Add a static route: Destination 192.168.100.0/24, Next Hop = WAN interface (Starlink-facing port). Some firmware versions also require a secondary IP on the WAN interface in the 192.168.100.0/24 range (e.g. 192.168.100.2/24). Once routed, both gRPC (port 9200) and the dish web UI (port 80) become reachable. For remote or headless sites, run the MCP server on any host that can reach 192.168.100.1 — a local machine, a container on a NAS, or any device on the Starlink-connected network.

STARLINK_DISH_ADDRESS Dish Address
STARLINK_WRITE_ENABLED Enable Dish Control

Prerequisites

  • Starlink dish on local network
  • Route to 192.168.100.1 (automatic with Starlink router)

Scenarios

Diagnose intermittent connectivity drops

Check starlink_status for current state, review starlink_alerts for active hardware or environment flags, pull starlink_history for the last 900 seconds to identify ping drop patterns, then check starlink_obstruction to see if any wedges correlate with the drops.

starlink
Pre-storm dish safety check

Check starlink_alerts for thermal or water warnings, review starlink_diagnostics for firmware version and hardware state, then stow the dish if severe weather is imminent.

starlink
Multi-site Starlink fleet overview

For each dish, call starlink_status and starlink_location to build a site-by-site connectivity and position report. Flag any sites with active alerts or degraded throughput.

starlink
Build a leo-modem workflow

Use the Forge to design an automation pack powered by starlink-blade-mcp for leo-modem operations.

Install

sidereal install starlink-blade-mcp