mcpbeat Sign in

Astronomy MCP Server

answering

Astronomy MCP Server is answering right now. Last checked 10 min ago. 93 installs a week from npm. It exposes 7 tools. Last commit 25 Aug 2026.

Offline observational astronomy: positions, rise/set, moon phases, eclipses, and seasons.

Installs per day peak 639 · avg 47 · +80% w/w
a month agotoday
Uptime history 31 days of history · worst day 99%
31 days agonow
100.0%
Uptime 24h
91 of 91 checks
7
Tools
read from the server
401 ms
Response time
average over 24h
93
Installs / week
npm and PyPI

What changed 8

Every tool that appeared, vanished or quietly changed what it asks for. Recorded since 25 August 2026. No other catalogue keeps this.

25 Aug 7 tools changed the parameters they ask for astronomy_find_events, astronomy_get_ephemeris, astronomy_get_moon_phase and 4 more
25 Aug a tool changed version

Nothing serious here today

Today is the operative word: we check Astronomy MCP Server every 15 minutes and re-read its code on every release. Watch it and you find out the day that stops being true.

Three servers free · no card

Connect this server

Endpoint below is the one we actually reach during checks — not the one copied from a README. Last verified 10 min ago.

run in your terminal
claude mcp add astronomy-mcp-server --transport http https://astronomy.caseyjhand.com/mcp
~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "astronomy-mcp-server": {
      "url": "https://astronomy.caseyjhand.com/mcp"
    }
  }
}
~/.codex/config.toml
[mcp_servers.astronomy-mcp-server]
url = "https://astronomy.caseyjhand.com/mcp"
.cursor/mcp.json
{
  "mcpServers": {
    "astronomy-mcp-server": {
      "url": "https://astronomy.caseyjhand.com/mcp"
    }
  }
}
.vscode/mcp.json
{
  "mcpServers": {
    "astronomy-mcp-server": {
      "url": "https://astronomy.caseyjhand.com/mcp"
    }
  }
}

This one needs environment variables set before it will start: MCP_HTTP_HOST (The hostname for the HTTP server.), MCP_HTTP_PORT (The port to run the HTTP server on.), MCP_HTTP_ENDPOINT_PATH (The endpoint path for the MCP server.), MCP_AUTH_MODE (Authentication mode to use: 'none', 'jwt', or 'oauth'.), MCP_LOG_LEVEL (Sets the minimum log level for output (e.g., 'debug', 'info', 'warn').), ASTRONOMY_ENABLE_HORIZONS (Register the astronomy_get_ephemeris tool, which fetches small-body and spacecraft ephemerides from JPL Horizons. Off by default; the core is keyless and offline.), ASTRONOMY_ENABLE_SATELLITES (Register the astronomy_get_satellite_passes tool, which predicts visible satellite passes from CelesTrak GP element sets propagated with SGP4. Off by default.), ASTRONOMY_DEFAULT_TIMEZONE (Fallback IANA timezone for observer-local output when a tool call omits `timezone`. Unset means UTC-only output.). The author declared them in the registry entry; get the values from the project itself.

Available tools 7

Read directly from the server with tools/list, grouped by what they act on. If a tool disappears, we record the date.

