NASA MCP provides 5 well-named, read-only tools with complete input schemas and reasonable descriptions. All tools follow verb_noun naming (get_*, search_*). Schemas are properly typed with required/optional fields clearly marked. However, descriptions lack depth, most are 100-150 chars and omit guidance on WHEN to use each tool vs alternatives, dependency hints, or error recovery. Output schemas are not documented, forcing LLMs to infer response structure. Parameter descriptions are adequate but generic (e.g., 'Date in YYYY-MM-DD format' lacks range context). No error handling guidance, no pagination support despite potential for large result sets (search_nasa_images). Security is sound (no secrets in params, read-only operations), but composition could be stronger, search_nasa_images and get_apod both return image data but with different structures.
Get the NASA Astronomy Picture of the Day with explanation. Optionally specify a date. Example: get_apod({ date: "2024-01-15", _apiKey: "DEMO_KEY" })
Get near-Earth asteroids approaching within a date range (max 7 days). Returns size, velocity, and miss distance. Example: get_asteroids({ start_date: "2024-01-01", end_date: "2024-01-07", _apiKey: "DEMO_KEY" })
Get photos taken by Mars rovers (Curiosity, Opportunity, Spirit). Filter by Martian sol and camera. Example: get_mars_photos({ sol: 1000, camera: "FHAZ", _apiKey: "DEMO_KEY" })
Get recent solar flare events from NASA DONKI space-weather data. Returns each flare's class (e.g. C4.0, M1.8, X1.2), begin/peak/end times, source region, and active region number. Use for "recent solar flares", "is there solar activity / a solar storm", space-weather questions.
Search the NASA Image and Video Library for images/videos of any subject — planets, missions, astronauts, launches, galaxies, etc. PREFER for "NASA photos of Jupiter", "images of the Apollo 11 mission", "pictures of a nebula". Returns title, description, date, NASA ID, media type, and a thumbnail URL. Keyless.
Output schemas not documented. LLMs cannot infer response structure (e.g., what fields does getApod return? Is it {date, title, explanation, url} or nested?). Code shows response shaping but no schema in tool definition.
Descriptions lack WHEN-to-use guidance and error recovery hints. E.g., get_apod says 'Get the NASA Astronomy Picture of the Day' but not 'Use this for astronomy/space education queries; search_nasa_images for broader NASA photo searches.' No guidance on what to do if date is invalid or API fails.
search_nasa_images accepts limit up to 50 but no pagination (offset/cursor) support. If result set is large, LLM cannot fetch next page. Description should state 'Returns up to 50 results; call again with different query to explore further.'
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 60 | 2026-07-28+ | v2 |
Parameter descriptions include example values (e.g., 'e.g. 1000', 'e.g. "jupiter"'). LLMs tend to reuse examples literally. Replace with enum constraints or format declarations.
No error handling guidance. If NASA API returns 429 (rate limit), 401 (invalid key), or 404 (date out of range), tool throws generic error. LLM has no recovery path. Should return actionable errors like 'Invalid date: must be 1995-06-16 to today' or 'API rate limit exceeded; try again in 60 seconds.'