auseklis
Astrology MCP server โ natal charts, transits, synastry, progressions, returns, eclipses, retrogrades, moon phases. Computed from a real ephemeris, so AI agents stop hallucinating planet positions.
Named after the Latvian morning star. MIT-licensed with no AGPL ephemeris data โ see Licensing.
| Tool | What it does |
|---|
get_planet_position | Position of one body/point at a moment (sign, degree, speed, retrograde) |
compute_natal_chart | Full birth chart: 13 points, houses, angles, Part of Fortune, aspects |
compute_transits | Aspects from the current (or any) sky to a natal chart |
compute_progressions | Secondary progressions (day-for-a-year) |
compute_synastry | Cross-chart aspects between two people |
compute_composite_chart | Midpoint composite chart of a relationship |
find_returns | Solar/lunar/planetary returns (exact moments) |
get_moon_phase | Phase, illumination, Moon sign, next four quarters |
find_eclipses | Lunar/solar eclipses with signs, incl. local visibility |
find_retrograde_periods | Station retrograde/direct moments for any planet |
find_sign_ingresses | When a body changes signs (equinoxes, Saturn ingresses, โฆ) |
find_aspect_times | Exact moment a transit perfects ("when does Saturn square my Sun?") |
Plus two prompts (natal_chart_reading, current_sky_report) and a glossary resource (auseklis://glossary).
Features: local birth times with IANA timezones (full historical DST handling) ยท tropical and sidereal (Lahiri, Fagan/Bradley) zodiacs ยท whole-sign, equal, Porphyry, and Placidus houses ยท mean lunar nodes and Black Moon Lilith ยท Part of Fortune (classical day/night formula).
Installation
Claude Code
claude mcp add auseklis -- npx -y auseklis
Claude Desktop / any MCP client (stdio)
{
"mcpServers": {
"auseklis": {
"command": "npx",
"args": ["-y", "auseklis"]
}
}
}
No API keys, no configuration โ the ephemeris is computed locally.
Desktop Extension
Download auseklis.mcpb from the releases page and double-click to install in Claude Desktop. Or build it yourself: npm run bundle.
Remote (self-hosted)
The same server runs as a Cloudflare Worker speaking Streamable HTTP. Deploy it to your own account:
npm run deploy
claude mcp add --transport http auseklis https://auseklis.<your-subdomain>.workers.dev/mcp
Set the MCP_SHARED_SECRET secret to require a bearer token.
Library usage
The ephemeris core (everything under src/ephemeris/) is importable directly โ no MCP client or subprocess needed. This is the right shape for serverless runtimes (Vercel, Workers), where spawning npx auseklis per request is not an option:
import { computeNatalChart } from "auseklis/ephemeris";
import { findRetrogradePeriods } from "auseklis/ephemeris/events";
import { findEclipses } from "auseklis/ephemeris/eclipses";
const chart = computeNatalChart({
utc: "1990-03-15T13:45:00Z",
location: { latitude: 56.95, longitude: 24.11 },
houseSystem: "placidus",
});
auseklis/ephemeris carries the chart math (natal, transits, synastry, composite, progressions, single positions, angles) plus resolveInstant for local-time โ UTC conversion; โฆ/events and โฆ/eclipses carry the time-domain searches. Fully typed, ESM only, no data files.
Example questions to ask
- "Compute my natal chart โ born 15 March 1990, 15:45 in Riga."
- "What's transiting my Sun this month?"
- "When exactly is my Saturn return?"
- "Synastry between me and my partner?" (two birth date/times)
- "When is Mercury retrograde in 2027, and in which signs?"
- "Is tonight's full moon visible as an eclipse from here?"
The model handles place-name โ coordinates; the server handles local-time โ UTC via the IANA timezone database.
Accuracy
Positions come from astronomy-engine (VSOP87 + NOVAS C 3.1): ยฑ1 arcminute for 1700โ2200, far below the 1ยฐ resolution astrological interpretation uses. Event searches (stations, ingresses, returns, quarters) are refined to ~1 second of time. Verified in CI against published eclipse dates, the 2026 equinox, NOVAS Sun positions, and an independent Placidus implementation.
Architecture
src/
โโโ ephemeris/ Astrology core โ backend-agnostic
โ โโโ engine.ts EphemerisBackend interface + astronomy-engine adapter (the swap seam)
โ โโโ index.ts Charts, aspects, synastry, composite, progressions
โ โโโ events.ts Time searches: returns, stations, ingresses, aspect times, moon phases
โ โโโ eclipses.ts Eclipse searches with astrological context
โ โโโ houses.ts Whole-sign, equal, Porphyry, Placidus (semi-arc solver)
โ โโโ points.ts Mean lunar nodes, Black Moon Lilith
โ โโโ sidereal.ts Ayanamsa (Lahiri, Fagan/Bradley)
โ โโโ time.ts IANA timezone โ UTC conversion (no dependencies, uses Intl)
โโโ mcp/ Tool/prompt/resource definitions on @modelcontextprotocol/sdk
โโโ stdio.ts Local entry โ `npx auseklis`
โโโ index.ts Remote entry โ Cloudflare Worker, Streamable HTTP via @hono/mcp
The EphemerisBackend interface in engine.ts is the deliberate swap seam: a future Rust/WASM clean-room ephemeris only needs to reimplement that one interface.
Development
npm install
npm run typecheck
npm test
npm run build
npm run dev
npx @modelcontextprotocol/inspector node dist/stdio.js
See docs/tools.md for the full tool reference and docs/architecture.md for design notes.
Licensing
MIT. This project deliberately avoids the Swiss Ephemeris (.se1/.se2 data files and the sweph bindings): those are AGPL-licensed, which would impose AGPL obligations on any network service built on them. Everything here is computed from MIT-licensed code with no external data files โ safe to embed, fork, and deploy commercially. Details in NOTICE.
The trade-off: no Chiron or asteroids (they need ephemeris data files). They are on the roadmap via public-domain JPL-derived data.
Roadmap
- v1: Rust/WASM clean-room ephemeris backend behind the same
EphemerisBackend seam
- Chiron + major asteroids from public-domain JPL data
- Koch houses, declination/parallel aspects