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.
Service Contract
Highlights
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:
STARLINK_WRITE_ENABLED=trueenvironment variable (persistent, set in plugin config)confirm=trueparameter 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
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
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.
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.
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.
Use the Forge to design an automation pack powered by starlink-blade-mcp for leo-modem operations.
Links
Install
sidereal install starlink-blade-mcp