Migrate APOD and DONKI to their new APIs and add InSight, TLE, SSC, TechPort, TechTransfer, Trek and Mission Design tools - #15
Merged
Conversation
…r, TLE, SSC, TechPort, TechTransfer, Trek and JPL Mission Design tools
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
APOD migration
api.nasa.gov/planetary/apodreturns 503/504, and the api.nasa.gov catalog says the legacy API goes offline on 2026-12-01.nasa_apod, thenasa://apod/imageresource template and both APOD prompts now use the NASA Science API (science.nasa.gov/wp-json/wp/v2/apod-basic), which needs no key.What I found while probing it:
date_from/date_toonly accept YYMMDD (260901).2026-09-01,20260901and ISO timestamps all return HTTP 400. Single dates use/apod-basic/{YYMMDD}.per_pageis capped at 25, so ranges (still up to 100 days) are paged usingx-wp-totalpagesand returned oldest first.urlis the article permalink, not the image. The picture is the first<img>inbasic_html. Posts from before about 2005 have a generic placeholderhdurl(…/cosmic-origins/images/misc/news-thumbnail.png), which is ignored.<video><source>or<iframe>inbasic_html, andhdurlis shown as the still frame.apod_basic_not_found, which is reported as "has no picture for YYYY-MM-DD".Changes:
countandthumbsare retired throughretiredParameters: the new API has no random mode, and the catalog saysthumbsis disabled. They were also removed from the prompts.src/util/html.ts).assets.science.nasa.gov/dynamicimage, falling back to the original (resized GIFs return 404).basic_htmlpage.DONKI move
CCMC moved the public DONKI API from
kauai.ccmc.gsfc.nasa.gov/DONKI/WS/get/...toccmc.gsfc.nasa.gov/DONKI-API/get/...on 2026-09-30, andapi.nasa.gov/DONKI/*now returns a 301 to CCMC's news page even with a valid key. The new endpoints returned 404 during the maintenance window and started serving data at 16:43 UTC (12:43 PM EDT).Before switching I checked all 11 endpoints (GST, CME, CMEAnalysis, IPS, FLR, SEP, MPC, RBE, HSS, WSAEnlilSimulations, notifications) on the new host:
application/jsonarrays, with the same record fields as before (flrID,beginTime,classType,activityID, ...).api_keyparameter is ignored.[]. Without dates, DONKI defaults to the last 30 days./flrand/FLR/return JSON 404s), and the tool already uses the documented case.nasa_donkinow calls the new host throughhttpRequestinstead ofnasaApiGet, with no key. Its unit test, description, the key lists in.env.example, the README,--helpandconfig.ts, the Inspector examples and the CHANGELOG are updated.New tools
Each tool was probed live before being added.
nasa_insight_weatherapi.nasa.gov/insight_weather/NASA_API_KEYnasa_tletle.ivanstanojevic.me/api/tle(CelesTrak data)nasa_ssc_observatories,nasa_ssc_locationssscweb.gsfc.nasa.gov/WS/sscr/2nasa_techporttechport.nasa.gov/api(GET search and project)nasa_techtransfertechnology.nasa.gov/api/api/{patent,patent_issued,software,spinoff}/{q}nasa_trek_layers,nasa_trek_tiletrek.nasa.govcatalog and WMTS (Mars, Moon, Vesta)jpl_mission_designssd-api.jpl.nasa.gov/mdesign.api(modes A and Q)Notes:
["java.util.ArrayList", [...]]), which is unwrapped. A month of ISS positions at 60 s is 7.8 MB, soresolutionFactoris chosen automatically to keep each call to about 8,000 values, or rejected with a suggested minimum when the caller sets one too small.api.nasa.gov/techtransfer/...form I tried (with the key) returns the HTML help page, and that page points totechnology.nasa.gov/api/api/..., which returns JSON without a key. The service ignores paging and returns all matches, solimitis applied locally.GET /api/projects/searchand/api/projects/{id}work without a token.POSTsearch returns 401 (it needs a session nonce), so it isn't used. GET search honourslimitbut ignoresoffset. Contact emails are kept out of text and resources.trekProjection, because the polar index mixes north and south layers. Tiles are addressed through each layer'sWMTSCapabilities.xml, and matrices inside XML comments are ignored (the Moon WAC mosaic has some). Tiles can also be picked by latitude/longitude on global equirectangular grids. Tile URLs outsidetrek.nasa.govare refused.{"response":{"message":…}}error bodies are now summarized.config.tsgets no newregisterSecret..env.example, the README table, the--helptext and theconfig.tscomment now list which tools useNASA_API_KEY.Not added, and why
sb_ident,sb_radar,sb_sat,sbdb_query,sbwobs,horizons_lookup): not in scope of the catalog comparison. They are candidates for a follow-up.Known issue (not changed here)
nasa_donkistill returns the full upstream JSON. With the solar-storm prompt, a month of CMEs (106 records) exceeded the server's 250,000-character limit, and a month of CMEAnalysis output was too large for the client's tool-output limit. The client recovered using the FLR, GST and IPS results, but compact per-record summaries for DONKI would be a worthwhile follow-up. This behavior predates the move.Verification
npm test(143 tests),npm run lintandnpm run docs:checkpass.NASA_MCP_LIVE=1runs the new live APOD check, which passes without a key.test/helpers/fake-fetch.tsfor every new tool and for APOD (range paging, placeholderhdurl, GIF fallback, video URLs, retired parameters).node dist/index.js, keys read from.env) and returned real data. That coveredtools/list(32 tools); APOD for latest, 2015-07-14, a 7-day range,count(migration error),resources/readandprompts/get; InSight; TLE by ID and by search; SSC observatories and locations; TechPort search and project; TechTransfer patents and software; Trek layers (Mars, Vesta south pole) and tiles (Mars by lat/lon, Moon zoom 2, Vesta south pole); and Mission Design objects and lists. No key value appeared in any output.nasa_donkiwas called over MCP stdio for all 11 types (2026-09-20 to 2026-09-29) withNASA_API_KEYblanked for the server process, and every call returned data or an explicit "No DONKI ... events".nasa_trek_layersthennasa_trek_tileby latitude/longitude for Olympus Mons, andjpl_mission_designwithcrit: 3for the lowest delta-v NEOs) and answered from live data.