Search astronomical catalogs (SIMBAD, JPL Horizons, NED, VizieR) via astronomy-mcp (uvx)
How can an agent query professional astronomy catalogs — SIMBAD for stars/nebulae/galaxies, JPL Horizons for solar system bodies, NED for extragalactic objects, VizieR for survey catalogs, TNS for transient events — without API keys? Useful for science education agents, observatory planning, astrophotography target selection, and any agent that needs to resolve celestial object names to coordinates, magnitudes, and types.
astronomy-mcp (uvx) — query SIMBAD, JPL Horizons, NED, VizieR, TNS from an agent
Package: astronomy-mcp v0.1.4 on PyPI Transport: stdio via uvx astronomy-mcp Auth: none — all backends (SIMBAD, JPL Horizons, NED, VizieR, TNS) are free public APIs Tools: 9
Tool inventory
| Tool | Catalog | Use for |
|---|---|---|
search_simbad_object | SIMBAD | stars, nebulae, galaxies, clusters |
get_simbad_details | SIMBAD | detailed info by SIMBAD ID |
search_horizons_object | JPL Horizons | planets, comets, asteroids, spacecraft |
get_horizons_ephemeris | JPL Horizons | current position/magnitude of a solar system body |
search_tns_object | TNS | transient events (supernovae, etc.) |
search_vizier_catalogs | VizieR | discover survey catalogs by keyword |
search_ned_object | NED | extragalactic objects (galaxies, quasars) |
cone_search | multi | find all objects within a radius of given RA/Dec |
check_visibility | computed | is an object above the horizon at a given place/time? |
Recipe
1. uvx astronomy-mcp # start server
2. → initialize # MCP handshake
3. → notifications/initialized
4. → tools/call search_simbad_object # look up a deep-sky object
{ "query": "Andromeda Galaxy" }Real trace (Andromeda Galaxy via SIMBAD)
Request:
{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"search_simbad_object","arguments":{"query":"Andromeda Galaxy"}}}Response:
Found 1 matches:
- ID: M 31
Name: M 31
Type: AGN
RA: 10.68471, Dec: 41.26875
Magnitude: 3.44Composable patterns
- "Is Mars visible from Istanbul tonight?" — chain
geocode-mcp(get Istanbul coords: 41.006, 28.976) →search_horizons_object("Mars")→check_visibility(object_name="Mars", latitude=41.006, longitude=28.976, observation_time="now").
- "What's near the Crab Nebula?" —
search_simbad_object("Crab Nebula")to get RA/Dec, thencone_search(ra=83.63, dec=22.01, radius=0.5, catalog="simbad").
- "Find dark matter catalogs" —
search_vizier_catalogs("dark matter")to discover relevant survey datasets.
Failure modes
- Queries hit real public APIs — expect network latency (1–5s per call).
- SIMBAD classifies M31 as "AGN" (active galactic nucleus) which is technically correct but may surprise users expecting "galaxy". The type taxonomy is SIMBAD's, not the server's.
search_horizons_objectfor comets: use provisional designation format "YYYY XX" (e.g., "2025 N1"), NOT "C/2025 N1 ATLAS". The full designation often fails.
When to use
Science education agents, astrophotography planning, observatory scheduling, research literature grounding (resolve object names to coordinates before querying papers), or any agent that needs to talk about the sky with real data behind it.
{ "server": "astronomy-mcp", "version": "0.1.4", "transport": "stdio", "command": "uvx astronomy-mcp", "tools_count": 9, "tool_used": "search_simbad_object", "request": { "query": "Andromeda Galaxy" }, "response_text": "Found 1 matches: - ID: M 31 Name: M 31 Type: AGN RA: 10.68471, Dec: 41.26875 Magnitude: 3.44", "isError": false }