Astro-MCP is an astrological chart calculation server. It consumes birth data and returns planetary positions, house cusps, angles, and aspects. All computation is delegated to a separate ephemeris-mcp server which runs the Swiss Ephemeris library.
User / Agent
|
v
astro-mcp (this server)
| MCP SSE
v
ephemeris-mcp (Swiss Ephemeris backend)
_get_person_birth_data() is the ONLY function that converts stored birth
datetimes to UTC. It reads the naive local time and IANA timezone name from the
persons database, combines them, and returns a UTC datetime. All _byId chart
tools call this function. No other function performs timezone conversion.
birth_datetime: naive local time, NO offset (e.g. "1965-07-02T00:05:00")timezone: IANA timezone name (e.g. "Europe/Vienna", "America/New_York")longitude: used as fallback for LMT when timezone is missingTools that accept birth_datetime as a parameter (e.g. calculate_natal_chart,
calculate_transit_chart) expect UTC or offset-aware datetimes. The caller
is responsible for conversion. Use ISO 8601 format:
"1965-07-01T23:05:00Z" or "1965-07-01T23:05:00+00:00""1965-07-02T00:05:00+01:00"Tools that look up persons by ID/nickname (e.g. calculate_natal_chart_by_id)
automatically convert to UTC. Just pass the person identifier.
Use person_manage with action: "add". Required fields:
name: Full namebirth_datetime: ISO 8601 datetime (any format — will be stored)latitude, longitude: Birth coordinatestz: IANA timezone name (e.g. "Europe/Vienna")Optional: nickname, birthplace, elevation, gender, description, notes,
birth_time_known.
When adding a person, ALWAYS provide the tz field with the correct IANA
timezone name. This is essential for accurate chart calculation, especially for:
person_manage with action: "list" — list all personsperson_manage with action: "get" — retrieve by ID or nicknameperson_manage with action: "update" — modify fieldsperson_manage with action: "delete" — remove person| Tool | Description |
|---|---|
get_sky_state |
Raw planetary positions + houses for a datetime/location |
calculate_natal_chart |
Full natal chart: planets, houses, aspects, angles |
calculate_transit_chart |
Transit-to-natal aspects |
calculate_synastry_chart |
Relationship chart for two people |
calculate_composite_chart |
Composite (midpoint) chart |
calculate_davison_chart |
Davison (space-time midpoint) chart |
get_transit_preview |
Daily transit snapshots over a date range |
get_karmic_relationship_summary |
Karmic analysis for a relationship |
Same as above but with _byId suffix. Accept person_id (or nickname) instead
of birth data. Automatically handle timezone conversion.
| Tool | Description |
|---|---|
render_natal_chart |
SVG natal chart wheel |
render_transit_chart |
SVG transit chart |
render_synastry_chart |
SVG synastry chart |
render_composite_chart |
SVG composite chart |
render_davison_chart |
SVG Davison chart |
Each has a _byId variant.
| Tool | Description |
|---|---|
person_manage |
CRUD for persons database |
list_house_systems |
List supported house systems (Placidus, Koch, etc.) |
Supported house system codes: P (Placidus), K (Koch), E (Equal), W (Whole Sign),
A (Alcabitius), C (Campanus), M (Morinus), R (Porphyry), and more. Use
list_house_systems for the full list.
Default is Placidus.
1. person_manage(action="add", name="...", birth_datetime="...", latitude=..., longitude=..., tz="...")
2. calculate_natal_chart_by_id(person_id="...", include_overview=true)
calculate_natal_chart(
birth_datetime="1990-05-15T10:30:00+01:00", # UTC or offset-aware
latitude=47.07,
longitude=15.42,
include_overview=true
)
calculate_transit_chart_by_id(
person_id="...",
transit_datetime="2026-06-07T12:00:00Z" # UTC
)
calculate_synastry_chart_by_id(
person1_id="...",
person2_id="...",
include_davison_full=true
)
render_natal_chart_by_id(
person_id="...",
style="modern",
color_mode="color",
size=800
)
| URI | Content |
|---|---|
astro://guides/natal-astrology |
Natal chart interpretation guide |
astro://guides/karmic-astrology |
Karmic astrology guide |
astro://guides/relationship-astrology |
Relationship astrology guide |
astro://guides/financial-astrology |
Financial astrology guide |
All tools return {"error": "message"} on failure. Common errors:
"person not found: ..." — invalid person_id or nickname"add requires: name, birth_datetime, latitude, longitude" — missing fields"empty_response" — ephemeris server unreachable_byId tools when working with stored persons — they handle
timezone conversion automatically.include_overview flag adds element/modality/hemisphere balance,
stelliums, empty houses, chart ruler, and house rulers.include_patterns flag adds T-square, Grand Trine, Grand Cross, Yod
detection and chart shape classification.include_karmic flag adds nodal axis, Saturn, Pluto polarity point,
Part of Fortune, and 12th house analysis.top_n_aspects to limit aspect output to the N tightest by orb.