# io.github.kairosastro-sketch/mcp-ephemeris (npm · @cosmosos/mcp-ephemeris)

NASA-validated computed planetary positions for your AI: 19 astrology tools, never hallucinated.

- Trust score: 63/100 (medium)
- Change this week: +18
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- npm · `@cosmosos/mcp-ephemeris`: 63/100 (this document), [markdown](https://verifymcp.io/servers/kairosastro-sketch-mcp-ephemeris/cosmosos-mcp-ephemeris.md), [page](https://verifymcp.io/servers/kairosastro-sketch-mcp-ephemeris/cosmosos-mcp-ephemeris)

## Channel facts

- Registry: `npm`
- Package: `@cosmosos/mcp-ephemeris`
- Version: `0.2.3`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Supply Chain Security**: 79/100
  - No malware found by supply-chain analysis.
  - CVE check failed: a known high-severity CVE affects tar 6.2.1, reached via swisseph > node-gyp > tar. A fixed version is available.
  - No install/post-install scripts declared.
  - Only part of the dependency tree could be resolved (187 of 192), so this covers what we could see, not the whole tree.
- **Provenance & Transparency**: 32/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - License check failed: the license (PolyForm-Noncommercial-1.0.0) isn't a recognized OSI-approved license.
  - Actively maintained (last published 12 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 74/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 2290 tokens (~120/item across 19 items; 19 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 23/100
  - Stability observed for 7 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add kairosastro-sketch-mcp-ephemeris -- npx -y @cosmosos/mcp-ephemeris
```

### Codex

```bash
codex mcp add kairosastro-sketch-mcp-ephemeris -- npx -y @cosmosos/mcp-ephemeris
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "kairosastro-sketch-mcp-ephemeris": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@cosmosos/mcp-ephemeris"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add kairosastro-sketch-mcp-ephemeris --command npx --arg -y --arg @cosmosos/mcp-ephemeris
```

### Hermes

```yaml
mcp_servers:
  kairosastro-sketch-mcp-ephemeris:
    command: "npx"
    args: ["-y", "@cosmosos/mcp-ephemeris"]
```

### Other

```json
{
  "mcpServers": {
    "kairosastro-sketch-mcp-ephemeris": {
      "command": "npx",
      "args": [
        "-y",
        "@cosmosos/mcp-ephemeris"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-02 (score 63, +28)

- [security regression] CVE-2026-26960 affects this package: high
- [security regression] CVE-2026-3449 affects this package: high
- [security regression] CVE-2026-23745 affects this package: high
- [security regression] CVE-2026-31802 affects this package: high
- [security regression] CVE-2026-59871 affects this package: high
- [security regression] GHSA-r292-9mhp-454m affects this package: high
- [security regression] CVE-2026-53655 affects this package: high
- [security regression] CVE-2026-59873 affects this package: high
- [security regression] CVE-2026-24842 affects this package: high
- [security regression] CVE-2026-29786 affects this package: high
- [security regression] CVE-2026-23950 affects this package: high
- [security regression] CVE-2026-59874 affects this package: high
- [security regression] CVE-2026-59875 affects this package: high
- [security regression] Known CVEs: unverified → fail
- [security regression] Provenance: unverified → fail
- [security regression] Malware scan: pass → unverified
- [security improvement] Install scripts: unverified → pass
- [functional regression] License: unverified → fail
- [functional regression] Security disclosure: fail → unverified
- [functional regression] Tool coverage: 100 → unverified
- [functional improvement] Schema quality: unverified → excellent
- [functional improvement] Dependency health: unverified → partial
- [functional improvement] Stability: unverified → 0.20
- [functional improvement] Maintenance: unverified → pass
- [functional improvement] MCP protocol: unverified → pass
- [functional] Licence: PolyForm-Noncommercial-1.0.0

### 2026-08-01 (score 35, +15)

- [security improvement] Malware scan: unverified → pass

### 2026-07-31 (score 20, −25)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 45, +21)

- [functional improvement] Tool coverage: unverified → 100

### 2026-07-28 (score 24, −21)

- [functional regression] Tool coverage: 100 → unverified
- [functional] First check of Schema quality: unverified

### 2026-07-27 (score 45)

First indexed and scored.

## MCP tools (19)

### `get_planet_positions` (~103 tokens)

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.

Input parameters:

- `datetime` (string, required): Instant en ISO 8601 UTC, ex. "2026-07-18T14:00:00Z". Sans fuseau, interprété en UTC.

### `get_moon_phase` (~68 tokens)

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

Input parameters:

- `datetime` (string, required): Instant en ISO 8601 UTC, ex. "2026-07-18T14:00:00Z".

### `get_current_sky` (~69 tokens)

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

Input parameters:

- `latitude` (number, required): Latitude en degrés décimaux (positif = Nord).
- `longitude` (number, required): Longitude en degrés décimaux (positif = Est).

### `get_aspects` (~81 tokens)

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.

Input parameters:

- `datetime` (string, required): Instant en ISO 8601 UTC, ex. "2026-07-18T14:00:00Z".

### `get_natal_chart` (~275 tokens)

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

Input parameters:

- `date` (string, required): Date de naissance locale, format YYYY-MM-DD, ex. "1990-05-21".
- `houseSystem` (string): Système de maisons (défaut "placidus"). Regiomontanus/Campanus/Koch exigent le moteur swisseph ; sinon repli Placidus signalé par le champ systemeMaisons retourné.
- `latitude` (number, required): Latitude en degrés décimaux (positif = Nord).
- `longitude` (number, required): Longitude en degrés décimaux (positif = Est).
- `time` (string, required): Heure de naissance locale, format HH:mm (24 h), ex. "14:30".
- `timezone` (string, required): Fuseau IANA du lieu de naissance, ex. "Europe/Paris".
- `zodiac` (string): Zodiaque : "tropical" (défaut, occidental) ou "sidereal" (ayanamsa Lahiri).

### `get_transits` (~201 tokens)

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

Input parameters:

- `date` (string, required): Date de naissance locale, format YYYY-MM-DD, ex. "1990-05-21".
- `datetime` (string): Instant du transit en ISO UTC (défaut : maintenant), ex. "2026-07-19T09:00:00Z".
- `latitude` (number, required): Latitude en degrés décimaux (positif = Nord).
- `longitude` (number, required): Longitude en degrés décimaux (positif = Est).
- `time` (string, required): Heure de naissance locale, format HH:mm (24 h), ex. "14:30".
- `timezone` (string, required): Fuseau IANA du lieu de naissance, ex. "Europe/Paris".

### `get_synastry` (~84 tokens)

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.

Input parameters:

- `personA` (object, required): Naissance de la personne A.
- `personB` (object, required): Naissance de la personne B.

### `get_composite_chart` (~73 tokens)

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.

Input parameters:

- `personA` (object, required): Naissance de la personne A.
- `personB` (object, required): Naissance de la personne B.

### `get_secondary_progressions` (~191 tokens)

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.

Input parameters:

- `date` (string, required): Date de naissance locale, format YYYY-MM-DD, ex. "1990-05-21".
- `latitude` (number, required): Latitude en degrés décimaux (positif = Nord).
- `longitude` (number, required): Longitude en degrés décimaux (positif = Est).
- `targetDate` (string, required): Date pour laquelle progresser le thème, format YYYY-MM-DD.
- `time` (string, required): Heure de naissance locale, format HH:mm (24 h), ex. "14:30".
- `timezone` (string, required): Fuseau IANA du lieu de naissance, ex. "Europe/Paris".

### `get_solar_return` (~224 tokens)

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

Input parameters:

- `date` (string, required): Date de naissance locale, format YYYY-MM-DD, ex. "1990-05-21".
- `latitude` (number, required): Latitude en degrés décimaux (positif = Nord).
- `longitude` (number, required): Longitude en degrés décimaux (positif = Est).
- `returnLatitude` (number): Latitude du lieu au moment du retour (défaut : lieu de naissance).
- `returnLongitude` (number): Longitude du lieu au moment du retour (défaut : lieu de naissance).
- `time` (string, required): Heure de naissance locale, format HH:mm (24 h), ex. "14:30".
- `timezone` (string, required): Fuseau IANA du lieu de naissance, ex. "Europe/Paris".
- `year` (integer, required): Année du retour solaire, ex. 2026.

### `get_lunar_return` (~181 tokens)

Retour lunaire : le prochain instant, après une date de référence, où la Lune retrouve sa longitude natale (~tous les 27,3 jours), et le thème à cet instant.

Input parameters:

- `after` (string): Chercher le retour après cet instant ISO UTC (défaut : maintenant).
- `date` (string, required): Date de naissance locale, format YYYY-MM-DD, ex. "1990-05-21".
- `latitude` (number, required): Latitude en degrés décimaux (positif = Nord).
- `longitude` (number, required): Longitude en degrés décimaux (positif = Est).
- `time` (string, required): Heure de naissance locale, format HH:mm (24 h), ex. "14:30".
- `timezone` (string, required): Fuseau IANA du lieu de naissance, ex. "Europe/Paris".

### `get_ingresses` (~105 tokens)

Ingrès : dates auxquelles un corps change de signe sur une plage donnée (entrées/sorties de signe), robuste aux passages rétrogrades.

Input parameters:

- `body` (string, required): Corps à suivre.
- `end` (string, required): Fin de la plage, ISO UTC. Plage max conseillée : quelques années.
- `start` (string, required): Début de la plage, ISO UTC, ex. "2026-01-01T00:00:00Z".

### `get_retrograde_windows` (~93 tokens)

Stations de rétrogradation : dates auxquelles un corps change de direction (station rétrograde ou directe) sur une plage donnée. Le Soleil et la Lune ne rétrogradent jamais.

Input parameters:

- `body` (string, required): Corps à suivre (Mercure→Pluton).
- `end` (string, required): Fin de la plage, ISO UTC.
- `start` (string, required): Début de la plage, ISO UTC.

### `get_eclipse_details` (~103 tokens)

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

Input parameters:

- `datetime` (string, required): Instant de l'éclipse en ISO UTC, ex. "2026-08-12T17:46:00Z".
- `kind` (string, required): Type d'éclipse à détailler.

### `get_next_eclipse` (~126 tokens)

Trouve la prochaine (ou précédente) éclipse solaire ou lunaire à partir d'une date : instant du maximum, type, et fenêtres de contact. Nécessite le moteur swisseph (retourne null en AstraCore).

Input parameters:

- `backward` (boolean): true = chercher la précédente au lieu de la prochaine (défaut false).
- `from` (string, required): Chercher à partir de cet instant ISO UTC, ex. "2026-01-01T00:00:00Z".
- `kind` (string, required): Type d'éclipse à chercher.

### `get_astrocartography` (~83 tokens)

Astrocartographie à un instant donné : pour chaque corps, les méridiens MC/IC et le nombre de points des courbes lever/coucher, plus les parans (croisements de lignes).

Input parameters:

- `datetime` (string, required): Instant en ISO 8601 UTC, ex. "2026-07-18T14:00:00Z".

### `get_life_path` (~63 tokens)

Nombre du chemin de vie (numérologie pythagoricienne) calculé depuis la date de naissance locale. Fait déterministe, jamais estimé par le modèle.

Input parameters:

- `date` (string, required): Date de naissance locale, format YYYY-MM-DD.

### `get_engine_diagnostic` (~56 tokens)

Diagnostic du moteur de calcul : quel moteur est actif (swisseph sub-arcseconde vs AstraCore), si l'addon natif a chargé, et pourquoi. Utile pour vérifier la précision dont vous bénéficiez.

### `validate_against_horizons` (~111 tokens)

Preuve d'exactitude : compare nos positions planétaires à la référence mondiale JPL Horizons (NASA) au même instant, et donne l'écart en secondes d'arc. Nécessite un accès réseau.

Input parameters:

- `bodies` (array): Sous-ensemble de corps à valider (défaut : les 10 classiques).
- `datetime` (string, required): Instant en ISO 8601 UTC, ex. "2026-07-19T00:00:00Z".

## Diagnostics

Captured diagnostic sections: Provenance, Vulnerabilities, Dependencies. The full working is on the page: https://verifymcp.io/servers/kairosastro-sketch-mcp-ephemeris/cosmosos-mcp-ephemeris#diagnostics

## Score history

- 2026-08-03: 63
- 2026-08-02: 63
- 2026-08-01: 35
- 2026-07-31: 20
- 2026-07-30: 45
- 2026-07-28: 24
- 2026-07-27: 45

## Links

- npm package: https://www.npmjs.com/package/@cosmosos/mcp-ephemeris
- Socket report: https://socket.dev/npm/package/@cosmosos/mcp-ephemeris
- Repository: https://github.com/kairosastro-sketch/mcp-ephemeris
- Website: https://llmastro.com/notre-moteur
- Changelog RSS feed: https://verifymcp.io/servers/kairosastro-sketch-mcp-ephemeris/cosmosos-mcp-ephemeris/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/kairosastro-sketch-mcp-ephemeris/cosmosos-mcp-ephemeris/changelog.json
- HTML version of this page: https://verifymcp.io/servers/kairosastro-sketch-mcp-ephemeris/cosmosos-mcp-ephemeris
