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.

ParametersJSON Schema
NameRequiredDescriptionDefault
datetimeYesInstant en ISO 8601 UTC, ex. "2026-07-18T14:00:00Z".

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It mentions 'calculated by the engine, not estimated,' which hints at a computational rather than observational behavior, but it does not disclose whether the operation is read-only, any required permissions, or potential side effects. For a simple query tool, this is adequate but not outstanding.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is exceptionally concise with two sentences, no redundant words, and front-loads the core functionality. Every sentence adds value, making it efficient and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one parameter, no output schema), the description is largely complete. However, it could be improved by briefly mentioning the output format (e.g., a list or grid of aspects) to fully compensate for the missing output schema. Still, it sufficiently covers the essential context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage for the sole parameter 'datetime,' providing full semantics. The description adds no additional meaning beyond what the schema already provides, so it meets the baseline of 3, neither enhancing nor detracting from parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that the tool calculates major and minor aspects between planets at a given time, with orb and tone, and emphasizes that it is engine-calculated not estimated. This distinguishes it from sibling tools like get_planet_positions or get_moon_phase, making the purpose very specific and clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when one needs aspects at a specific instant, but it does not provide explicit guidance on when to use this tool versus the many sibling tools (e.g., get_natal_chart, get_transits). No exclusions or alternative suggestions are given, which is a moderate gap given the context of numerous related tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
personAYesNaissance de la personne A.
personBYesNaissance de la personne B.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses the method (circular midpoint per Robert Hand), which is helpful. However, it does not mention any behavioral traits such as read-only nature, error handling, or output format, so transparency is moderate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences in French, front-loading the core concept. Every word adds value; no fluff or redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the absence of an output schema, the description should explain what the composite chart contains (e.g., planet positions, aspects, houses). It only states it represents the relationship, leaving the output structure completely unspecified. This is a significant gap for a tool that returns complex data.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with detailed descriptions for all properties in the nested person objects. The description adds no additional parameter meaning beyond what the schema already provides, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool computes a composite chart using midpoints (Robert Hand convention), representing the relationship itself. This is a specific verb+resource and distinguishes from sibling tools like get_synastry which focuses on aspects between charts.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives (e.g., get_synastry). It lacks any 'when to use' or 'when not to use' context, leaving the agent without decision support.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_current_skyA

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

