Skip to content

Release 1.3.0 with MAST observation, data product and TESS full-frame image tools - #17

Merged
ProgramComputer merged 2 commits into
mainfrom
programcomputer/release-1.3.0
Oct 9, 2026
Merged

ProgramComputer merged 2 commits into
mainfrom
programcomputer/release-1.3.0

Conversation

@ProgramComputer

@ProgramComputer ProgramComputer commented Oct 9, 2026 •

Copy link
Copy Markdown
Owner

Adds three tools for the Mikulski Archive for Space Telescopes (MAST), NASA's archive for TESS, Hubble, JWST, Kepler and other missions, and sets the version to 1.3.0. Existing tools are unchanged.

New tools

  • nasa_mast_observations: observations of a named object, a TIC ID or a sky position.
    • For TESS (the default), it matches TESS Input Catalog stars and lists their light curves by sector: SPOC 2-minute and 20-second light curves, plus high-level science product (HLSP) light curves made from full-frame images (QLP, TESS-SPOC, TARS and others).
    • Other collections (HST, JWST, Kepler, all and others) use MAST's position search.
  • nasa_mast_products: the files of up to 20 observations, with type, size and a download URL for each. It lists science files by default; subgroups and minimum_recommended narrow Hubble and JWST observations, which can list hundreds of files.
  • nasa_tess_ffi: the TESS sectors, cameras and CCDs whose full-frame images cover a position, with sector dates and a TESSCut cutout URL for each sector.

The tools return download links, not files, because the FITS files are often tens of megabytes and an MCP client can't read them anyway.

Notes for review

  • TESS searches go by TIC ID. MAST's footprint-based position search took 65–115 seconds uncached for TESS targets, and once ran past a 90-second timeout. TESS light curves carry the TIC ID as their target name, so the tool matches TIC stars first (Mast.Catalogs.Tic.Cone) and then filters on that ID, which takes about a second. Other collections still use the position search (2–9 seconds in testing).
  • Multi-sector searches aren't counted as sectors. SPOC and TESS-SPOC multi-sector transit searches (obs_id …-s0001-s0039-…) carry only their last sector as sequence_number. They're listed as sector ranges and left out of the sector lists, which otherwise reported sectors the star was never observed in.
  • Position searches default to a 60″ radius. Recent observations of fast-moving nearby stars lie far from their catalog (J2000) position. TRAPPIST-1 is now about 25″ away, so a 10″ circle missed all 121 of its NIRSpec slit observations. TESS TIC matching keeps 10″.
  • Stalled MAST requests are re-sent. MAST latency is heavy-tailed: a request that usually takes half a second sometimes stalls for a minute, while the identical request sent next answers at once. Each attempt gets 30 seconds, with at most 3 attempts within a 90-second budget. All of these requests are read-only. The optional sector-date lookup in nasa_tess_ffi gives up after 15 seconds and the sector list is returned without dates.
  • Results are sorted locally. MAST's row order changes between identical queries, so each search fetches one large page and sorts it, rather than paging.
  • Small refactor. The comma-separated list helper moved from the SSC tool to util/validation.ts so the new tools can share it; SSC behavior is unchanged.

Verification

  • npm run lint, npm run typecheck, a clean build and npm run docs:check all pass. npm test passes 158/158, including 14 new unit tests with mocked MAST and TESSCut responses.
  • The package gate passes: the 1.3.0 tarball installed outside the repo passes the stdio and Streamable HTTP MCP tests.
  • NASA_MCP_LIVE=1 npm run test:live passes 10/10 against the real services, FIRMS included, with four new MAST checks; one of them confirms a light-curve download link answers.
  • An MCP SDK stdio client against dist/index.js sees 35 tools; all three new tools and the nasa/tess-ffi alias answer.
  • Claude Code CLI test: the local build was run as an MCP server with claude -p --mcp-config … --strict-mcp-config on both new README prompts.
    • "Which TESS sectors observed Pi Mensae, and where can I download its 2-minute light curves?" returns 24 sectors with a download link for each (nasa_mast_observations, nasa_tess_ffi and nasa_mast_products, 51 s).
    • "Has JWST observed TRAPPIST-1, and with which instruments?" returns MIRI imaging (257 observations), NIRSpec slit (121) and NIRISS SOSS (13) from one call (46 s). The first run of this prompt led to the instrument counts and the 60″ radius above.

@ProgramComputer
ProgramComputer marked this pull request as ready for review October 9, 2026 01:49
@ProgramComputer
ProgramComputer merged commit 62c7ae4 into main Oct 9, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant