Local MCP server · Real astronomy data

The sky, queryable.

Point your AI assistant at the real sky. Object lookups, asteroid ephemerides, catalog cross-matches, and the literature, all normalized with provenance you can cite. It runs entirely on your machine.

Free forever · MIT · No account · No telemetry · Nothing leaves your machine

The problem

The data is public. The interfaces are not kind.

To answer one ordinary question you touch a JPL prompt, a SIMBAD form, and ADS query syntax, each with its own units and conventions. Every astronomer relearns this plumbing, and everyone ends up copying numbers between tabs by hand.

How it works

One schema. Every value sourced.

One coordinate frame

Every position lands in ICRS degrees with its epoch explicit. No more guessing hourangle versus degree, J2000 versus ICRS.

Every value sourced

Each field carries the service that produced it, the exact query, and the acknowledgment that service asks you to cite.

Deterministic, not guessed

The assistant reads real results. It does not invent numbers. A confidently wrong coordinate is the one failure a scientist cannot forgive.

Capabilities

The working astronomer's toolkit, as tools an AI can drive.

Object intelligence

Resolve any name to coordinates, cross-IDs, and measured properties via SIMBAD, NED, and VizieR.

resolve_object()

Asteroid & comet ephemerides

Precise positions, distances, and magnitudes for any solar-system body, straight from JPL Horizons.

get_ephemeris()

Catalog & cross-match

Cone, box, and ADQL queries across Gaia, SDSS, 2MASS, and friends, plus positional cross-matching.

cone_search()

Literature

Find papers, pull abstracts and bibcodes, and connect an object to what measured it, via ADS and arXiv.

search_literature()

Unit-correct analysis

Coordinate transforms, distance and magnitude math, all dimensioned and frame-correct via astropy.

convert_frame()

Observation planning

Airmass curves, rise and set times, and observability windows for a site and a night, via astroplan.

observability()

Data sources

It wraps the real ecosystem, and credits it loudly.

Service What Access
SIMBADObject identifiers, coordinates, and metadatano key
JPL HorizonsSolar-system ephemerides and state vectorsno key
JPL SBDBSmall-body physical and orbital parametersno key
Gaia · SDSS · 2MASSAstrometry and photometry catalogsno key
VizieRThousands of published catalogsno key
NASA ADSThe astronomy literaturefree key
arXivastro-ph preprintsno key
MASTHST / JWST / TESS / Kepler data productsno key
NASA Open APIsAPOD and the wonder layerDEMO_KEY

SkyQuery is an independent open-source client and is not affiliated with, or endorsed by, NASA, JPL, CDS/Strasbourg, STScI, ESA, or the Astropy project. It is a normalization and MCP layer on top of astroquery, which it credits plainly.

Install

Two steps. Then ask the sky anything.

1

Install it

$ uv tool install skyquery-mcp

Requires Python 3.12+. Try it offline right now: skyquery demo

2

Point your assistant at it

Add this stdio server to your MCP client config (for example Claude Desktop):

{
  "mcpServers": {
    "skyquery": {
      "command": "skyquery-mcp"
    }
  }
}

Optional free keys unlock more: skyquery login ads and skyquery login nasa. They go straight to your OS keychain, never a file.

The demo that sells it

"Where is Apophis, how big is it, and what's the latest paper?"

JPL Horizons, the Small-Body Database, and the literature, answered in one breath, with the units, the frame, and the citations intact. That single query is the whole pitch.

99942 Apophis is about 0.34 km across. On 2029-04-13 it passes 0.000257 AU from Earth, roughly 0.10 lunar distances, inside geostationary orbit. Source: JPL Horizons + JPL SBDB, frame ICRS.