astronomy
astronomy_find_events
Search forward from a start time for the next occurrences of one sky-event class, selected by the `event` enum: solar_eclipse, lunar_eclipse, equinox, solstice, moon_quarter, opposition, conjunction, max_elongation, or perigee_apogee. Only solar_eclipse takes an observer: pass latitude and longitude to get local circumstances (contact times plus `local_visible`). Every other class is geocentric and needs no location — a lunar eclipse is the same event everywhere the Moon is up, so it returns contact times and no `local_visible`. The body-relative events (opposition, conjunction, max_elongation, perigee_apogee) require a `body`: opposition applies to the superior planets (mars through pluto), conjunction to any planet, max_elongation to mercury and venus, and perigee_apogee to the moon (perigee/apogee), earth, or a planet (perihelion/aphelion). Returns the next `count` occurrences (default 1). Start defaults to now; pass an IANA `timezone` for observer-local timestamps.
astronomy_get_ephemeris
Fetch a time-series ephemeris for a small body (asteroid or comet) or spacecraft from JPL Horizons — RA/Dec, distance, and apparent magnitude over a span, optionally with observer-relative altitude/azimuth. This covers objects the in-process major-body set cannot. The designation is passed to Horizons verbatim, so it must be in a form Horizons resolves to a single record: a numbered asteroid takes a trailing-semicolon record lookup (e.g. "433;" for Eros, "1;" for Ceres), and a periodic comet takes the DES + closest-apparition form (e.g. "DES=1P;CAP" for Halley) — a bare name like "433 Eros" or "1P/Halley" returns no match or an ambiguous record list and is rejected. Spacecraft take their negative SPK-ID. `start` and `stop` are ISO 8601 UTC and `stop` must be after `start`; `step` is a count plus a unit of m, h, d, mo, or y, such as "1d", "1h", or "10m". Supplying observer latitude/longitude yields topocentric coordinates and adds alt/az — supply both or neither. This is a gated, network-backed extension (JPL Horizons is keyless but rate-limited and best-effort); large spans truncate inline at 200 rows, and the truncation notice names the exact `start` to resume from — one step past the last row returned, because Horizons includes the start instant in its output — so re-calling from there continues the series without repeating a sample. Splitting the range into smaller adjacent spans works too; keep the same step either way so no sample is lost.
astronomy_get_moon_phase
Report the Moon phase for an instant: illuminated fraction, phase name, synodic age in days since the new moon, phase angle, and the next four quarter phases (new, first quarter, full, last quarter) with timestamps. Answers "what is the moon phase tonight" and "when is the next full moon" in one call without iteration. The time defaults to now; pass an IANA `timezone` to also receive observer-local timestamps. The phase is geocentric — no observer location is needed.
astronomy_get_rise_set
Compute rise, set, and culmination (transit) times for a body at an observer location, plus the maximum altitude at culmination. For the Sun, also returns the three twilight pairs (civil −6°, nautical −12°, astronomical −18°) so a single call answers "when does the sun set and when is it truly dark." Searches forward from `start` (default today) and returns the next `count` cycles (default 1). When the body is already above the horizon at `start`, the first cycle is the interval in progress: its `set` is the imminent one and its `rise` is null, since that rise precedes the search — so a set is never reported earlier than the rise beside it. Circumpolar or never-rises situations are reported as null rise/set fields with an explanatory note rather than an error — the fact is the answer. Default elevation is 0 m; pass an IANA `timezone` for observer-local times. This server does not geocode — resolve coordinates upstream first.
astronomy_get_satellite_passes
Predict visible passes of a satellite (e.g. the ISS, NORAD 25544) over an observer in the next `days`. Identify the satellite by exactly one of `norad_id` or `name` — supplying both, or neither, is rejected. `name` is matched as a case-insensitive substring of CelesTrak's catalog names, so it resolves only when it picks out a single object: a broader query comes back with the matching objects and their catalog numbers to choose from, and the result echoes the query that resolved it as `resolved_from_name`. Fetches the object's current GP element set from CelesTrak, propagates it with SGP4 in-process, and returns each pass's rise, peak, and set times with azimuths and the peak elevation. Only passes that are naked-eye-plausible are returned — the satellite must be sunlit at peak while the observer's sky is dark. Every returned pass rises within the requested window: a pass already underway at `start` is omitted rather than reported with `start` as its rise, so back up `start` to see it. A `start` further than about a month from the element set's epoch is rejected as out of range on that distance alone, and an element set that will not propagate to a window inside that horizon is rejected as a reentry — so an empty `passes` means only that nothing was visible. CelesTrak publishes only current element sets, so in practice `start` must be within about a month of today. NORAD catalog numbers and catalog names are found at celestrak.org or heavens-above.com. This is a gated, network-backed extension (CelesTrak is keyless but rate-limited; element sets are cached briefly). Default elevation 0 m; pass an IANA timezone for observer-local pass times.
astronomy_get_sky_position
Compute the apparent topocentric position of one solar-system body (sun, moon, mercury through neptune, pluto) or a named bright star for an observer location and instant. Returns equatorial (RA/Dec), refraction-corrected horizontal (altitude/azimuth), and ecliptic coordinates, plus distance, apparent magnitude, angular diameter, phase angle, illuminated fraction, and the constellation it falls in. For a solar-system body it also returns that body card — classification, mean radius, naked-eye visibility — the same values served at astronomy://body/{body}, so a client without resource support does not need a second surface to reach them; a catalog star has no card and the field is absent. Positions are parallax- and aberration-corrected for the given observer; default elevation is 0 m and the default time is now. Supply `star` (e.g. "Sirius", "Polaris") instead of `body` to target a catalog star; `body` is ignored when `star` is set. Pass an IANA `timezone` to also receive the observer-local time. This server does not geocode — resolve a place name to latitude/longitude upstream first.
astronomy_list_visible
The one-call "what is up right now" answer. For an observer location and instant, iterate every naked-eye solar-system body (and, with include_stars, the bundled bright stars), compute altitude and azimuth, keep those above the horizon, rank them brightest-and-highest first, and attach a plain-language visibility note to each. The whole sky is gated by the Sun's altitude into daylight / civil / nautical / astronomical twilight / dark, returned alongside the list. `time` is a single evaluation instant, not a window — for "tonight" pass a time after astronomical dusk (use astronomy_get_rise_set on the sun to find it). Default elevation 0 m; use min_altitude to skip objects grazing the horizon. This server does not geocode — resolve coordinates upstream first; pass an IANA timezone for observer-local times on each body.

