mcp-ephemeris
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-ephemerisWhat's the moon phase today?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
@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 |
|
| ecliptic positions of all bodies (sign, degree, retro) |
|
| moon phase, illumination %, description |
|
| the sky right now (current transits) for a place |
|
| grid of major + minor aspects between bodies |
Natal chart & relationships
Tool | Input | Output |
| birth + | full chart: houses, aspects, ASC/MC, moon phase, Hermetic Lots |
| birth + optional | transit→natal aspects, sorted by orb |
| two births | inter-chart aspects + harmony/tension summary |
| two births | midpoint composite chart |
| birth + | progressed positions ("a day for a year") |
| birth + | instant + chart of the solar return |
| birth + optional | instant + chart of the next lunar return |
Celestial events
Tool | Input | Output |
|
| sign-change dates (retrograde-robust) |
|
| retrograde/direct stations over the range |
|
| magnitude, obscuration, Saros of a known eclipse (swisseph) |
|
| next/previous eclipse: maximum, type, contacts (swisseph) |
Astrocartography, numerology, authority
Tool | Input | Output |
|
| planetary MC/IC lines + parans (crossings) |
|
| life-path number (numerology) |
| — | active engine, native addon load status, real precision |
|
| 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 whenswissephcouldn'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 toastracore, 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) locallyDefault engine:
swisseph(sub-arcsecond precision) if the native addon compiles, otherwise automatic fallback toastracore(pure TypeScript, no binary). Force viaASTRO_ENGINE=swisseph|astracore.The vendored engine is a snapshot of
@astro-platform/ephemeris(Llmastro), re-synced manually.
Available Tools
11 toolsget_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.
| Name | Required | Description | Default |
|---|---|---|---|
| datetime | Yes | Instant en ISO 8601 UTC, ex. "2026-07-18T14:00:00Z". |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| personA | Yes | Naissance de la personne A. | |
| personB | Yes | Naissance de la personne B. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| latitude | Yes | Latitude en degrés décimaux (positif = Nord). | |
| longitude | Yes | Longitude en degrés décimaux (positif = Est). |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | Type d'éclipse à détailler. | |
| datetime | Yes | Instant de l'éclipse en ISO UTC, ex. "2026-08-12T17:46:00Z". |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| datetime | Yes | Instant en ISO 8601 UTC, ex. "2026-07-18T14:00:00Z". |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | Date de naissance locale, format YYYY-MM-DD, ex. "1990-05-21". | |
| time | Yes | Heure de naissance locale, format HH:mm (24 h), ex. "14:30". | |
| zodiac | No | Zodiaque : "tropical" (défaut, occidental) ou "sidereal" (ayanamsa Lahiri). | |
| latitude | Yes | Latitude en degrés décimaux (positif = Nord). | |
| timezone | Yes | Fuseau IANA du lieu de naissance, ex. "Europe/Paris". | |
| longitude | Yes | Longitude en degrés décimaux (positif = Est). | |
| houseSystem | No | Système de maisons (défaut "placidus"). Regiomontanus/Campanus/Koch exigent le moteur swisseph ; sinon repli Placidus signalé par le champ systemeMaisons retourné. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| datetime | Yes | Instant en ISO 8601 UTC, ex. "2026-07-18T14:00:00Z". Sans fuseau, interprété en UTC. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | Date de naissance locale, format YYYY-MM-DD, ex. "1990-05-21". | |
| time | Yes | Heure de naissance locale, format HH:mm (24 h), ex. "14:30". | |
| latitude | Yes | Latitude en degrés décimaux (positif = Nord). | |
| timezone | Yes | Fuseau IANA du lieu de naissance, ex. "Europe/Paris". | |
| longitude | Yes | Longitude en degrés décimaux (positif = Est). | |
| targetDate | Yes | Date pour laquelle progresser le thème, format YYYY-MM-DD. |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | Date de naissance locale, format YYYY-MM-DD, ex. "1990-05-21". | |
| time | Yes | Heure de naissance locale, format HH:mm (24 h), ex. "14:30". | |
| year | Yes | Année du retour solaire, ex. 2026. | |
| latitude | Yes | Latitude en degrés décimaux (positif = Nord). | |
| timezone | Yes | Fuseau IANA du lieu de naissance, ex. "Europe/Paris". | |
| longitude | Yes | Longitude en degrés décimaux (positif = Est). | |
| returnLatitude | No | Latitude du lieu au moment du retour (défaut : lieu de naissance). | |
| returnLongitude | No | Longitude du lieu au moment du retour (défaut : lieu de naissance). |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| personA | Yes | Naissance de la personne A. | |
| personB | Yes | Naissance de la personne B. |
TDQS
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.
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.
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.
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.
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.
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 ».
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | Date de naissance locale, format YYYY-MM-DD, ex. "1990-05-21". | |
| time | Yes | Heure de naissance locale, format HH:mm (24 h), ex. "14:30". | |
| datetime | No | Instant du transit en ISO UTC (défaut : maintenant), ex. "2026-07-19T09:00:00Z". | |
| latitude | Yes | Latitude en degrés décimaux (positif = Nord). | |
| timezone | Yes | Fuseau IANA du lieu de naissance, ex. "Europe/Paris". | |
| longitude | Yes | Longitude en degrés décimaux (positif = Est). |
TDQS
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.
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.
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.
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.
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.
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
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).
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.
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.
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
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
MCP server for aerospace calculations: orbital mechanics, ephemeris, DSN operations, ...
Real-time planetary signal engine and Model Context Protocol (MCP) server for autonomous AI agents.
Hosted MCP server for live public-data APIs and Skills for AI agents.
Hosted MCP server connecting AI assistants to 9,000+ apps and 40,000+ actions via Zapier.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceA 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%4AGPL 3.0
- AlicenseAqualityAmaintenanceAstrology 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.12721MIT
- FlicenseNot gradedqualityDmaintenanceAn 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.
- FlicenseNot gradedqualityCmaintenanceA 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
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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