Skip to main content
Glama
eagnespuerto

Planet Hunter MCP

by eagnespuerto

Planet Hunter MCP

license release tests made with MCP website Ko-fi Linktree

An MCP server for TESS planet hunters. It connects an AI assistant to Vetstar, MAST, SIMBAD, VizieR, Gaia DR3, ExoFOP-TESS, the NASA Exoplanet Archive, NASA ADS, Crossref/DataCite, the Unified Astronomy Thesaurus and Zenodo. With those it can take a candidate from a vetting report to a verified ephemeris, an AAS Research Note, and a Zenodo preprint bundle that are ready to submit.

The tools follow AGENT_SPEC.md, the stage-by-stage contract (S1–S12) taken from the HD 128329 (TIC 402175877) RNAAS run. The server prepares files only. It has no upload, submit, publish or push tools; you click those buttons yourself.

What it covers

Stage

Tools

What they do

S1 Triage

ph_vetstar_vet, ph_vetstar_parse_report, ph_vetstar_status, ph_quicklook_physics

Run Vetstar on MAST data, or parse a Vetstar PDF with pymupdf. Red-flag checks catch BLS artefact periods, blind or zero-depth odd/even tests, placeholder depths, SPOC DV misfits, LS harmonics, R₂ > 2 R_Jup and centroid offsets. Also gives R₂ and a Planck-based T₂.

S2 Identity and contamination

ph_resolve_target, ph_contamination, ph_simbad_region

TIC v8.2 record. For each Gaia DR3 neighbour, the dip it would need, δ_nb = δ(1+f)/f, combined with the centroid σ.

S3 Novelty and literature

ph_vizier_sweep, ph_vizier_query, ph_simbad_references, ph_exofop, ph_exoplanet_archive_cone, ph_exoplanet_archive_query, ph_ads_search

Sweeps every VizieR catalogue and flags variability and period tables (this is how IJspeert+2024 turned up when SIMBAD missed it). Also ExoFOP TOIs and CTOIs, known planets and TOIs, and ADS through its API.

S4 Data

ph_mast_list_lightcurves, ph_mast_download_lightcurves

One light curve per sector, preferring SPOC 2-min, then TESS-SPOC FFI, then QLP. Cached locally, with warnings for artefact runs.

S5–S7 Analysis

ph_find_eclipses, ph_fit_ephemeris, ph_primary_stack, ph_secondary_search

Trapezoid mid-times flagged for full coverage. Weighted ephemeris with O−C. P/2, P/3 and 2P alias tests. Stacked primary (trapezoid, or with model="batman" a quadratic limb-darkened Mandel–Agol transit with Claret 2017 TESS limb-darkening priors: Rp/R★, b, a/R★, depth, T₁₄, T₂₃ with errors) and orbit geometry (k_min, a/R₁, b, e·sinω). Per-visit local-baseline secondary search with red-noise inflation and a lone-spike test.

S8 Figure

ph_make_figure

The single RNAAS figure: (a) stacked primary with model, (b) secondary search with a ±3σ band.

S9–S11 Manuscript

ph_rnaas_scaffold, ph_rnaas_check, ph_latex_build, ph_rnaas_submission_folder

AASTeX 7.0.1 skeleton with the AI disclosure, Vetstar credit and a \dataset entry for each MAST product. Checks RNAAS limits, compiles and renders pages, and builds a flat single-column submission folder that is tested standalone.

S10 References

ph_verify_references, ph_uat_search

Checks every DOI in a .bib/.tex against Crossref or DataCite (title, volume, page) and verifies UAT keyword IDs.

S12 Zenodo

ph_zenodo_prepare_bundle, ph_zenodo_check_record

Preprint PDF, source zip, code and data zip, deposit-format metadata and an upload walkthrough. After you publish, it diffs the live record against the plan.

Ledger and QA

ph_paper_numbers, ph_acceptance_checklist

Every quotable number is written to paper_numbers.json. The checklist reports the spec's §3 acceptance items.

Resources: planet-hunter://spec (the pipeline contract) and planet-hunter://targets/{tic}/numbers. Prompt: vet_tess_candidate.

Related MCP server: Astro MCP

Validation

scripts/regression_hd128329.py reruns the published HD 128329 analysis through the MCP tools (Sector 93 QLP excluded, as in the paper):

Quantity

Published

This server

T₀ (BJD_TDB)

2459335.60643(36)

2459335.60643(36)

P (d)

39.295590(9)

39.295590(9)

Primary depth / T₁₄

10.3 % / 7.1 h

10.37 % / 7.09 h

Secondary at φ = 0.5

−24 ± 79 ppm

−24 ± 79 ppm

3σ limit, inflation

240 ppm, 1.48

243 ppm, 1.48