ParametersJSON Schema
NameRequiredDescriptionDefault
latitudeYesLatitude en degrés décimaux (positif = Nord).
longitudeYesLongitude en degrés décimaux (positif = Est).

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description bears full transparency burden. It mentions output includes positions in houses and aspects, but does not disclose side effects, authentication needs, rate limits, or data format. This is adequate but not thorough.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, clear, concise sentence that front-loads the tool's purpose and output details. Every word is necessary and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (2 params, no output schema) and sibling context, the description adequately covers function and output. Minor omission: no mention of time resolution or time zone, but acceptable for a 'current' sky tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema descriptions already fully define latitude and longitude (decimal degrees, ranges, sign conventions) with 100% coverage. The tool description adds no additional parameter meaning beyond what the schema provides, earning the baseline score.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns the current sky (transits) for a given location, including house positions and aspects. It distinguishes from sibling tools like 'get_transits' (likely for arbitrary dates) and 'get_planet_positions' (without aspects/houses).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives. The phrase 'instant présent' implies it's for current sky only, but does not mention exclusions (e.g., past/future dates) or refer to sibling tools like 'get_transits' for other times.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
kindYesType d'éclipse à détailler.
datetimeYesInstant de l'éclipse en ISO UTC, ex. "2026-08-12T17:46:00Z".

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden. It discloses the requirement for the swisseph engine and the null return in AstraCore mode, but does not address other behavioral aspects like rate limits, error handling, or idempotency. This is adequate but not complete.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no superfluous words. The critical info (purpose, return fields, engine dependency) is front-loaded. Could be slightly more structured but effectively concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the absence of an output schema and annotations, the description provides the core purpose and a behavioral caveat, but lacks details on return format, error conditions, or examples. Adequate for a simple detail retrieval tool with sibling differentiation from context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents both parameters (kind, datetime). The description adds value by listing the return fields, but does not enhance parameter meaning beyond the schema's own descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's action ('Détail d'une éclipse') and lists the specific return fields (magnitude, obscuration, type, Saros series). It distinguishes itself from sibling astrological tools which focus on planets, moon phases, etc.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for known eclipse dates and notes engine dependency (swisseph, returns null in AstraCore), but does not provide explicit when-to-use or when-not-to-use guidance relative to siblings. Usage is implied but not fully articulated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_moon_phaseA

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

ParametersJSON Schema
NameRequiredDescriptionDefault
datetimeYesInstant en ISO 8601 UTC, ex. "2026-07-18T14:00:00Z".

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses that the data is derived from real Sun/Moon positions, but does not detail read-only behavior, computational costs, or any side effects. The description adds some transparency but is incomplete.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that conveys the essential information without redundancy. Every word adds value; there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one parameter and no output schema, the description adequately lists the returned data types (name, illumination %, description). It could mention if the output includes additional details like phase angles, but overall it provides sufficient context for basic use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 100% coverage for the single parameter. The description mentions 'à un instant donné' which aligns with the datetime parameter, but adds no additional constraints, format nuances, or default behavior beyond the schema description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns moon phase data (name, illumination %, description) for a given datetime, derived from real Sun/Moon positions. This specific verb-resource pair distinguishes it from sibling tools focused on other celestial calculations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for obtaining moon phase at a specific instant, but does not explicitly state when to use this tool versus alternatives like get_current_sky or get_planet_positions. No when-not-to-use or exclusion criteria are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesDate de naissance locale, format YYYY-MM-DD, ex. "1990-05-21".
timeYesHeure de naissance locale, format HH:mm (24 h), ex. "14:30".
zodiacNoZodiaque : "tropical" (défaut, occidental) ou "sidereal" (ayanamsa Lahiri).
latitudeYesLatitude en degrés décimaux (positif = Nord).
timezoneYesFuseau IANA du lieu de naissance, ex. "Europe/Paris".
longitudeYesLongitude en degrés décimaux (positif = Est).
houseSystemNoSystème de maisons (défaut "placidus"). Regiomontanus/Campanus/Koch exigent le moteur swisseph ; sinon repli Placidus signalé par le champ systemeMaisons retourné.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It discloses default systems (tropical, Placidus) and fallback behavior for certain house systems. However, it does not mention read-only nature, auth, or output format. For a computation tool, it is fairly transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence covering essential elements, but could be more structured or broken into bullet points. Still efficient with no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema, but description lists included chart components (positions, houses, aspects, ASC/MC, lunar phase, Hermetic Lots). Adequate for an astrological tool with 7 parameters. Could mention return format or error cases, but not required.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. Description adds minimal new info beyond schema: it mentions local date/time and IANA timezone, already in schema descriptions. No additional parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it computes a full natal chart with houses, aspects, ASC/MC, lunar phase, and Hermetic Lots, distinguishing it from sibling tools like get_planet_positions or get_aspects. Specific verb 'get' and resource 'natal chart' make purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implicitly indicates use for comprehensive chart vs alternatives, but lacks explicit when/when-not instructions. Still, the description of what it includes (houses, aspects, etc.) clarifies its scope relative to siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
datetimeYesInstant en ISO 8601 UTC, ex. "2026-07-18T14:00:00Z". Sans fuseau, interprété en UTC.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so description carries full burden. It discloses that calculations are server-side via ephemeris engine, not AI-estimated, which adds important context about accuracy and source. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no fluff. Front-loaded with key purpose and scope, then adds behavioral note. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one parameter and no output schema, the description adequately covers what bodies are returned and how positions are computed. Could mention the output format, but not required given lack of schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter (datetime) with 100% schema coverage. Description mentions 'à un instant donné' (at a given time) but adds little beyond the schema's ISO 8601 format description. Baseline score is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb (get positions), the resource (all bodies Sun→Pluto, nodes, Lilith), and the coordinate system (geocentric ecliptic). It distinguishes from siblings which focus on moon phase, aspects, or charts.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implied usage: use when you need planetary positions at a given time. However, no explicit when-not-to-use or alternative selection guidance is provided, leaving the agent to infer from sibling names.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesDate de naissance locale, format YYYY-MM-DD, ex. "1990-05-21".
timeYesHeure de naissance locale, format HH:mm (24 h), ex. "14:30".
latitudeYesLatitude en degrés décimaux (positif = Nord).
timezoneYesFuseau IANA du lieu de naissance, ex. "Europe/Paris".
longitudeYesLongitude en degrés décimaux (positif = Est).
targetDateYesDate pour laquelle progresser le thème, format YYYY-MM-DD.

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided. Description adds a note about Moon progression speed but lacks disclosure of other behavioral traits such as precision, rate limits, or authentication needs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with key information. No extraneous content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Missing details on return format, error handling, or prerequisites. Without annotations or output schema, a more complete description would be expected for a 6-parameter tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents all parameters effectively. Description adds minimal extra meaning beyond restating the target date concept.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly describes the tool as computing secondary progressions using the 'day for a year' method, and highlights the Moon's significance. Distinguishes from sibling tools like get_transits or get_natal_chart.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives. Does not contrast with siblings such as get_transits or get_solar_return.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesDate de naissance locale, format YYYY-MM-DD, ex. "1990-05-21".
timeYesHeure de naissance locale, format HH:mm (24 h), ex. "14:30".
yearYesAnnée du retour solaire, ex. 2026.
latitudeYesLatitude en degrés décimaux (positif = Nord).
timezoneYesFuseau IANA du lieu de naissance, ex. "Europe/Paris".
longitudeYesLongitude en degrés décimaux (positif = Est).
returnLatitudeNoLatitude du lieu au moment du retour (défaut : lieu de naissance).
returnLongitudeNoLongitude du lieu au moment du retour (défaut : lieu de naissance).

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses that it computes a specific astronomical event (exact time of Sun's return) and that chart location defaults to birth place if not provided. No annotations exist, so description carries full burden. Does not mention any side effects, permissions, or rate limits, which is acceptable for a compute-only tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence that is front-loaded with the key purpose and then adds additional detail about location. No wasted words; every part of the sentence is informative.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, and the description does not indicate what the tool returns (e.g., chart details, time of return, planetary positions). For a tool with 8 parameters and no output description, the completeness is lacking. The description covers input but not output.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema has 100% coverage with descriptions. The tool description adds minimal extra meaning beyond confirming that date/time/lat/lon are natal and returnLatitude/returnLongitude are for the return location. With full schema coverage, baseline is 3; description does not significantly enhance parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it calculates the exact moment of solar return (Sun returning to natal longitude) and the chart for that moment. Uses specific verb 'calculates' and resource 'solar return chart'. While it doesn't differentiate from sibling tools, the purpose is clear and distinct from other astrological tools like get_planet_positions or get_natal_chart.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies usage context: for a given year, using birth data and optionally residence location for calculation. However, no explicit guidance on when to use this vs siblings (e.g., when to use solar return vs secondary progressions). No exclusions or alternatives mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
personAYesNaissance de la personne A.
personBYesNaissance de la personne B.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, the description discloses key behavioral traits: it computes aspects, sorts by orb, and provides a harmony/tension summary. It also mentions reusing the canonical aspect table, adding useful context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, with two sentences that front-load the purpose. Every sentence adds value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description explains the output involves aspects sorted by orb and a harmony/tension summary. However, it lacks details on the exact output structure (e.g., fields of each aspect). For a moderately complex tool, it is nearly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already describes all parameters. The description adds minimal value beyond naming the two persons, so baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it computes synastry aspects between two individuals, sorted by orb, with a harmony/tension summary. It explicitly mentions 'aspects inter-thèmes entre deux personnes' and 'triés par orbe', making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly state when to use this tool versus siblings like get_aspects or get_composite_chart. It implies usage for synastry analysis but lacks explicit when-to-use or when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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 ».

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesDate de naissance locale, format YYYY-MM-DD, ex. "1990-05-21".
timeYesHeure de naissance locale, format HH:mm (24 h), ex. "14:30".
datetimeNoInstant du transit en ISO UTC (défaut : maintenant), ex. "2026-07-19T09:00:00Z".
latitudeYesLatitude en degrés décimaux (positif = Nord).
timezoneYesFuseau IANA du lieu de naissance, ex. "Europe/Paris".
longitudeYesLongitude en degrés décimaux (positif = Est).

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose behavioral traits. It states the tool returns aspects sorted by orb and can use a specific datetime, but it does not mention whether it is read-only, required permissions, or any side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with two sentences. The first sentence efficiently communicates the core function. The second sentence is brief but somewhat subjective. No unnecessary repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description provides a reasonable summary of the output (aspects sorted by orb). However, it lacks detail on data structure, pagination, and edge cases (e.g., missing planetary positions).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so parameters are well-documented. The description adds value by clarifying that datetime is optional (defaults to now) and the overall purpose, but does not enrich parameter meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool computes transits (aspects between transit planets and natal planets) sorted by orb, explicitly calling it the core of predictions. This distinguishes it from siblings like get_aspects (likely natal aspects) and get_natal_chart.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives (e.g., get_aspects, get_natal_chart). It implies usage for predictions but does not specify prerequisites or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A3.9/5.0
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

ActivitySlowing
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    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
    A
    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
    72
    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
    C
    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.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/kairosastro-sketch/mcp-ephemeris'

If you have feedback or need assistance with the MCP directory API, please join our Discord server