Skip to content

Releases: cyanheads/astronomy-mcp-server

v0.2.3: ephemeris row-drop disclosure

Choose a tag to compare

@cyanheads cyanheads released this 31 Jul 01:37
v0.2.3
ea5ed42

ephemeris row-drop disclosure

  • astronomy_get_ephemeris: a Horizons row missing a distance no longer fails the whole call with a schema-rejected NaN; unusable rows are dropped and disclosed via an optional dropped count and notice (#18)
  • astronomy_get_ephemeris: invalid_step error message now lists all five accepted units (m, h, d, mo, y)

CHANGELOG v0.2.3

v0.2.2: content[] numeric parity, stargazing-plan moon step

Choose a tag to compare

@cyanheads cyanheads released this 31 Jul 00:59
v0.2.2
c0c2136

content[] numeric parity, stargazing-plan moon step

  • astronomy_get_sky_position, astronomy_get_rise_set, astronomy_get_moon_phase, astronomy_find_events, astronomy_get_ephemeris, astronomy_get_satellite_passes: format() now carries each field's exact value alongside its rounded display, so a content[]-only client recovers what structuredContent carries (#14)
  • astronomy_list_visible: keeps only the distance's exact tail on its scan line to avoid a ~1.7x content[] size increase; astronomy_get_sky_position remains the full-precision lookup for any listed body (#14)
  • astronomy_stargazing_plan: added an observer-relative astronomy_get_rise_set("moon") step, since the Moon's phase alone can't say whether it's above the horizon (#16)

CHANGELOG v0.2.2

v0.2.1: Ephemeris input validation and satellite pass-boundary fixes

Choose a tag to compare

@cyanheads cyanheads released this 30 Jul 23:58
v0.2.1
0a337fe

Ephemeris input validation and satellite pass-boundary fixes

  • astronomy_get_ephemeris: truncation notice now reaches structuredContent and content[] instead of being silently stripped (#11)
  • astronomy_get_ephemeris: reject a lone observer coordinate, a backwards time range, and a malformed step before requesting Horizons (#13)
  • astronomy_get_satellite_passes: a window opening mid-pass no longer reports the query boundary as a false rise time (#12)
  • astronomy_get_satellite_passes: reject an element set SGP4 can't propagate to the window instead of returning an empty pass list (#17)

CHANGELOG v0.2.1

v0.2.0: earth apsides, find_events fixes, mcp-ts-core 0.11.0

Choose a tag to compare

@cyanheads cyanheads released this 30 Jul 22:59
v0.2.0
88120ca

earth apsides, find_events fixes, mcp-ts-core 0.11.0

  • find_events: opposition/conjunction times were swapped for every planet, relative to astronomy-engine's convention (#7)
  • find_events: moon_phase age_days over-reported by ~29.5d for ~1.5 days after a new moon (#8)
  • find_events: an unsupported body for a body-relative event leaked astronomy-engine's raw internal errors instead of a clean validation error (#9)
  • find_events: perigee_apogee accepts body "earth" for its heliocentric perihelion/aphelion; conjunction on mercury/venus now reports both inferior and superior passes via conjunction_kind (#10)
  • find_events: corrected the description's claim that lunar eclipses take an observer and report local visibility (#15)
  • horizons/satellite services adopt mcp-ts-core's canonical status/body error-data fields and correctly map fetch timeouts to their own typed unavailable contract
  • repo hygiene (.gitattributes, funding link, security policy), Dockerfile hardening, a Socket install-time scanner, and a framework docs/scripts/skills resync
  • deps: @cyanheads/mcp-ts-core ^0.10.9 -> ^0.11.0 (+ dev-dep bumps)

CHANGELOG v0.2.0

v0.1.3: readable content[] and prompt-injection hardening

Choose a tag to compare

@cyanheads cyanheads released this 28 Jun 14:12
v0.1.3
5bc1e17

readable content[] and prompt-injection hardening

Presentation pass on the content[] markdown twin, plus delimiting user-supplied input in the stargazing prompt.

Added:

  • astronomy_get_rise_set echoes a body output field so content[]-only clients see which body the cycles describe (#3)

Changed:

  • astronomy_get_rise_set, astronomy_find_events, astronomy_list_visible, astronomy_get_satellite_passes — content[] now leads with human-readable headers and rounds precision instead of dumping raw fields (#3)
  • astronomy_stargazing_plan — wraps user-supplied location and date in <location>/<date> tags framed as data, not instructions (#6)

115 tests pass; bun run devcheck clean.

v0.1.2: extension time validation and list_visible bug fixes

Choose a tag to compare

@cyanheads cyanheads released this 28 Jun 04:17
v0.1.2
db53b51

extension time validation and list_visible bug fixes

Four bug fixes across the gated extension tools and astronomy_list_visible.

Fixed:

  • astronomy_get_ephemeris: topocentric (observer) calls returned distance_au NaN; the Horizons request now adds azimuth/elevation (QUANTITIES '1,4,9,20') for an observer so the CSV columns align (#1)
  • astronomy_get_ephemeris / astronomy_get_satellite_passes: an unparseable start now rejects with invalid_time (InvalidParams) before any network call, instead of a generic error or a silently empty pass list; satellite passes also enforces the SGP4 1900-2100 span (#5)
  • astronomy_list_visible: the default list is naked-eye only; telescopic Uranus, Neptune, and Pluto no longer appear (#4)
  • astronomy_list_visible: sky_condition, sun_altitude_degrees, and total_count now ride the output and lead the content[] text, so content[]-only clients see the sky-condition gate (#2)

110 tests pass; bun run devcheck clean.

v0.1.1: Initial release

Choose a tag to compare

@cyanheads cyanheads released this 26 Jun 02:18
v0.1.1
c1f9916

Initial release

Observational astronomy computed in-process via astronomy-engine — keyless, offline, and deterministic for a given (body, time, observer). Two network-backed extensions register only behind their config gate.

Added:

  • Five keyless core tools — astronomy_get_sky_position, astronomy_get_rise_set, astronomy_get_moon_phase, astronomy_find_events, astronomy_list_visible.
  • astronomy://body/{body} reference resource and the astronomy_stargazing_plan prompt.
  • Gated extensions — astronomy_get_ephemeris (JPL Horizons) and astronomy_get_satellite_passes (CelesTrak TLE + SGP4).
  • Optional extension config (ASTRONOMY_ENABLE_HORIZONS, ASTRONOMY_ENABLE_SATELLITES, ASTRONOMY_DEFAULT_TIMEZONE) declared in server.json and documented in .env.example.

Changed:

  • Distributed under the @cyanheads/ npm scope as @cyanheads/astronomy-mcp-server.
  • Server description/websiteUrl derive from package.json; server.json runtimeHint set to bun.

Dependency bumps:

  • @types/node ^26.0.0 → ^26.0.1

103 tests pass; bun run devcheck clean.