Endpoints

URLTransportStateLatencyChecked
https://astronomy.caseyjhand.com/mcp streamable-http answering 410 ms 10 min ago

Alternatives to Astronomy MCP Server

same job, measured the same way
Usno Astronomy
by pipeworx-io

Next solar eclipse, eclipse times by location, Moon phases and seasons from the US Naval…

40 tools answering
CycleCalcs Astronomy
by cyclecalcs

Astronomy: sun, moon, planet, eclipse, twilight and star position calculations.

11 tools answering
Kaalshodh — Indian astronomy time machine
by kaalshodh

Observatory-grade Indian astronomy, years -5000..+5000: positions, eclipses, panchang date search.

5 tools answering
Sky Watch MCP
by nexlab

Observational astronomy in one place

answering
O
Time & Astronomy
by memoryapi

Current time by timezone, astronomy events, and moon phases

3 tools answering
Ephemeris MCP
by scottchronicity

Precision astronomical ephemeris and planetary positions via the Swiss Ephemeris.

67 installs/wk local only
Pondlog Mushroomobserver
by andrewschristison

Mushroom Observer MCP server. Mycology observations, fungal taxonomy, and region discovery.

29 installs/wk local only
Vatnode MCP
by vatnode

Official MCP server: EU VAT validation via VIES, plus offline rates and format checks.

115 installs/wk local only

Astronomy MCP Server — questions

Answers built from our own checks of this server.

What can Astronomy MCP Server do?
It exposes 7 tools, read directly from the server on our last check. Among them: astronomy_find_events, astronomy_get_ephemeris, astronomy_get_moon_phase, astronomy_get_rise_set, astronomy_get_satellite_passes, astronomy_get_sky_position and 1 more. The full list with descriptions is on this page — we take it from the server itself via tools/list, not from a README. How MCP servers expose tools in the first place →
Is Astronomy MCP Server working right now?
We send a real MCP handshake every 15 minutes. Over the last 24 hours 91 of 91 checks got a reply (100.0%), average response time 401 ms. The bar chart above shows every period we have measured.
How do I connect Astronomy MCP Server?
Copy the ready config from this page — we generate it for Claude Code, Claude Desktop, Codex, Cursor and VS Code, each with the file path that client actually reads. It is a remote server, so there is nothing to install — the client connects to the address.
Does Astronomy MCP Server need an API key?
No. Astronomy MCP Server completed a full MCP handshake with us as an anonymous client and listed its tools without asking for anything. All 7 of them are readable on this page. This is what we observed, not what the docs claim.
How fast is Astronomy MCP Server?
It answers our handshake in 401 ms on average, which is faster than 38% of all working MCP servers we measure. The comparison comes from our own checks across the whole registry, every 15 minutes.
How many people use Astronomy MCP Server?
The npm package @cyanheads/astronomy-mcp-server was installed 93 times in the last week. Week over week that is +80%. We show installs rather than GitHub stars on purpose: a star is a bookmark, an install is someone actually running it.
Is Astronomy MCP Server open source?
Yes — it is published under the Apache-2.0 licence, written in TypeScript and 3 stars on GitHub. The source link is on this page, so you can read exactly what it does with your data before you connect it.