io.github.davidmosiah/astral-mcp
Precision-audited astrology MCP: natal charts, transits, synastry, moon phases. No API key.
Open source Open in the app JSON README (API)
About
Precision-audited astrology MCP: natal charts, transits, synastry, moon phases. No API key.
Details
- Kind
- MCP servers
- Topic
- No topic detected
- Publisher
- davidmosiah
- Origin
- official
- Category
- ferramentas
- Transport
- local
- Version
- 0.2.0
- Forks
- 1
- Last push
- 2026-09-01T12:20:44Z
- Repository state
- ativo
- Language
- TypeScript
- License
- MIT
- Added
- 2026-08-29 03:02:41
- Updated
- 2026-08-29 03:02:41
- Origin id
io.github.davidmosiah/astral-mcp
README
<!-- astral-mcp header v1 -->
<h1 align="center">Astral MCP</h1>
<div align="center">
<img src="assets/banner.svg" alt="Astral MCP — precision-audited astrology for AI agents" width="88%" />
</div>
<h3 align="center">
Give your AI agent real astrology — natal charts, transits, synastry & moon phases.<br>
Computed locally, <strong>cross-checked by two independent ephemerides</strong>. No API key, no account.
</h3>
<p align="center">
<a href="https://www.npmjs.com/package/astral-mcp"><img src="https://img.shields.io/npm/v/astral-mcp?style=for-the-badge&labelColor=0F172A&color=7C3AED&logo=npm&logoColor=white" alt="npm version" /></a>
<a href="https://www.npmjs.com/package/astral-mcp"><img src="https://img.shields.io/npm/dm/astral-mcp?style=for-the-badge&labelColor=0F172A&color=0EA5A3&logo=npm&logoColor=white" alt="npm downloads" /></a>
<a href="LICENSE"><img src="https://img.shields.io/badge/LICENSE-MIT-22C55E?style=for-the-badge&labelColor=0F172A" alt="License MIT" /></a>
<a href="https://modelcontextprotocol.io"><img src="https://img.shields.io/badge/BUILT_FOR-MCP-7C3AED?style=for-the-badge&labelColor=0F172A" alt="Built for MCP" /></a>
</p>
<p align="center">
<a href="https://github.com/davidmosiah/astral-mcp/stargazers"><img src="https://img.shields.io/github/stars/davidmosiah/astral-mcp?style=for-the-badge&labelColor=0F172A&color=FBBF24&logo=github" alt="GitHub stars" /></a>
<a href="#precision"><img src="https://img.shields.io/badge/PRECISION-dual--engine_audited-0EA5A3?style=for-the-badge&labelColor=0F172A" alt="Precision audited" /></a>
<a href="#setup-in-60-seconds"><img src="https://img.shields.io/badge/SETUP-zero_keys-FBBF24?style=for-the-badge&labelColor=0F172A" alt="Zero setup" /></a>
</p>
> ⚡ **Zero-setup install.** Wire it into Claude Desktop / Cursor / Hermes and call it immediately — no API key, no OAuth, no account:
> `npx -y astral-mcp`
**A local-first MCP server that turns birth data into a full, precision-audited astrological reading for AI agents.** Stateless and computational — nothing is stored, no credentials exist, and every tool but optional geocoding runs fully offline.
Astral MCP is Delx's focused astrology product. See the [Delx platform map](https://delx.ai/platform) for its boundary with the separate Protocol, Security, Wellness and Commerce properties.
Built by [David Mosiah](https://github.com/davidmosiah). The astrology engine is ported from the [Alkhemia](https://alkhemia.app) app.
New to the protocol pattern? Read **[What Is an Astrology MCP Server?](https://astral.delx.ai/guides/what-is-an-astrology-mcp-server)** for the separation between deterministic chart computation and model interpretation, the recommended agent workflow, and the precision/privacy boundaries.
Ready to calculate one? Follow **[How to Generate a Natal Chart with MCP](https://astral.delx.ai/guides/how-to-generate-a-natal-chart-with-mcp)** for the exact birthplace, timezone, unknown birth-time, payload and precision-audit workflow.
Handling sensitive inputs? Read **[How to Protect Birth Data in Astrology Agent Workflows](https://astral.delx.ai/guides/how-to-protect-birth-data-in-astrology-agent-workflows)** for payload minimization, local computation, the optional OpenStreetMap boundary and the limits of `privacy_mode=summary`.
## Why this exists
Most astrology libraries are fragile single-engine wrappers, and most "astrology APIs" want a key and a subscription. Agents need something they can trust and call instantly. Astral MCP does two things differently:
1. **It just works.** `npx -y astral-mcp` and you're calling charts — no OAuth, no account, no birthplace database to install.
2. **It checks itself.** Every natal chart is computed with one ephemeris and then independently re-derived, planet by planet, with a second one. If they disagree beyond a tight tolerance, the chart is flagged `review` instead of silently returning a wrong placement.
## Setup in 60 seconds
Add it to your MCP client (Claude Desktop, Cursor, Hermes, …):
```json
{
"mcpServers": {
"astral": {
"command": "npx",
"args": ["-y", "astral-mcp"]
}
}
}
```
That's the whole setup. There is nothing to authenticate.
Run it directly if you want:
```bash
npx -y astral-mcp # stdio (default)
ASTRAL_MCP_TRANSPORT=http npx -y astral-mcp # streamable HTTP on 127.0.0.1:3000
```
## See it before you connect
Call **`astral_demo`** for a fully-worked example chart (Greenwich, noon, Y2K) including its precision audit — no input, no network, no auth. It shows you the exact payload shape before you send real birth data.
## Try it with your agent
> "What's my natal chart? I was born 23 Feb 1989, 14:30, in Fortaleza, Brazil."
The agent calls `astral_search_birthplace` to resolve Fortaleza → lat/lon/timezone, then `astral_compute_natal_chart`.
> "Any big transits hitting my chart this week?" → `astral_current_transits`
> "How compatible are we?" (two birth datas) → `astral_synastry`
> "What phase is the moon in today?" → `astral_moon_phase`
## Precision
Astral MCP ships every natal chart with a precision audit. The primary engine ([circular-natal-horoscope-js](https://www.npmjs.com/package/circular-natal-horoscope-js)) computes the chart; the verifier ([astronomy-engine](https://www.npmjs.com/package/astronomy-engine)) re-derives each planet's ecliptic longitude independently. A chart is `verified` only when every planet agrees within tolerance and lands in the same sign.
Across a built-in accuracy suite of charts spanning 1945–2010 and six timezones, the **worst cross-engine disagreement is under 0.01°**. Run it yourself:
```bash
npm run test:accuracy
```
## Data availability
| Capability | Supported |
|---|---|
| Planets (Sun…Pluto), Ascendant, MC/IC | ✅ |
| Houses (placidus, koch, campanus, regiomontanus, topocentric, equal-house, whole-sign) | ✅ |
| Major aspects with orb, strength, applying/separating | ✅ |
| Chart signature (dominant element/modality, pattern, stelliums, angular planets) | ✅ |
| Retrogrades · timezone/DST handling | ✅ |
| Transits (current + upcoming) · moon phase | ✅ |
| Synastry (two-chart comparison, scored) | ✅ |
| Tropical & sidereal zodiac | ✅ |
| Lunar nodes, Chiron, asteroids, fixed stars | ⏳ planned |
| Minor aspects | ⏳ planned |
| Interpretation text | ❌ by design — astral-mcp returns structured data; your model writes the reading |
## Tools
- `astral_compute_natal_chart` — full natal chart, precision-audited by default
- `astral_current_transits` — current + upcoming transits to a chart, with moon phase
- `astral_synastry` — compare two charts (harmony / chemistry / communication / growth)
- `astral_moon_phase` — moon phase, sign and illumination for any date
- `astral_search_birthplace` — geocode a place to latitude / longitude / timezone
- `astral_demo` — worked example chart, no input needed
- `astral_capabilities` — what this server supports and what it doesn't
- `astral_data_inventory` — data domains and recommended first calls
- `astral_agent_manifest` — install + usage rules for agents
- `astral_connection_status` — health check via a sample chart + dual-engine audit
The three chart tools (`astral_compute_natal_chart`, `astral_current_transits`, `astral_synastry`) take a **`privacy_mode`** parameter — a payload-verbosity axis separate from `response_format`:
- `full` (default) — the complete payload, including the per-planet precision audit
- `structured` — same structure, redundant/derivable fields dropped
- `summary` — only the high-signal essentials (luminaries + Ascendant, chart signature, top aspects)
A full Greenwich natal payload is ~6.9 KB; `summary` is ~1.2 KB (~80% smaller), so an agent that only needs a quick read can ask for less and spend fewer tokens.
## Notes for accurate readings
- Pass the **birthplace** timezone, not the caller's. `astral_search_birthplace` returns it.
- `birth_time` is optional. Without it, noon is assumed: planet signs stay accurate, but the Ascendant and houses are unreliable.
## Privacy & Security
Astral MCP stores nothing and holds no secrets. The only optional network call is `astral_search_birthplace` (OpenStreetMap), which sends just the place-name string you pass. See [SECURITY.md](SECURITY.md).
## Contributing
The computation core in `src/engine/` is ported from Alkhemia — keep it framework-free. See [AGENTS.md](AGENTS.md) for the development rules and the test gate (`npm test`).
## License
MIT — see [LICENSE](LICENSE).
## HTTP (v2 stateless)
Default is **stdio**. Optional Streamable HTTP — no session id, JSON responses, loopback only:
```bash
npx -y astral-mcp --http
# GET http://127.0.0.1:3000/health
# POST http://127.0.0.1:3000/mcp (sessionless)
```
Env: `ASTRAL_MCP_HOST`, `ASTRAL_MCP_PORT`, `ASTRAL_MCP_TRANSPORT=http`.
## Skill or MCP
```bash
npx -y astral-mcp call astral_connection_status --json '{}'
```