Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

io.github.cyanheads/astronomy-mcp-server

REMOTE · ASTRONOMY.CASEYJHAND.COM · 2 COMPONENTS · SCANNED SEP 21

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

+2 this week 83 Trust /100
Trust breakdown (7 categories)

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 Security66
  • The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
  • Authorisation not fully verified: no authorisation is required to call this server, and 7 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe. See how to fix → View diagnostics → Unverified
  • 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
Schema Quality & AI Usability79
  • 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 4165 tokens (~245/item across 17 items; 7 tools + 10 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
Install

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

# add to Claude Code
claude mcp add --transport http cyanheads-astronomy-mcp-server 'https://astronomy.caseyjhand.com/mcp'
// .cursor/mcp.json
{
  "mcpServers": {
    "cyanheads-astronomy-mcp-server": {
      "url": "https://astronomy.caseyjhand.com/mcp"
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "cyanheads-astronomy-mcp-server": {
      "type": "http",
      "url": "https://astronomy.caseyjhand.com/mcp"
    }
  }
}
# ~/.codex/config.toml
[mcp_servers.cyanheads-astronomy-mcp-server]
url = "https://astronomy.caseyjhand.com/mcp"
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "cyanheads-astronomy-mcp-server": {
      "type": "remote",
      "url": "https://astronomy.caseyjhand.com/mcp",
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add cyanheads-astronomy-mcp-server --url 'https://astronomy.caseyjhand.com/mcp' --transport streamable-http
# ~/.hermes/config.yaml
mcp_servers:
  cyanheads-astronomy-mcp-server:
    url: "https://astronomy.caseyjhand.com/mcp"
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "cyanheads-astronomy-mcp-server": {
      "Transport": "http",
      "Url": "https://astronomy.caseyjhand.com/mcp"
    }
  }
}
# add to Vellum
assistant mcp add cyanheads-astronomy-mcp-server -t streamable-http -u 'https://astronomy.caseyjhand.com/mcp'
// mcp.json
{
  "mcpServers": {
    "cyanheads-astronomy-mcp-server": {
      "type": "http",
      "url": "https://astronomy.caseyjhand.com/mcp"
    }
  }
}

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

Changelog

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.

  • 19 Sept 26 0
    • Server version: 0.2.9 → 0.2.10 functional
  • 17 Sept 26 +1
    • Stability: 0.97 → pass security
  • 15 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 90 to 93. That category is still filling its 30-day observation window: 27 days of observed history at the previous scan, 28 at this one. The score rises as the window fills, whether or not the server changes.

  • 13 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.

  • 11 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 77 to 80. That category is still filling its 30-day observation window: 23 days of observed history at the previous scan, 24 at this one. The score rises as the window fills, whether or not the server changes.

  • 9 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 70 to 73. That category is still filling its 30-day observation window: 21 days of observed history at the previous scan, 22 at this one. The score rises as the window fills, whether or not the server changes.

  • 7 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 63 to 67. That category is still filling its 30-day observation window: 19 days of observed history at the previous scan, 20 at this one. The score rises as the window fills, whether or not the server changes.

  • 4 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 53 to 57. That category is still filling its 30-day observation window: 16 days of observed history at the previous scan, 17 at this one. The score rises as the window fills, whether or not the server changes.

Diagnostics

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 21 Sept 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 4 Sept 2026 3 Dec 2026 ECDSA 256 ECDSA-SHA256 a6985204ed51ae050e7738aa6be668e9
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. present 19718 13 Verified
caseyjhand.com. present 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
MCP tools · 7 exposed · ~3,433 tokens

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 →

Tool Tokens
astronomy_find_events ~493

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.

NameTypeReqDescription
bodystringTarget 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.
countintegerNumber of forward occurrences to return. Default 1, max 20.
elevationnumberObserver elevation in meters above sea level. Default 0.
eventstringyesWhich class of event to search for.
latitudenumberObserver latitude in decimal degrees — required for solar_eclipse to get local circumstances, ignored by every other event.
longitudenumberObserver longitude in decimal degrees — required for solar_eclipse, ignored by every other event.
startstringSearch start as an ISO 8601 UTC string, e.g. "2024-01-01T00:00:00Z". Defaults to now. A value with no zone designator is read as UTC, not the local zone of the server process.
timezonestringIANA timezone for localized output, e.g. "America/Los_Angeles". When omitted, output is UTC-only.
NameTypeReqDescription
errorobjectPresent when the call failed. Absent on success.
eventsarrayThe next occurrences of the requested event class, in chronological order.
totalCountnumberNumber of event occurrences returned.

No examples provided.

astronomy_get_ephemeris ~768

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.

NameTypeReqDescription
designationstringyesJPL 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…
elevationnumberObserver elevation in meters above sea level. Default 0.
latitudenumberObserver latitude in decimal degrees — supply together with longitude for topocentric coordinates and alt/az. Supplying one without the other is rejected.
longitudenumberObserver longitude in decimal degrees. Supply together with latitude; one without the other is rejected.
startstringEphemeris start as an ISO 8601 UTC string, e.g. "2024-01-01T00:00:00Z". Defaults to now. A value with no zone designator is read as UTC, not the local zone of the server process.
stepstringStep size as a positive count plus a unit of m (minutes), h (hours), d (days), mo (months), or y (years), e.g. "10m", "1h", "1d". Default "1h".
stopstringEphemeris stop as an ISO 8601 UTC string, and must be later than start. Defaults to 24 hours after start. A value with no zone designator is read as UTC, not the local zone of the server process.
NameTypeReqDescription
capnumberThe inline row cap that was applied.
designationstringThe body designation echoed from the request.
droppednumberRows 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…
errorobjectPresent when the call failed. Absent on success.
noticestringCaveats 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.
pointsarrayTime-series of positions, one per step, in chronological order.
shownnumberNumber of ephemeris rows returned.
truncatedbooleanTrue when Horizons returned more rows than the inline cap.

No examples provided.

astronomy_get_moon_phase ~208

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.

NameTypeReqDescription
timestringInstant 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.
timezonestringIANA timezone for localized output, e.g. "America/Los_Angeles". When omitted, output is UTC-only.
NameTypeReqDescription
age_daysnumberSynodic age in days since the previous new moon.
errorobjectPresent when the call failed. Absent on success.
illuminated_fractionnumberFraction of the lunar disc illuminated, 0 to 1.
next_quartersarrayThe next four lunar quarter phases (new/first/full/last) in chronological order.
phase_angle_degreesnumberMoon phase angle in degrees: 0 = new, 90 = first quarter, 180 = full, 270 = last quarter.
phase_namestringHuman-readable phase name (New Moon, Waxing Crescent, First Quarter, …, Waning Crescent).
time_localstringThe same instant in the observer-local timezone with offset, present only when a timezone was supplied.
time_utcstringThe instant the phase was computed for, in ISO 8601 UTC.

No examples provided.

astronomy_get_rise_set ~408

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.

NameTypeReqDescription
bodystringyesThe body to compute rise/set for. Twilight is included only when this is "sun".
countintegerNumber of forward rise/set cycles to return. Default 1, max 31.
elevationnumberObserver elevation in meters above sea level. Default 0.
latitudenumberyesObserver latitude in decimal degrees, north positive.
longitudenumberyesObserver longitude in decimal degrees, east positive.
startstringSearch 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.
timezonestringIANA timezone for localized output, e.g. "America/Los_Angeles". When omitted, output is UTC-only.
NameTypeReqDescription
bodystringThe body these rise/set cycles are for, echoed from the request.
errorobjectPresent when the call failed. Absent on success.
eventsarrayOne entry per rise/set/transit cycle, searching forward from the start time.
totalCountnumberNumber of rise/set cycles returned.

No examples provided.

astronomy_get_satellite_passes ~711

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.

NameTypeReqDescription
daysintegerNumber of days ahead to search for passes. Default 7, max 10.
elevationnumberObserver elevation in meters above sea level. Default 0.
latitudenumberyesObserver latitude in decimal degrees, north positive.
longitudenumberyesObserver longitude in decimal degrees, east positive.
namestringSatellite name to resolve against CelesTrak, e.g. "ISS (ZARYA)". Matched as a case-insensitive substring of the catalog name, so give the fullest name you have — a short one matches many objects and…
norad_idintegerNORAD 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.
startstringSearch 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…
timezonestringIANA timezone for localized pass times, e.g. "America/Los_Angeles". When omitted, output is UTC-only.
NameTypeReqDescription
errorobjectPresent when the call failed. Absent on success.
norad_idnumberThe NORAD catalog number echoed from the request.
passesarrayVisible passes (sunlit satellite over a dark-enough sky) in the requested window, chronological.
resolved_from_namestringThe name query that resolved this object. Present only when the request supplied `name` rather than `norad_id`.
satellite_namestringSatellite name as CelesTrak catalogs it (the element set's OBJECT_NAME).
totalCountnumberNumber of visible passes found in the window.

No examples provided.

astronomy_get_sky_position ~459

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.

NameTypeReqDescription
bodystringSolar-system body to locate. Omit when targeting a named star via `star`.
elevationnumberObserver elevation in meters above sea level. Default 0.
latitudenumberyesObserver latitude in decimal degrees, north positive.
longitudenumberyesObserver longitude in decimal degrees, east positive.
starstringNamed bright star to locate (common name or Bayer designation, e.g. "Sirius", "Alpha Centauri"). Takes precedence over `body`.
timestringInstant 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.
timezonestringIANA timezone for localized output, e.g. "America/Los_Angeles". When omitted, output is UTC-only.
NameTypeReqDescription
angular_diameter_arcsecnumber|nullApparent angular diameter of the disc in arcseconds. Null for point-source convention bodies.
bodystringThe body or star this position is for, echoed from the request.
body_metadataobjectThe 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…
constellationobjectThe constellation the body currently falls within.
eclipticobjectEcliptic-of-date coordinates of the body.
equatorialobjectApparent equatorial coordinates, corrected for precession, nutation, parallax, and aberration.
errorobjectPresent when the call failed. Absent on success.
horizontalobjectRefraction-corrected horizontal coordinates as seen from the observer.
illuminated_fractionnumber|nullFraction of the disc illuminated, 0 to 1. Null when not applicable.
magnitudenumber|nullApparent visual magnitude (lower is brighter). Null for bodies where the engine cannot compute it.
phase_angle_degreesnumber|nullSun-body-observer phase angle in degrees. Null when not applicable (e.g. stars).
time_localstringThe same instant in the observer-local timezone with offset, present only when a timezone was supplied.
time_utcstringThe instant of the observation in ISO 8601 UTC.

No examples provided.

astronomy_list_visible ~386

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.

NameTypeReqDescription
elevationnumberObserver elevation in meters above sea level. Default 0.
include_starsbooleanInclude the bundled bright stars alongside planets. Default false.
latitudenumberyesObserver latitude in decimal degrees, north positive.
longitudenumberyesObserver longitude in decimal degrees, east positive.
min_altitudenumberMinimum altitude in degrees to include a body. Default 0 (above the horizon); use e.g. 5 to require clearance.
timestringEvaluation 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…
timezonestringIANA timezone for localized output, e.g. "America/Los_Angeles". When omitted, output is UTC-only.
NameTypeReqDescription
bodiesarrayEvery body (and optional star) above the minimum-altitude filter, ranked brightest-and-highest first.
errorobjectPresent when the call failed. Absent on success.
sky_conditionstringSky condition derived from the Sun's altitude — the gate for whether faint objects are observable.
sun_altitude_degreesnumberThe Sun's altitude in degrees that produced the sky condition.
total_countnumberNumber of bodies returned above the minimum-altitude filter.

No examples provided.

Common questions

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 83 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 3,433 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 21 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.