Brightest neighbour (G = 11.7 at 118″)

δ_nb ≈ 0.77

δ_nb = 0.78

scripts/regression_wasp98.py is the known-planet control: WASP-98 b (TIC 166833457, TOI-404.01), with 34 transits in SPOC 2-min data over about 8 years:

Check

Result

Vetstar S107

"Known Planet", with 0 red flags

P

2.9626414(3) d, against the archive's 2.96264036 d; O−C rms 0.95 min

TOI-404.01 epoch

Predicted to −0.5 min (0.9σ) at E = 255

Contamination

On target. A G = 8.5 star 6.6 px away is ruled out by the on-target centroid.

Trapezoid fit

Depth 2.55 %, T₁₄ 1.84 h (underfits the limb-darkened bottom)

Limb-darkened fit (model="batman")

Rp/R★ = 0.1587 ± 0.0011 (archive 0.15824 ± 0.00081, +0.3σ); b = 0.685 ± 0.018 (archive 0.71 ± 0.01, −1.2σ); depth 2.63 %, T₁₄ 1.92 h (archive 1.908 h)

Archive values are fetched live with ph_exoplanet_archive_query (pscomppars) when the script runs.

Unit tests (pytest -m "not network") use synthetic eclipsing-binary light curves and synthetic limb-darkened transits.

Install

Requires Python ≥ 3.10. Building manuscripts also needs TeX Live with aastex701.cls and aasjournalv7.bst.

git clone https://github.com/eagnespuerto/planet-hunter-mcp
cd planet-hunter-mcp && python -m venv .venv && .venv/bin/pip install -e .

On Windows the executable is at .venv\Scripts\planet-hunter-mcp.exe.

Claude Code

claude mcp add planet-hunter -- /path/to/planet-hunter-mcp/.venv/bin/planet-hunter-mcp

Claude Desktop / other clients (mcpServers JSON)

{
  "mcpServers": {
    "planet-hunter": {
      "command": "/path/to/planet-hunter-mcp/.venv/bin/planet-hunter-mcp",
      "env": { "PLANET_HUNTER_WORKDIR": "~/planet-hunter", "ADS_API_TOKEN": "" }
    }
  }
}

Streamable HTTP, for remote use: planet-hunter-mcp --transport streamable-http --port 8000.

Configuration

Variable

Default

Purpose

PLANET_HUNTER_WORKDIR

~/planet-hunter

Per-target cache and outputs (TIC<id>/lc, paper_numbers.json, paper/)

VETSTAR_URL

https://vetstar.onrender.com

Vetstar API. Point it at a local instance (http://localhost:8000) if you run your own.

VETSTAR_TIMEOUT

600

Seconds. The free tier cold-starts, and MAST downloads happen server-side.

ADS_API_TOKEN

unset

Needed for ph_ads_search; get one from https://ui.adsabs.harvard.edu/user/settings/token.

Ground rules built into the tools

  • Nothing is submitted, uploaded or published. Bundles and walkthroughs are prepared, and a human acts on them.

  • Bot challenges are never bypassed. Without an ADS token the server explains what to do and does not scrape the UI.

  • Every DOI is resolved before it is cited. A DOI written from memory resolved to a different paper in the reference run.

  • Every number has a source. Analysis tools write to paper_numbers.json, and the scaffolded .tex embeds that ledger as comments.

  • Novelty claims come after the literature sweep. VizieR's all-catalogue sweep is part of S3 because SIMBAD alone is not enough.

Development

pip install -e ".[dev]" && pytest -m "not network"

Credits: Vetstar (TESS Vetting Studio) by Ella Agnes Puerto. Data services: MAST/TESS, CDS SIMBAD and VizieR, ESA Gaia, ExoFOP-TESS, the NASA Exoplanet Archive, NASA ADS, Crossref, DataCite, the UAT and Zenodo.

Built with help from Claude (Anthropic). MIT licensed.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Provides seamless access to the NASA Astrophysics Data System (ADS) for searching astronomical papers, tracking citations and metrics, managing paper libraries, and exporting BibTeX references through natural language conversation.
    10
    9
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides unified natural language access to 40+ astronomical databases and surveys including DESI, SIMBAD, SDSS, and Gaia, enabling researchers to search, retrieve, and analyze astronomical data without learning complex APIs.
    6
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI assistants to interact with the SciX (formerly NASA ADS) API to search scientific literature, export citations, and analyze bibliometric data. It supports advanced tools for managing libraries, resolving astronomical object names, and exploring citation networks.
    2
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    A local, open-source MCP server that wraps astronomy data services (SIMBAD, JPL Horizons, VizieR, etc.) behind a conversational interface, enabling AI assistants to answer astronomy questions with real, typed, and provenance-tracked data.
    13
    1
    MIT