CelesTrak MCP — satellite orbital elements (TLE / GP data) for any tracked object.
Three well-named tools with clear, descriptive text (avg 180 chars). All have proper JSON Schema with typed parameters and descriptions. However, output schemas are not documented, LLMs cannot predict response structure for planning. Error handling returns structured objects but lacks recovery guidance. No pagination despite tools returning up to 50-100 results. Parameter descriptions are good but lack format constraints (e.g., group enum values not formalized in schema).
List orbital elements (TLE / GP data) for an entire CelesTrak group — e.g. the Starlink, GPS, or weather satellite catalog. Groups: "stations", "starlink", "gps-ops", "weather", "science", "geo", "active". Returns up to 100 satellites with orbital parameters (inclination, eccentricity, period). Catalog/orbital data, not live tracking.
Get satellite orbital elements (TLE / GP data) for a single object by NORAD catalog ID. Returns orbital parameters: inclination, eccentricity, mean motion, RAAN, argument of perigee, epoch, and derived orbital period in minutes. norad_id 25544 = ISS, 20580 = Hubble. This is the orbital catalog, not live position tracking.
Search the satellite catalog by name substring and return matching orbital elements (TLE / GP data). e.g. "STARLINK", "NOAA", "GPS". Returns up to 50 matches with orbital parameters (inclination, eccentricity, period). Catalog/orbital data, not live tracking.
Output schemas not documented. LLMs cannot predict response structure (e.g., mapGp() output fields, count/satellites wrapper for search/group results). Forces LLMs to guess field names for downstream reasoning.
group parameter accepts free-form strings instead of enum. Description lists valid values ('stations', 'starlink', 'gps-ops', etc.) but schema does not enforce them. LLMs may hallucinate invalid group names.
No pagination support despite returning up to 50-100 results. Tools slice results client-side but do not expose limit/offset parameters or next_cursor. Large result sets risk context window exhaustion.
Error responses return {error, message} but lack recovery guidance. 'not_found_or_error' is vague, LLM cannot distinguish 'satellite not found' from 'API down' or 'malformed request'.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | 2026-07-28+ | v2 |
Parameter descriptions include example values ('25544 (ISS)', 'STARLINK') which LLMs may reuse literally. Should use enum/pattern constraints instead.