Skip to main content
Glama

@cosmosos/mcp-ephemeris

The real sky, for your AI. An MCP server that gives any assistant (Claude, Cursor, agents) computed planetary positions — never guessed — powered by the Swiss Ephemeris engine, and validated against JPL Horizons (NASA) to under one arcsecond.

Cardinal rule: the LLM never computes. This server is a facade over an ephemeris engine. The model interprets; the sky is a fact.

(Version française : https://llmastro.com/notre-moteur)

Quick start (Claude Desktop)

Open Settings → Developer → Edit Config, then add:

{
  "mcpServers": {
    "llmastro": {
      "command": "npx",
      "args": ["-y", "@cosmosos/mcp-ephemeris"]
    }
  }
}

Fully quit Claude Desktop (system tray) and relaunch it. Then ask: "What's the moon phase today?" — Claude calls the server and answers from genuinely computed positions.

Cursor / Windsurf / others: add the same llmastro entry (command: npx, args: ["-y", "@cosmosos/mcp-ephemeris"]) to your client's MCP configuration.

Related MCP server: auseklis

Tools exposed

19 tools, all backed by the same server-side computed engine.

Positions & sky

Tool

Input

Output

get_planet_positions

datetime (ISO UTC)

ecliptic positions of all bodies (sign, degree, retro)

get_moon_phase

datetime (ISO UTC)

moon phase, illumination %, description

get_current_sky

latitude, longitude

the sky right now (current transits) for a place

get_aspects

datetime (ISO UTC)

grid of major + minor aspects between bodies

Natal chart & relationships

Tool

Input

Output

get_natal_chart

birth + zodiac (tropical/sidereal), houseSystem (7 systems)

full chart: houses, aspects, ASC/MC, moon phase, Hermetic Lots

get_transits

birth + optional datetime

transit→natal aspects, sorted by orb

get_synastry

two births

inter-chart aspects + harmony/tension summary

get_composite_chart

two births

midpoint composite chart

get_secondary_progressions

birth + targetDate

progressed positions ("a day for a year")

get_solar_return

birth + year (+ optional place)

instant + chart of the solar return

get_lunar_return

birth + optional after

instant + chart of the next lunar return

Celestial events

Tool

Input

Output

get_ingresses

body, start, end

sign-change dates (retrograde-robust)

get_retrograde_windows

body, start, end

retrograde/direct stations over the range

get_eclipse_details

datetime, kind

magnitude, obscuration, Saros of a known eclipse (swisseph)

get_next_eclipse

from, kind, optional backward

next/previous eclipse: maximum, type, contacts (swisseph)

Astrocartography, numerology, authority

Tool

Input

Output

get_astrocartography

datetime (ISO UTC)

planetary MC/IC lines + parans (crossings)

get_life_path

date (YYYY-MM-DD)

life-path number (numerology)

get_engine_diagnostic

—

active engine, native addon load status, real precision

validate_against_horizons

datetime, optional bodies

delta of our positions vs JPL Horizons (NASA) in arcseconds — network required

(swisseph) = requires the native Swiss Ephemeris addon; returns null on the AstraCore fallback.

Precision

Under Swiss Ephemeris, positions match the world reference JPL Horizons (NASA) to under one arcsecond (measured 2026-07-19):

Body

Difference vs NASA

Sun

0.2″

Moon

1.5″

Jupiter

0.1″

Pluto

0.4″

Check it yourself with the validate_against_horizons tool.

Two engines

Computation is routed by the ASTRO_ENGINE variable:

  • swisseph (default) — Swiss Ephemeris, native addon, sub-arcsecond precision. Compiles automatically wherever a C++ build chain is present (Linux, macOS, most servers).

  • astracore — in-house pure-TypeScript engine (VSOP/Meeus), no native binary. Used as an automatic fallback when swisseph couldn't be compiled (common on Windows). Sun and Moon stay accurate; outer planets drift by a few arcminutes.

To force an engine: ASTRO_ENGINE=swisseph or ASTRO_ENGINE=astracore.

Privacy

The server runs on your machine: your birth data is sent nowhere. Only validate_against_horizons makes an outbound request (to NASA's public API).

Requirements

  • Node.js ≥ 20.

  • For maximum precision (swisseph): a C++ build chain (python3, make, a compiler) on the machine. Otherwise, automatic fallback to astracore, with no configuration.

About

Powered by the astrology engine of Llmastro. Learn more about the precision and architecture: https://llmastro.com/notre-moteur.

License

Free for non-commercial use (personal, research, education, non-profit organizations) — under the PolyForm Noncommercial 1.0.0 license.

Commercial / professional use: a paid license is required. To obtain one, contact KAIROSAST LTD via https://llmastro.com/contact.

Note: the optional swisseph dependency (Swiss Ephemeris, Astrodienst) has its own license (AGPL or a commercial Swiss Ephemeris license) and is not covered by this one. Professional use must comply with it separately.

Development

This repository is self-contained: the ephemeris engine is vendored in vendor/ephemeris/ (source), and the build inlines it into dist/ via tsup.

pnpm install          # or npm install
pnpm build            # bundles dist/index.js (engine inlined)
pnpm start            # runs the MCP server (stdio) locally
  • Default engine: swisseph (sub-arcsecond precision) if the native addon compiles, otherwise automatic fallback to astracore (pure TypeScript, no binary). Force via ASTRO_ENGINE=swisseph|astracore.

  • The vendored engine is a snapshot of @astro-platform/ephemeris (Llmastro), re-synced manually.

Available Tools

11 tools
get_aspectsA

Aspects (majeurs et mineurs) entre les planètes à un instant donné, avec orbe et tonalité. Grille d'aspects calculée par le moteur, pas estimée.

Inputs: datetime (required).

get_composite_chartB

Thème composite par mi-points : pour chaque corps, le point milieu circulaire entre les deux thèmes (convention Robert Hand). Représente la relation elle-même.

Inputs: personA (required), personB (required).

get_current_skyA

Le ciel à l'instant présent (transits du moment) pour un lieu donné : positions en maisons + aspects.

Inputs: latitude (required), longitude (required).

get_eclipse_detailsA

Détail d'une éclipse (magnitude, obscuration, type, série de Saros) pour une date d'éclipse connue. Nécessite le moteur swisseph (retourne null en mode AstraCore).

Inputs: kind (required), datetime (required).

get_moon_phaseA

Phase de la Lune (nom, illumination %, description) à un instant donné, dérivée de la position réelle Soleil/Lune.

Inputs: datetime (required).

get_natal_chartA

Thème natal complet : positions en maisons, aspects, ASC/MC, phase lunaire, Lots hermétiques. Prend une date/heure LOCALE + fuseau IANA + coordonnées. Zodiaque tropical (défaut) ou sidéral (Lahiri), et système de maisons au choix (Placidus par défaut).

Inputs: date (required), time (required), latitude (required), timezone (required), +3 more.

get_planet_positionsA

Positions écliptiques géocentriques de tous les corps (Soleil→Pluton, nœuds, Lilith) à un instant donné. Calculé côté serveur par le moteur d'éphéméride — jamais estimé par le modèle.

Inputs: datetime (required).

get_secondary_progressionsB

Progressions secondaires (méthode « un jour après la naissance = une année de vie ») : positions planétaires progressées à une date cible. La Lune progressée (~1 signe / 2,5 ans) est la plus lue.

Inputs: date (required), time (required), latitude (required), timezone (required), +2 more.

get_solar_returnB

Retour solaire d'une année donnée : l'instant exact où le Soleil retrouve sa longitude natale, et le thème dressé à cet instant (pour le lieu de résidence si fourni, sinon lieu de naissance).

Inputs: date (required), time (required), year (required), latitude (required), +4 more.

get_synastryA

Synastrie : aspects inter-thèmes entre deux personnes (planètes A × planètes B), triés par orbe, avec un résumé harmonie/tension. Réutilise la table d'aspects canonique du moteur.

Inputs: personA (required), personB (required).

get_transitsB

Transits croisés au thème natal : aspects entre les planètes qui transitent (aujourd'hui ou à une date donnée) et les planètes de naissance, triés par orbe. Le cœur des « prévisions ».

Inputs: date (required), time (required), latitude (required), timezone (required), +2 more.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.9/5.0

    Scored across 11 tools

    Disambiguation5/5

    Each tool has a clearly distinct purpose: positions, moon phase, sky, aspects, natal chart, transits, solar return, eclipses, synastry, composite chart, and secondary progressions. No two tools do the same thing; even overlapping concepts like aspects are scoped differently (general vs. transits vs. synastry).

    Naming Consistency5/5

    All tool names follow the consistent pattern 'get_<topic>', with clear and descriptive suffixes (e.g., get_planet_positions, get_moon_phase). No mixing of conventions like camelCase or different verb styles.

    Tool Count5/5

    With 11 tools, the set covers core ephemeris and astrology functionality without being overwhelming. Each tool earns its place, providing a well-scoped range from basic positions to advanced charts like synastry and secondary progressions.

    Completeness5/5

    The tool surface covers the full lifecycle of ephemeris queries: positions, aspects, moon phase, multiple chart types (natal, solar return, composite), transits, progressions, synastry, and eclipses. Missing features like asteroids or harmonic charts are non-essential for a general service.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      A self-contained MCP server that gives AI agents the ability to calculate high-precision astronomical data. It provides tropical zodiac coordinates, planetary speeds, retrograde detection, and house cusps using the trusted Swiss Ephemeris engine. 100%
      4
      AGPL 3.0
    • A
      license
      A
      quality
      C
      maintenance
      Astrology MCP server that computes natal charts, transits, synastry, progressions, returns, eclipses, retrogrades, and moon phases from a real ephemeris, enabling AI agents to provide accurate astrological calculations without hallucination.
      12
      75 npm
      1
      MIT
    • F
      license
      Not graded
      quality
      D
      maintenance
      An AI astrology MCP server providing 49 tools for Western and Vedic astrology calculations, including natal charts, dashas, transits, and compatibility analysis, powered by Swiss Ephemeris.
      -
    • F
      license
      Not graded
      quality
      D
      maintenance
      A Vedic astrology MCP server that computes birth charts, dashas, transits, and yogas locally using Swiss Ephemeris, enabling an LLM to interpret horoscopes and provide personalized advice.
      -