io.github.cyanheads/astronomy-mcp-server
REMOTE · ASTRONOMY.CASEYJHAND.COM · 2 COMPONENTS
Offline observational astronomy: positions, rise/set, moon phases, eclipses, and seasons.
Available components
Last scanned (1 hour ago)
Scores higher than 97% of remote servers
Reachable. Last reached 6 Nov 2026.
Category Health and Science
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security83
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- No authorisation is required to call this server. Nothing on it is marked destructive, but we can't show that an anonymous caller can only read: full credit needs the server to list at least one tool and every tool to be verifiably read-only. We use a best-effort check of tool names and descriptions to tell read-only tools from tools that change things, so some genuinely read-only tools may not get full credit. Names that start with a read verb (get, list, read, search and similar) and accurate readOnlyHint annotations help. Meet that to earn full credit, or require authorisation. See how to fix → View diagnostics → Partial
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC is configured correctly; the domain's records validate against the full chain to the root. View diagnostics → Pass
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability75
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 5627 tokens (~312/item across 18 items; 7 tools + 11 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
- No destabilizing schema changes in the last 30 days.Pass
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 7 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 9 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a current MCP spec version (2026-07-28).Pass
Checks we ran (13)
- TLS certificate
- Authorization
- HTTPS
- HSTS header
- DNSSEC
- Transport
- Schema quality
- Stability
- Tool coverage
- Injection markers
- Destructive annotations
- Judged manipulation
- MCP protocol
Does not apply to this hosted endpoint (2)
- Supply Chain SecurityScored on package channels only. This is a hosted endpoint, so there is nothing to install or inspect.
- Provenance & TransparencyScored on package channels only. This is a hosted endpoint, so there is nothing to install or inspect.
The score does not measure everything. What the score does not measure →
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 6 Nov 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 28 Oct 26 0
- New resource “astronomy-guide” functional
- Server version: 0.4.3 → 0.5.0 functional
- 24 Oct 26 0
- Tool “astronomy_get_rise_set” rewrote its description, which is the text the model reads security
- Server version: 0.4.2 → 0.4.3 functional
- “astronomy_find_events” reworded the description of “start” cosmetic
- 15 Oct 26 0
- Tool “astronomy_find_events” rewrote its description, which is the text the model reads security
- Tool “astronomy_get_ephemeris” rewrote its description, which is the text the model reads security
- Tool “astronomy_get_rise_set” rewrote its description, which is the text the model reads security
- Tool “astronomy_get_satellite_passes” rewrote its description, which is the text the model reads security
- Schema quality: 274 → 337 ▼ functional
- Server version: 0.4.1 → 0.4.2 functional
- “astronomy_find_events” added an optional parameter “body2” cosmetic
- “astronomy_get_satellite_passes” reworded the description of “days” cosmetic
- “astronomy_find_events” reworded the description of “body” cosmetic
- “astronomy_find_events” reworded the description of “count” cosmetic
- “astronomy_get_ephemeris” reworded the description of “designation” cosmetic
- “astronomy_get_ephemeris” reworded the description of “elevation” cosmetic
- “astronomy_get_ephemeris” reworded the description of “start” cosmetic
- “astronomy_get_ephemeris” reworded the description of “step” cosmetic
- “astronomy_get_ephemeris” reworded the description of “stop” cosmetic
- “astronomy_get_rise_set” reworded the description of “count” cosmetic
- 9 Oct 26 0
- Server version: 0.4.0 → 0.4.1 functional
- 28 Sept 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 25 Sept 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 24 Sept 26 0
- Tool “astronomy_get_moon_phase” rewrote its description, which is the text the model reads security
- Tool “astronomy_get_ephemeris” rewrote its description, which is the text the model reads security
- Tool “astronomy_list_visible” rewrote its description, which is the text the model reads security
- Tool “astronomy_get_sky_position” rewrote its description, which is the text the model reads security
- Tool “astronomy_get_satellite_passes” rewrote its description, which is the text the model reads security
- Tool “astronomy_get_rise_set” rewrote its description, which is the text the model reads security
- Tool “astronomy_find_events” rewrote its description, which is the text the model reads security
- Schema quality: 245 → 274 ▼ functional
- Server version: 0.3.0 → 0.4.0 functional
- Server version: 0.2.10 → 0.3.0 functional
- “astronomy_get_sky_position” reworded the description of “star” cosmetic
- “astronomy_get_satellite_passes” reworded the description of “name” cosmetic
- “astronomy_get_ephemeris” reworded the description of “designation” cosmetic
- “astronomy_find_events” reworded the description of “longitude” cosmetic
- “astronomy_find_events” reworded the description of “latitude” cosmetic
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 6 Nov 2026 · Probed https://astronomy.caseyjhand.com/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=caseyjhand.com | CN=WE1,O=Google Trust Services,C=US | 2 Nov 2026 | 31 Jan 2027 | ECDSA 256 | ECDSA-SHA256 | 995a30681ab772540e934241ca1d576c |
| SANs: caseyjhand.com, *.caseyjhand.com | ||||||
| CN=WE1,O=Google Trust Services,C=US (CA) | CN=GTS Root R4,O=Google Trust Services LLC,C=US | 13 Dec 2023 | 20 Feb 2029 | ECDSA 256 | ECDSA-SHA384 | 7ff31977972c224a76155d13b6d685e3 |
| CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) | CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE | 15 Nov 2023 | 28 Jan 2028 | ECDSA 384 | SHA256-RSA | 7fe530bf331343bedd821610493d8a1b |
Background: What to check on a remote MCP endpoint →
DNSSEC secure
Validation of astronomy.caseyjhand.com. — Secure
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | Trust anchor | 20326, 38696 | 8, 8 | Verified |
| com. | DS published | 19718 | 13 | Verified |
| caseyjhand.com. | DS published | 2371 | 13 | Verified |
| astronomy.caseyjhand.com. | Verified address RRset verified with the apex keys |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
| Header | Value |
|---|---|
| strict-transport-security | max-age=63072000; includeSubDomains; preload |
| x-content-type-options | nosniff |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://astronomy.caseyjhand.com/mcp | Verified | 200 | |
| http (plaintext) | http://astronomy.caseyjhand.com/mcp | HTTPS enforced | 301 | https://astronomy.caseyjhand.com/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
astronomy_find_events astronomy-mcp-server: find sky events ~908
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. Both eclipse classes take an optional observer (latitude and longitude together). solar_eclipse without one returns global eclipses — kind, peak time, obscuration, and for a total or annular eclipse the latitude/longitude where it is greatest; with one it returns only eclipses visible from that point, with local contact times, `local_visible`, and the Sun's altitude at each contact. lunar_eclipse returns geocentric contact times, the same instants everywhere on Earth; an observer adds `local_visible` and the Moon's altitude at each contact. Every other class is geocentric and ignores a location. 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). conjunction with `body` alone is that planet's conjunction with the Sun. Add `body2` for a conjunction of two bodies — the Moon or a planet with another: the instant they share one ecliptic longitude seen from Earth's center, with their `separation_degrees` at that instant. That separation is not always their closest approach, since two planets can pass closer days or weeks away, and listings that time conjunctions by right ascension differ by hours, or by days for slow pairs. Returns the next `count` occurrences (default 1), up to 20 per call: a larger `count`, up to 200, returns the first 20 and a notice naming the exact `start` and `count` that continue the series. Searches stop at the end of 2100, the close of the supported span; when that leaves fewer than `count`, a notice says so. Start defaults to now; pass an IANA `time…
| Name | Type | Req | Description |
|---|---|---|---|
| body | string | – | Target body — required for opposition, conjunction, max_elongation, and perigee_apogee; ignored otherwise. "earth" is accepted only for perigee_apogee, which returns its perihelion and aphelion. With… |
| body2 | string | – | Second body for a conjunction of two bodies: the Moon or a planet, different from `body`. Accepted only with event "conjunction", where it replaces the conjunction of `body` with the Sun by the conju… |
| count | integer | – | Number of forward occurrences to return. Default 1. At most 20 are computed per call; a count up to 200 returns the first 20 with a notice naming the `start` and `count` that continue the series. |
| elevation | number | – | Observer elevation in meters above sea level. Default 0. |
| event | string | yes | Which class of event to search for. |
| latitude | number | – | Observer latitude in decimal degrees, supplied together with longitude. Optional for solar_eclipse and lunar_eclipse, where it adds local circumstances; omit both for a global solar search. Ignored b… |
| longitude | number | – | Observer longitude in decimal degrees, supplied together with latitude. Optional for solar_eclipse and lunar_eclipse; ignored by every other event. |
| start | string | – | Search start as an ISO 8601 UTC string, e.g. "2024-01-01T00:00:00Z". Eclipses are included when their peak is at or after start; earlier contacts may still be returned. Defaults to now. A value with… |
| timezone | string | – | IANA timezone for localized output, e.g. "America/Los_Angeles". When omitted, output is UTC-only. |
| Name | Type | Req | Description |
|---|---|---|---|
| cap | number | – | The per-call event cap that was applied. |
| error | object | – | Present when the call failed. Absent on success. |
| events | array | – | The next occurrences of the requested event class, in chronological order. |
| notice | string | – | Why the list is shorter than the requested count: either the per-call cap held events back, and the notice names the exact `start` and `count` to re-call with, or the search reached the end of the su… |
| shown | number | – | Number of events returned when the cap applied. |
| totalCount | number | – | Number of event occurrences returned. |
| truncated | boolean | – | True when `count` exceeded the per-call cap and only the first events came back. |
No examples provided.
astronomy_get_ephemeris astronomy-mcp-server: get small-body ephemeris ~1,135
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). Spacecraft take their negative SPK-ID. Anything else goes through the Horizons name search: a bare name matching nothing (e.g. "433 Eros") or several records (e.g. "1P/Halley") is rejected, but one matching a single object succeeds even when that object is not the one meant — "Eros" resolves to Kerberos, a moon of Pluto — so compare `target_name`, the object Horizons resolved, with the one intended. A major-body name matching several bodies (e.g. "Mars") is rejected with the ID number of each body it matched — pass one, such as "499" for the planet. `start` and `stop` are ISO 8601 UTC dates in the Gregorian calendar, extended before 1582, in years 0100 through 9999; `stop` must not be before `start`, and a `stop` equal to `start` returns the single row at that instant. `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 ste…
| Name | Type | Req | Description |
|---|---|---|---|
| designation | string | yes | JPL Horizons target, passed verbatim — use a form that resolves to one record. Numbered asteroid: trailing-semicolon record lookup, e.g. "433;" (Eros), "1;" (Ceres). Periodic comet: DES + closest-app… |
| elevation | number | – | Observer elevation in meters above sea level. Default 0. With latitude and longitude it must be greater than -20000 and less than 40000000 — the observer altitudes Horizons accepts; a geocentric requ… |
| latitude | number | – | Observer latitude in decimal degrees — supply together with longitude for topocentric coordinates and alt/az. Supplying one without the other is rejected. |
| longitude | number | – | Observer longitude in decimal degrees. Supply together with latitude; one without the other is rejected. |
| start | string | – | Ephemeris start as an ISO 8601 UTC string, e.g. "2024-01-01T00:00:00Z", in years 0100 through 9999 — the calendar years JPL Horizons reads. Dates are Gregorian, extended before 1582. Defaults to now.… |
| step | string | – | Step size as a positive count up to 2147483647 plus a unit of m (minutes), h (hours), d (days), mo (months), or y (years), e.g. "10m", "1h", "1d". Default "1h". |
| stop | string | – | Ephemeris stop as an ISO 8601 UTC string in years 0100 through 9999, at or after start — equal to start returns the single row at that instant. Defaults to 24 hours after start. A value with no zone… |
| Name | Type | Req | Description |
|---|---|---|---|
| cap | number | – | The inline row cap that was applied. |
| designation | string | – | The body designation echoed from the request. |
| dropped | number | – | Rows Horizons returned that carried no usable time, position, or distance and were dropped. Present only when at least one row was dropped, in which case the series has gaps and is shorter than the r… |
| error | object | – | Present when the call failed. Absent on success. |
| notice | string | – | Caveats on the returned series — how to retrieve rows omitted by the cap, and whether any rows were dropped. Absent when the whole span came back intact. |
| points | array | – | Time-series of positions, one per step, in chronological order. |
| shown | number | – | Number of ephemeris rows returned. |
| target_name | string | – | The object JPL Horizons resolved the designation to, from its 'Target body name' header — compare it with the intended object, since a bare name can resolve to a different one. Absent when Horizons'… |
| truncated | boolean | – | True when the requested span continues past the returned rows; the notice names the start to resume from. |
No examples provided.
astronomy_get_moon_phase astronomy-mcp-server: get moon phase ~225
Report the Moon phase for an instant: illuminated fraction, phase name, synodic age in days since the new moon, phase longitude (the Moon–Sun ecliptic-longitude difference, 180° at full), 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.
| Name | Type | Req | Description |
|---|---|---|---|
| time | string | – | Instant to evaluate as an ISO 8601 UTC string, e.g. "2024-12-15T00:00:00Z". Defaults to now. A value with no zone designator is read as UTC, not the local zone of the server process. |
| timezone | string | – | IANA timezone for localized output, e.g. "America/Los_Angeles". When omitted, output is UTC-only. |
| Name | Type | Req | Description |
|---|---|---|---|
| age_days | number | – | Synodic age in days since the previous new moon. |
| error | object | – | Present when the call failed. Absent on success. |
| illuminated_fraction | number | – | Fraction of the lunar disc illuminated, 0 to 1. |
| next_quarters | array | – | The next four lunar quarter phases (new/first/full/last) in chronological order. |
| phase_longitude_degrees | number | – | The Moon's ecliptic longitude minus the Sun's, in degrees [0,360): 0 = new, 90 = first quarter, 180 = full, 270 = last quarter. Not the Sun–body–observer phase angle astronomy_get_sky_position report… |
| phase_name | string | – | Human-readable phase name (New Moon, Waxing Crescent, First Quarter, …, Waning Crescent). |
| time_local | string | – | The same instant in the observer-local timezone with offset, present only when a timezone was supplied. |
| time_utc | string | – | The instant the phase was computed for, in ISO 8601 UTC. |
No examples provided.
astronomy_get_rise_set astronomy-mcp-server: get rise/set times ~532
Compute rise, set, and culmination (transit) times and maximum transit altitude for a body at an observer location. Searches forward from `start` (default now) for `count` daily cycles (default 1), including days without crossings. For the Sun, each cycle carries civil −6°, nautical −12°, and astronomical −18° twilight: dusk after its set or culmination, then dawn before the next day begins. A crossing absent from that night is null. When the Sun is down and the first cycle's day begins after `start`, `night_in_progress` carries the preceding night, including polar nights without a sunset and times before `start` that have passed. A first cycle beginning after the culmination of a dark day instead carries that night itself, with rise, set, and transit null. When a body is already up, the partial first cycle has null rise and the imminent set; no set precedes its own rise. Circumpolar and never-rises cycles have null crossings and explanatory notes. At most 31 cycles are served per call; a count up to 366 returns the first 31 with a notice naming the exact `start` and `count` for the rest, or saying no continuation exists past 2100. A continuation may repeat the preceding night in `night_in_progress`, while cycles continue without overlap. Default elevation is 0 m; pass an IANA `timezone` for local output. Resolve coordinates upstream; this server does not geocode.
| Name | Type | Req | Description |
|---|---|---|---|
| body | string | yes | The body to compute rise/set for. Twilight is included only when this is "sun". |
| count | integer | – | Number of forward rise/set cycles to return. Default 1. At most 31 are computed per call; a count up to 366 returns the first 31 with a notice naming the `start` and `count` that continue the series. |
| elevation | number | – | Observer elevation in meters above sea level. Default 0. |
| latitude | number | yes | Observer latitude in decimal degrees, north positive. |
| longitude | number | yes | Observer longitude in decimal degrees, east positive. |
| start | string | – | Search start as an ISO 8601 UTC string, e.g. "2024-06-21T00:00:00Z". Defaults to now. A value with no zone designator is read as UTC, not the local zone of the server process. |
| timezone | string | – | IANA timezone for localized output, e.g. "America/Los_Angeles". When omitted, output is UTC-only. |
| Name | Type | Req | Description |
|---|---|---|---|
| body | string | – | The body these rise/set cycles are for, echoed from the request. |
| cap | number | – | The per-call cycle cap that was applied. |
| error | object | – | Present when the call failed. Absent on success. |
| events | array | – | One entry per rise/set/transit cycle, searching forward from the start time. |
| night_in_progress | object | – | The night under way at `start`, present only for the Sun when it is below the horizon and the first cycle's day begins after `start`. Each pair is bounded from the previous culmination, or a sunset a… |
| notice | string | – | How to retrieve the cycles the per-call cap held back: the exact `start` and `count` to re-call with, or — when the next cycle starts after 2100, the end of the supported span — that no call can cont… |
| shown | number | – | Number of cycles returned when the cap applied. |
| totalCount | number | – | Number of rise/set cycles returned. |
| truncated | boolean | – | True when `count` exceeded the per-call cap and only the first cycles came back. |
No examples provided.
astronomy_get_satellite_passes astronomy-mcp-server: get satellite passes ~1,052
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. A few well-known common names resolve directly to their catalog numbers, ignoring case: ISS or International Space Station (25544), Hubble, Hubble Space Telescope, or HST (20580), and Tiangong, CSS, or Chinese Space Station (48274). Any other `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. Either way 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, plus the stretch of the pass visible to the naked eye: `visible_start_utc` through `visible_end_utc`, with the elevation and azimuth at each end. A pass is returned when that visible stretch — the satellite above the horizon and sunlit while the Sun is below −6° for the observer — reaches 10° elevation, wherever in the pass it falls. `sunlit` reports illumination at the peak instant, so it is false on a pass seen only before it enters Earth's shadow or after it leaves. Rise, set, and the visible-stretch edges are within 1 s of the true instants; the peak is the highest sample of a 30-second scan. Every returned pass rises in the requested window or in the 30 s before `start`: a pass up longer than that at `start` is omitted rather than reported with `start` as its rise, so back up `start` to see it, while a pass still up when the window ends is reported through its actual set. Searches at most 10 days per call: a larger `days`, up to 30, searches the first 10 and returns a notice naming the exact `start` and `days` that continue the sear…
| Name | Type | Req | Description |
|---|---|---|---|
| days | integer | – | Number of days ahead to search for passes. Default 7. At most 10 are searched per call; a value up to 30 searches the first 10 with a notice naming the `start` and `days` that continue the search. |
| elevation | number | – | Observer elevation in meters above sea level. Default 0. |
| latitude | number | yes | Observer latitude in decimal degrees, north positive. |
| longitude | number | yes | Observer longitude in decimal degrees, east positive. |
| name | string | – | Satellite name to resolve, e.g. "ISS (ZARYA)". The common names ISS, International Space Station, Hubble, Hubble Space Telescope, HST, Tiangong, CSS, and Chinese Space Station resolve directly to the… |
| norad_id | integer | – | NORAD catalog number of the satellite, e.g. 25544 for the ISS. Found at celestrak.org or heavens-above.com. Mutually exclusive with `name` — supply exactly one. |
| start | string | – | Search start as an ISO 8601 UTC string, within about a month of the current element set's epoch — for a tracked object that epoch is hours old, so in practice within about a month of today. A start f… |
| timezone | string | – | IANA timezone for localized pass times, e.g. "America/Los_Angeles". When omitted, output is UTC-only. |
| Name | Type | Req | Description |
|---|---|---|---|
| error | object | – | Present when the call failed. Absent on success. |
| norad_id | number | – | The NORAD catalog number echoed from the request. |
| notice | string | – | How to search the days the per-call cap held back: the exact `start` and `days` to re-call with, or — when that start would lie more than about a month from the element set's epoch — that no call can… |
| passes | array | – | Passes whose visible stretch — the satellite above the horizon and sunlit while the Sun is below −6° for the observer — reaches 10° elevation, in the window searched, chronological. |
| resolved_from_name | string | – | The name query that resolved this object. Present only when the request supplied `name` rather than `norad_id`. |
| satellite_name | string | – | Satellite name as CelesTrak catalogs it (the element set's OBJECT_NAME). |
| totalCount | number | – | Number of visible passes found in the window searched. |
No examples provided.
astronomy_get_sky_position astronomy-mcp-server: get sky position ~534
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, angular distance from the Sun, 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.
| Name | Type | Req | Description |
|---|---|---|---|
| body | string | – | Solar-system body to locate. Omit when targeting a named star via `star`. |
| elevation | number | – | Observer elevation in meters above sea level. Default 0. |
| latitude | number | yes | Observer latitude in decimal degrees, north positive. |
| longitude | number | yes | Observer longitude in decimal degrees, east positive. |
| star | string | – | Named star to locate, from a bundled catalog of 32 stars — about 30 of the brightest naked-eye stars plus Polaris, not an arbitrary star. Accepts a common name or Bayer designation, with the Greek le… |
| time | string | – | Instant of observation as an ISO 8601 UTC string, e.g. "2024-04-08T18:00:00Z". Defaults to now. A value with no zone designator is read as UTC, not the local zone of the server process. |
| timezone | string | – | IANA timezone for localized output, e.g. "America/Los_Angeles". When omitted, output is UTC-only. |
| Name | Type | Req | Description |
|---|---|---|---|
| angular_diameter_arcsec | number|null | – | Apparent angular diameter of the disc in arcseconds. Null for point-source convention bodies. |
| body | string | – | The body or star this position is for, echoed from the request. |
| body_metadata | object | – | The body card also served at astronomy://body/{body}, copied here so a client without resource support can reach it. Present for the ten solar-system bodies; absent for a catalog star, which has no c… |
| constellation | object | – | The constellation the body currently falls within. |
| ecliptic | object | – | Ecliptic-of-date coordinates of the body. |
| equatorial | object | – | Apparent equatorial coordinates, corrected for precession, nutation, parallax, and aberration. |
| error | object | – | Present when the call failed. Absent on success. |
| horizontal | object | – | Refraction-corrected horizontal coordinates as seen from the observer. |
| illuminated_fraction | number|null | – | Fraction of the disc illuminated, 0 to 1. Null when not applicable. |
| magnitude | number|null | – | Apparent visual magnitude (lower is brighter). Null for bodies where the engine cannot compute it. |
| phase_angle_degrees | number|null | – | Sun-body-observer phase angle in degrees. Null when not applicable (e.g. stars). |
| sun_elongation_degrees | number | – | Angular distance from the Sun in degrees [0,180], seen from Earth's center. A body within about 15° of the Sun is lost in its glare. 0 for the Sun itself. |
| time_local | string | – | The same instant in the observer-local timezone with offset, present only when a timezone was supplied. |
| time_utc | string | – | The instant of the observation in ISO 8601 UTC. |
No examples provided.
astronomy_list_visible astronomy-mcp-server: list visible bodies ~416
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, along with its angular distance from the Sun. The whole sky is gated by the Sun's altitude into daylight / civil / nautical / astronomical twilight / dark, returned alongside the list, and each note says when daylight, civil twilight, or the Sun's glare hides or dims that body. `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.
| Name | Type | Req | Description |
|---|---|---|---|
| elevation | number | – | Observer elevation in meters above sea level. Default 0. |
| include_stars | boolean | – | Include the bundled bright stars alongside planets. Default false. |
| latitude | number | yes | Observer latitude in decimal degrees, north positive. |
| longitude | number | yes | Observer longitude in decimal degrees, east positive. |
| min_altitude | number | – | Minimum altitude in degrees to include a body. Default 0 (above the horizon); use e.g. 5 to require clearance. |
| time | string | – | Evaluation instant as an ISO 8601 UTC string, e.g. "2024-08-12T05:00:00Z". Defaults to now. A single instant, not a window. A value with no zone designator is read as UTC, not the local zone of the s… |
| timezone | string | – | IANA timezone for localized output, e.g. "America/Los_Angeles". When omitted, output is UTC-only. |
| Name | Type | Req | Description |
|---|---|---|---|
| bodies | array | – | Every body (and optional star) above the minimum-altitude filter, ranked brightest-and-highest first. |
| error | object | – | Present when the call failed. Absent on success. |
| sky_condition | string | – | Sky condition derived from the Sun's altitude — the gate for whether faint objects are observable. |
| sun_altitude_degrees | number | – | The Sun's altitude in degrees that produced the sky condition. |
| total_count | number | – | Number of bodies returned above the minimum-altitude filter. |
No examples provided.
How do I install the io.github.cyanheads/astronomy-mcp-server server?
io.github.cyanheads/astronomy-mcp-server is a hosted endpoint at https://astronomy.caseyjhand.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · astronomy.caseyjhand.com
claude mcp add --transport http cyanheads-astronomy-mcp-server 'https://astronomy.caseyjhand.com/mcp'
What is the io.github.cyanheads/astronomy-mcp-server server?
io.github.cyanheads/astronomy-mcp-server is listed in the public MCP registry as io.github.cyanheads/astronomy-mcp-server. Offline observational astronomy: positions, rise/set, moon phases, eclipses, and seasons. This page covers its hosted endpoint (https://astronomy.caseyjhand.com/mcp).
Is the io.github.cyanheads/astronomy-mcp-server server safe to use?
io.github.cyanheads/astronomy-mcp-server scores 89 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the io.github.cyanheads/astronomy-mcp-server server expose?
io.github.cyanheads/astronomy-mcp-server exposes 7 tools: astronomy_get_sky_position, astronomy_get_rise_set, astronomy_get_moon_phase, astronomy_find_events, astronomy_list_visible, and 2 more. Their descriptions and schemas cost roughly 4,802 tokens of context every time the server is loaded.
Does the io.github.cyanheads/astronomy-mcp-server server require authentication?
No. We connected to io.github.cyanheads/astronomy-mcp-server without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.
Is the io.github.cyanheads/astronomy-mcp-server server still maintained?
io.github.cyanheads/astronomy-mcp-server is still listed as active in the MCP registry. We last reached this channel on 6 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What did VerifyMCP test on the io.github.cyanheads/astronomy-mcp-server server?
VerifyMCP ran 13 checks on io.github.cyanheads/astronomy-mcp-server, covering TLS certificate, Authorization, HTTPS, HSTS header and 9 more. Supply Chain Security and Provenance & Transparency do not apply to a hosted endpoint, so they were not tested. The score does not measure everything, and the scoring documentation lists what it leaves out.