@cosmosos/mcp-ephemeris 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +105 -88
- package/dist/index.js +20 -20
- package/package.json +10 -4
package/README.md
CHANGED
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
# @cosmosos/mcp-ephemeris
|
|
2
2
|
|
|
3
|
-
**
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
[Swiss Ephemeris](https://www.astro.com/swisseph/),
|
|
7
|
-
JPL Horizons (NASA)**
|
|
3
|
+
**The real sky, for your AI.** An [MCP](https://modelcontextprotocol.io) server
|
|
4
|
+
that gives any assistant (Claude, Cursor, agents) **computed planetary
|
|
5
|
+
positions** — never guessed — powered by the
|
|
6
|
+
[Swiss Ephemeris](https://www.astro.com/swisseph/) engine, and **validated
|
|
7
|
+
against JPL Horizons (NASA)** to under one arcsecond.
|
|
8
8
|
|
|
9
|
-
> **
|
|
10
|
-
>
|
|
9
|
+
> **Cardinal rule: the LLM never computes.** This server is a facade over an
|
|
10
|
+
> ephemeris engine. The model interprets; the sky is a fact.
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
*(Version française : <https://llmastro.com/notre-moteur>)*
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
## Quick start (Claude Desktop)
|
|
15
|
+
|
|
16
|
+
Open **Settings → Developer → Edit Config**, then add:
|
|
15
17
|
|
|
16
18
|
```json
|
|
17
19
|
{
|
|
@@ -24,113 +26,128 @@ Ouvrez **Réglages → Développeur → Modifier la configuration**, puis ajoute
|
|
|
24
26
|
}
|
|
25
27
|
```
|
|
26
28
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
29
|
+
Fully quit Claude Desktop (system tray) and relaunch it. Then ask:
|
|
30
|
+
*"What's the moon phase today?"* — Claude calls the server and answers from
|
|
31
|
+
genuinely computed positions.
|
|
30
32
|
|
|
31
|
-
**Cursor / Windsurf /
|
|
32
|
-
(`command: npx`, `args: ["-y", "@cosmosos/mcp-ephemeris"]`)
|
|
33
|
-
|
|
33
|
+
**Cursor / Windsurf / others**: add the same `llmastro` entry
|
|
34
|
+
(`command: npx`, `args: ["-y", "@cosmosos/mcp-ephemeris"]`) to your client's MCP
|
|
35
|
+
configuration.
|
|
34
36
|
|
|
35
|
-
##
|
|
37
|
+
## Tools exposed
|
|
36
38
|
|
|
37
|
-
**19
|
|
39
|
+
**19 tools**, all backed by the same server-side computed engine.
|
|
38
40
|
|
|
39
|
-
### Positions &
|
|
40
|
-
|
|
|
41
|
+
### Positions & sky
|
|
42
|
+
| Tool | Input | Output |
|
|
41
43
|
|---|---|---|
|
|
42
|
-
| `get_planet_positions` | `datetime` (ISO UTC) | positions
|
|
43
|
-
| `get_moon_phase` | `datetime` (ISO UTC) | phase
|
|
44
|
-
| `get_current_sky` | `latitude`, `longitude` |
|
|
45
|
-
| `get_aspects` | `datetime` (ISO UTC) |
|
|
44
|
+
| `get_planet_positions` | `datetime` (ISO UTC) | ecliptic positions of all bodies (sign, degree, retro) |
|
|
45
|
+
| `get_moon_phase` | `datetime` (ISO UTC) | moon phase, illumination %, description |
|
|
46
|
+
| `get_current_sky` | `latitude`, `longitude` | the sky right now (current transits) for a place |
|
|
47
|
+
| `get_aspects` | `datetime` (ISO UTC) | grid of major + minor aspects between bodies |
|
|
46
48
|
|
|
47
|
-
###
|
|
48
|
-
|
|
|
49
|
+
### Natal chart & relationships
|
|
50
|
+
| Tool | Input | Output |
|
|
49
51
|
|---|---|---|
|
|
50
|
-
| `get_natal_chart` |
|
|
51
|
-
| `get_transits` |
|
|
52
|
-
| `get_synastry` |
|
|
53
|
-
| `get_composite_chart` |
|
|
54
|
-
| `get_secondary_progressions` |
|
|
55
|
-
| `get_solar_return` |
|
|
56
|
-
| `get_lunar_return` |
|
|
57
|
-
|
|
58
|
-
###
|
|
59
|
-
|
|
|
52
|
+
| `get_natal_chart` | birth + `zodiac` (tropical/sidereal), `houseSystem` (7 systems) | full chart: houses, aspects, ASC/MC, moon phase, Hermetic Lots |
|
|
53
|
+
| `get_transits` | birth + optional `datetime` | transit→natal aspects, sorted by orb |
|
|
54
|
+
| `get_synastry` | two births | inter-chart aspects + harmony/tension summary |
|
|
55
|
+
| `get_composite_chart` | two births | midpoint composite chart |
|
|
56
|
+
| `get_secondary_progressions` | birth + `targetDate` | progressed positions ("a day for a year") |
|
|
57
|
+
| `get_solar_return` | birth + `year` (+ optional place) | instant + chart of the solar return |
|
|
58
|
+
| `get_lunar_return` | birth + optional `after` | instant + chart of the next lunar return |
|
|
59
|
+
|
|
60
|
+
### Celestial events
|
|
61
|
+
| Tool | Input | Output |
|
|
60
62
|
|---|---|---|
|
|
61
|
-
| `get_ingresses` | `body`, `start`, `end` | dates
|
|
62
|
-
| `get_retrograde_windows` | `body`, `start`, `end` | stations
|
|
63
|
-
| `get_eclipse_details` | `datetime`, `kind` | magnitude, obscuration, Saros
|
|
64
|
-
| `get_next_eclipse` | `from`, `kind`, `backward`
|
|
63
|
+
| `get_ingresses` | `body`, `start`, `end` | sign-change dates (retrograde-robust) |
|
|
64
|
+
| `get_retrograde_windows` | `body`, `start`, `end` | retrograde/direct stations over the range |
|
|
65
|
+
| `get_eclipse_details` | `datetime`, `kind` | magnitude, obscuration, Saros of a known eclipse *(swisseph)* |
|
|
66
|
+
| `get_next_eclipse` | `from`, `kind`, optional `backward` | next/previous eclipse: maximum, type, contacts *(swisseph)* |
|
|
65
67
|
|
|
66
|
-
###
|
|
67
|
-
|
|
|
68
|
+
### Astrocartography, numerology, authority
|
|
69
|
+
| Tool | Input | Output |
|
|
68
70
|
|---|---|---|
|
|
69
|
-
| `get_astrocartography` | `datetime` (ISO UTC) |
|
|
70
|
-
| `get_life_path` | `date` (YYYY-MM-DD) |
|
|
71
|
-
| `get_engine_diagnostic` | — |
|
|
72
|
-
| `validate_against_horizons` | `datetime`, `bodies`
|
|
71
|
+
| `get_astrocartography` | `datetime` (ISO UTC) | planetary MC/IC lines + parans (crossings) |
|
|
72
|
+
| `get_life_path` | `date` (YYYY-MM-DD) | life-path number (numerology) |
|
|
73
|
+
| `get_engine_diagnostic` | — | active engine, native addon load status, real precision |
|
|
74
|
+
| `validate_against_horizons` | `datetime`, optional `bodies` | delta of our positions vs JPL Horizons (NASA) in arcseconds — network required |
|
|
73
75
|
|
|
74
|
-
*(swisseph)* =
|
|
76
|
+
*(swisseph)* = requires the native Swiss Ephemeris addon; returns `null` on the AstraCore fallback.
|
|
75
77
|
|
|
76
|
-
##
|
|
78
|
+
## Precision
|
|
77
79
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
80
|
+
Under [Swiss Ephemeris](https://www.astro.com/swisseph/), positions match the
|
|
81
|
+
world reference **JPL Horizons (NASA)** to under one arcsecond (measured
|
|
82
|
+
2026-07-19):
|
|
81
83
|
|
|
82
|
-
|
|
|
84
|
+
| Body | Difference vs NASA |
|
|
83
85
|
|---|---|
|
|
84
|
-
|
|
|
85
|
-
|
|
|
86
|
-
| Jupiter | 0
|
|
87
|
-
|
|
|
86
|
+
| Sun | 0.2″ |
|
|
87
|
+
| Moon | 1.5″ |
|
|
88
|
+
| Jupiter | 0.1″ |
|
|
89
|
+
| Pluto | 0.4″ |
|
|
88
90
|
|
|
89
|
-
|
|
91
|
+
Check it yourself with the `validate_against_horizons` tool.
|
|
90
92
|
|
|
91
|
-
##
|
|
93
|
+
## Two engines
|
|
92
94
|
|
|
93
|
-
|
|
95
|
+
Computation is routed by the `ASTRO_ENGINE` variable:
|
|
94
96
|
|
|
95
|
-
- **`swisseph`** (
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
- **`astracore`** —
|
|
99
|
-
|
|
100
|
-
(
|
|
101
|
-
|
|
97
|
+
- **`swisseph`** (default) — Swiss Ephemeris, native addon, sub-arcsecond
|
|
98
|
+
precision. Compiles automatically wherever a C++ build chain is present
|
|
99
|
+
(Linux, macOS, most servers).
|
|
100
|
+
- **`astracore`** — in-house pure-TypeScript engine (VSOP/Meeus), **no native
|
|
101
|
+
binary**. Used as an automatic fallback when `swisseph` couldn't be compiled
|
|
102
|
+
(common on Windows). Sun and Moon stay accurate; outer planets drift by a few
|
|
103
|
+
arcminutes.
|
|
102
104
|
|
|
103
|
-
|
|
105
|
+
To force an engine: `ASTRO_ENGINE=swisseph` or `ASTRO_ENGINE=astracore`.
|
|
104
106
|
|
|
105
|
-
##
|
|
107
|
+
## Privacy
|
|
106
108
|
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
sortante (vers l'API publique de la NASA).
|
|
109
|
+
The server runs **on your machine**: your birth data is sent nowhere. Only
|
|
110
|
+
`validate_against_horizons` makes an outbound request (to NASA's public API).
|
|
110
111
|
|
|
111
|
-
##
|
|
112
|
+
## Requirements
|
|
112
113
|
|
|
113
114
|
- Node.js ≥ 20.
|
|
114
|
-
-
|
|
115
|
-
|
|
116
|
-
|
|
115
|
+
- For maximum precision (`swisseph`): a C++ build chain (`python3`, `make`, a
|
|
116
|
+
compiler) on the machine. Otherwise, automatic fallback to `astracore`, with
|
|
117
|
+
no configuration.
|
|
118
|
+
|
|
119
|
+
## About
|
|
120
|
+
|
|
121
|
+
Powered by the astrology engine of [Llmastro](https://llmastro.com). Learn more
|
|
122
|
+
about the precision and architecture: <https://llmastro.com/notre-moteur>.
|
|
117
123
|
|
|
118
|
-
##
|
|
124
|
+
## License
|
|
119
125
|
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
126
|
+
**Free for non-commercial use** (personal, research, education, non-profit
|
|
127
|
+
organizations) — under the
|
|
128
|
+
[PolyForm Noncommercial 1.0.0](./LICENSE) license.
|
|
123
129
|
|
|
124
|
-
|
|
130
|
+
**Commercial / professional use: a paid license is required.** To obtain one,
|
|
131
|
+
contact KAIROSAST LTD via <https://llmastro.com/contact>.
|
|
125
132
|
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
133
|
+
Note: the optional `swisseph` dependency (Swiss Ephemeris, Astrodienst) has its
|
|
134
|
+
own license (AGPL or a commercial Swiss Ephemeris license) and is not covered by
|
|
135
|
+
this one. Professional use must comply with it separately.
|
|
129
136
|
|
|
130
|
-
|
|
131
|
-
|
|
137
|
+
## Development
|
|
138
|
+
|
|
139
|
+
This repository is **self-contained**: the ephemeris engine is vendored in
|
|
140
|
+
`vendor/ephemeris/` (source), and the build inlines it into `dist/` via
|
|
141
|
+
[`tsup`](https://tsup.egoist.dev/).
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
pnpm install # or npm install
|
|
145
|
+
pnpm build # bundles dist/index.js (engine inlined)
|
|
146
|
+
pnpm start # runs the MCP server (stdio) locally
|
|
147
|
+
```
|
|
132
148
|
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
149
|
+
- Default engine: `swisseph` (sub-arcsecond precision) if the native addon
|
|
150
|
+
compiles, otherwise automatic fallback to `astracore` (pure TypeScript, no
|
|
151
|
+
binary). Force via `ASTRO_ENGINE=swisseph|astracore`.
|
|
152
|
+
- The vendored engine is a snapshot of `@astro-platform/ephemeris` (Llmastro),
|
|
153
|
+
re-synced manually.
|
package/dist/index.js
CHANGED
|
@@ -13,7 +13,7 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
|
13
13
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
14
14
|
import { z } from "zod";
|
|
15
15
|
|
|
16
|
-
//
|
|
16
|
+
// node_modules/.pnpm/@astro-platform+ephemeris@file+vendor+ephemeris/node_modules/@astro-platform/ephemeris/src/astrocartography.ts
|
|
17
17
|
var DEG = Math.PI / 180;
|
|
18
18
|
var RAD = 180 / Math.PI;
|
|
19
19
|
function norm360(x) {
|
|
@@ -136,7 +136,7 @@ function findParans(lines, dedupDeg = 1.5) {
|
|
|
136
136
|
return kept;
|
|
137
137
|
}
|
|
138
138
|
|
|
139
|
-
//
|
|
139
|
+
// node_modules/.pnpm/@astro-platform+ephemeris@file+vendor+ephemeris/node_modules/@astro-platform/ephemeris/src/numerology.ts
|
|
140
140
|
function computeLifePath(localBirthDate) {
|
|
141
141
|
function reduceToDigit(n) {
|
|
142
142
|
while (n > 9) {
|
|
@@ -162,7 +162,7 @@ function computeLifePath(localBirthDate) {
|
|
|
162
162
|
}
|
|
163
163
|
}
|
|
164
164
|
|
|
165
|
-
//
|
|
165
|
+
// node_modules/.pnpm/@astro-platform+ephemeris@file+vendor+ephemeris/node_modules/@astro-platform/ephemeris/src/engine-core.ts
|
|
166
166
|
var PI = Math.PI;
|
|
167
167
|
var R = PI / 180;
|
|
168
168
|
var D = 180 / PI;
|
|
@@ -189,7 +189,7 @@ function solveKepler(Mdeg, e) {
|
|
|
189
189
|
return E;
|
|
190
190
|
}
|
|
191
191
|
|
|
192
|
-
//
|
|
192
|
+
// node_modules/.pnpm/@astro-platform+ephemeris@file+vendor+ephemeris/node_modules/@astro-platform/ephemeris/src/vsop.ts
|
|
193
193
|
var PE = {
|
|
194
194
|
earth: { L0: 100.46646, L1: 36000.76983, p0: 102.937, p1: 1198, e0: 0.01671, e1: -42e-6, a: 1, i: 0, Om: 0 },
|
|
195
195
|
mercury: { L0: 252.2503, L1: 149472.675, p0: 77.456, p1: 5719, e0: 0.20563, e1: 204e-7, a: 0.3871, i: 7.005, Om: 48.331 },
|
|
@@ -260,7 +260,7 @@ function isRetrograde(key, JD) {
|
|
|
260
260
|
return v !== void 0 && v < 0;
|
|
261
261
|
}
|
|
262
262
|
|
|
263
|
-
//
|
|
263
|
+
// node_modules/.pnpm/@astro-platform+ephemeris@file+vendor+ephemeris/node_modules/@astro-platform/ephemeris/src/solar-lunar.ts
|
|
264
264
|
function sunGeo(T) {
|
|
265
265
|
const L0 = n360(280.46646 + 36000.76983 * T + 3032e-7 * T * T);
|
|
266
266
|
const M = n360(357.52911 + 35999.05029 * T - 1537e-7 * T * T);
|
|
@@ -346,7 +346,7 @@ function moonPhase(JD) {
|
|
|
346
346
|
};
|
|
347
347
|
}
|
|
348
348
|
|
|
349
|
-
//
|
|
349
|
+
// node_modules/.pnpm/@astro-platform+ephemeris@file+vendor+ephemeris/node_modules/@astro-platform/ephemeris/src/houses.ts
|
|
350
350
|
function gmst(JD) {
|
|
351
351
|
const T = (JD - 2451545) / 36525;
|
|
352
352
|
return n360(280.46061837 + 360.98564736629 * (JD - 2451545) + 387933e-9 * T * T - T * T * T / 3871e4);
|
|
@@ -503,7 +503,7 @@ function houseOfLongitude(lon, cusps) {
|
|
|
503
503
|
return 1;
|
|
504
504
|
}
|
|
505
505
|
|
|
506
|
-
//
|
|
506
|
+
// node_modules/.pnpm/@astro-platform+ephemeris@file+vendor+ephemeris/node_modules/@astro-platform/ephemeris/src/aspects.ts
|
|
507
507
|
var ASPECT_TYPES = [
|
|
508
508
|
{ type: "conjunction", nameFr: "Conjonction", angle: 0, orb: 8, tone: "n", symbol: "\u260C" },
|
|
509
509
|
{ type: "sextile", nameFr: "Sextile", angle: 60, orb: 6, tone: "h", symbol: "\u26B9" },
|
|
@@ -560,7 +560,7 @@ function calculateAspects(pos) {
|
|
|
560
560
|
return out.sort((a, b) => a.orb - b.orb);
|
|
561
561
|
}
|
|
562
562
|
|
|
563
|
-
//
|
|
563
|
+
// node_modules/.pnpm/@astro-platform+ephemeris@file+vendor+ephemeris/node_modules/@astro-platform/ephemeris/src/lots.ts
|
|
564
564
|
function partOfFortune(sunLon, moonLon, asc, isNight) {
|
|
565
565
|
return isNight ? n360(asc + sunLon - moonLon) : n360(asc + moonLon - sunLon);
|
|
566
566
|
}
|
|
@@ -579,7 +579,7 @@ function computeHermeticLots(asc, planets, isNight, fortune) {
|
|
|
579
579
|
};
|
|
580
580
|
}
|
|
581
581
|
|
|
582
|
-
//
|
|
582
|
+
// node_modules/.pnpm/@astro-platform+ephemeris@file+vendor+ephemeris/node_modules/@astro-platform/ephemeris/src/astro-engine.ts
|
|
583
583
|
function deltaTSeconds(JD) {
|
|
584
584
|
const year = 2e3 + (JD - 2451545) / 365.25;
|
|
585
585
|
const longTerm = (y) => {
|
|
@@ -805,7 +805,7 @@ function computeCurrentSky(lat, lng, opts = {}) {
|
|
|
805
805
|
return computeChartFromJD(JD, lat, lng, opts);
|
|
806
806
|
}
|
|
807
807
|
|
|
808
|
-
//
|
|
808
|
+
// node_modules/.pnpm/@astro-platform+ephemeris@file+vendor+ephemeris/node_modules/@astro-platform/ephemeris/src/swiss-engine.ts
|
|
809
809
|
import { createRequire } from "module";
|
|
810
810
|
import { join } from "path";
|
|
811
811
|
var _swe = null;
|
|
@@ -1229,7 +1229,7 @@ function findNextLunarEclipseSwiss(jdStart, backward = false) {
|
|
|
1229
1229
|
}
|
|
1230
1230
|
}
|
|
1231
1231
|
|
|
1232
|
-
//
|
|
1232
|
+
// node_modules/.pnpm/@astro-platform+ephemeris@file+vendor+ephemeris/node_modules/@astro-platform/ephemeris/src/engine-router.ts
|
|
1233
1233
|
var _activeEngine = null;
|
|
1234
1234
|
var _resolutionLog = null;
|
|
1235
1235
|
function resolveEngine() {
|
|
@@ -1306,7 +1306,7 @@ function computeAstrocartography(JD, opts = {}) {
|
|
|
1306
1306
|
return { jd: JD, gst, bodies, lines, parans };
|
|
1307
1307
|
}
|
|
1308
1308
|
|
|
1309
|
-
//
|
|
1309
|
+
// node_modules/.pnpm/@astro-platform+ephemeris@file+vendor+ephemeris/node_modules/@astro-platform/ephemeris/src/types.ts
|
|
1310
1310
|
var CityNotFoundError = class extends Error {
|
|
1311
1311
|
constructor(query, suggestions = []) {
|
|
1312
1312
|
super(
|
|
@@ -1320,7 +1320,7 @@ var CityNotFoundError = class extends Error {
|
|
|
1320
1320
|
suggestions;
|
|
1321
1321
|
};
|
|
1322
1322
|
|
|
1323
|
-
//
|
|
1323
|
+
// node_modules/.pnpm/@astro-platform+ephemeris@file+vendor+ephemeris/node_modules/@astro-platform/ephemeris/src/planting-calendar.ts
|
|
1324
1324
|
function R2(a, b) {
|
|
1325
1325
|
const out = [];
|
|
1326
1326
|
let m = a;
|
|
@@ -1417,7 +1417,7 @@ var FLOWERS = [
|
|
|
1417
1417
|
];
|
|
1418
1418
|
var PLANTING_CALENDAR = [...VEGETABLES, ...FLOWERS];
|
|
1419
1419
|
|
|
1420
|
-
//
|
|
1420
|
+
// node_modules/.pnpm/@astro-platform+ephemeris@file+vendor+ephemeris/node_modules/@astro-platform/ephemeris/src/dignities.ts
|
|
1421
1421
|
var TABLE = {
|
|
1422
1422
|
sun: { domicile: [4], exaltation: [0], detriment: [10], fall: [6] },
|
|
1423
1423
|
moon: { domicile: [3], exaltation: [1], detriment: [9], fall: [7] },
|
|
@@ -1448,7 +1448,7 @@ function essentialDignity(planetKey, signIdx) {
|
|
|
1448
1448
|
return null;
|
|
1449
1449
|
}
|
|
1450
1450
|
|
|
1451
|
-
//
|
|
1451
|
+
// node_modules/.pnpm/@astro-platform+ephemeris@file+vendor+ephemeris/node_modules/@astro-platform/ephemeris/src/natal-weight.ts
|
|
1452
1452
|
var TRADITIONAL_RULER = [
|
|
1453
1453
|
"mars",
|
|
1454
1454
|
// 0 Bélier
|
|
@@ -1575,7 +1575,7 @@ function computeNatalWeight(chart) {
|
|
|
1575
1575
|
return { byPlanet, top, chartRuler };
|
|
1576
1576
|
}
|
|
1577
1577
|
|
|
1578
|
-
//
|
|
1578
|
+
// node_modules/.pnpm/@astro-platform+ephemeris@file+vendor+ephemeris/node_modules/@astro-platform/ephemeris/src/natal-patterns.ts
|
|
1579
1579
|
var MAJORS = ["sun", "moon", "mercury", "venus", "mars", "jupiter", "saturn", "uranus", "neptune", "pluto"];
|
|
1580
1580
|
var ORB = {
|
|
1581
1581
|
grandTrine: 8,
|
|
@@ -1704,7 +1704,7 @@ function detectNatalPatterns(input) {
|
|
|
1704
1704
|
return out;
|
|
1705
1705
|
}
|
|
1706
1706
|
|
|
1707
|
-
//
|
|
1707
|
+
// node_modules/.pnpm/@astro-platform+ephemeris@file+vendor+ephemeris/node_modules/@astro-platform/ephemeris/src/planetary-ages.ts
|
|
1708
1708
|
var AGE_BANDS = [
|
|
1709
1709
|
{ maxAge: 7, planetKey: "moon", fr: "l'enfance, le lien affectif et le besoin de s\xE9curit\xE9", en: "childhood, emotional bonding and the need for security" },
|
|
1710
1710
|
{ maxAge: 14, planetKey: "mercury", fr: "l'apprentissage, la curiosit\xE9 et les premiers \xE9changes", en: "learning, curiosity and first exchanges" },
|
|
@@ -1715,7 +1715,7 @@ var AGE_BANDS = [
|
|
|
1715
1715
|
{ maxAge: Number.POSITIVE_INFINITY, planetKey: "saturn", fr: "le bilan, la sagesse et l'essentiel", en: "reckoning, wisdom and the essential" }
|
|
1716
1716
|
];
|
|
1717
1717
|
|
|
1718
|
-
//
|
|
1718
|
+
// node_modules/.pnpm/@astro-platform+ephemeris@file+vendor+ephemeris/node_modules/@astro-platform/ephemeris/src/birth-lunation.ts
|
|
1719
1719
|
var LUNATION_TYPES = [
|
|
1720
1720
|
{ key: "new", nameFr: "Nouvelle Lune", nameEn: "New Moon", glossFr: "instinct, \xE9lan spontan\xE9, commencement subjectif", glossEn: "instinct, spontaneous drive, subjective beginnings" },
|
|
1721
1721
|
{ key: "crescent", nameFr: "Croissant", nameEn: "Crescent", glossFr: "l'effort d'\xE9merger, s'arracher au pass\xE9, volont\xE9 d'avancer", glossEn: "the effort to emerge, breaking from the past, will to advance" },
|
|
@@ -1733,7 +1733,7 @@ function lunationType(sunLon, moonLon) {
|
|
|
1733
1733
|
return LUNATION_TYPES[idx];
|
|
1734
1734
|
}
|
|
1735
1735
|
|
|
1736
|
-
//
|
|
1736
|
+
// node_modules/.pnpm/@astro-platform+ephemeris@file+vendor+ephemeris/node_modules/@astro-platform/ephemeris/src/time-utc.service.ts
|
|
1737
1737
|
import { DateTime } from "luxon";
|
|
1738
1738
|
var TimezoneError = class extends Error {
|
|
1739
1739
|
constructor(message, code, details) {
|
|
@@ -1868,7 +1868,7 @@ function buildResult(dt, resolution) {
|
|
|
1868
1868
|
};
|
|
1869
1869
|
}
|
|
1870
1870
|
|
|
1871
|
-
//
|
|
1871
|
+
// node_modules/.pnpm/@astro-platform+ephemeris@file+vendor+ephemeris/node_modules/@astro-platform/ephemeris/src/service.ts
|
|
1872
1872
|
import { createHash } from "crypto";
|
|
1873
1873
|
var _redis = null;
|
|
1874
1874
|
async function getRedis() {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cosmosos/mcp-ephemeris",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Serveur MCP exposant des positions planétaires calculées côté serveur (Swiss Ephemeris) — validées contre JPL Horizons (NASA). Branchez n'importe quel LLM/agent au vrai ciel.",
|
|
6
6
|
"keywords": [
|
|
@@ -17,6 +17,13 @@
|
|
|
17
17
|
],
|
|
18
18
|
"license": "PolyForm-Noncommercial-1.0.0",
|
|
19
19
|
"homepage": "https://llmastro.com/notre-moteur",
|
|
20
|
+
"repository": {
|
|
21
|
+
"type": "git",
|
|
22
|
+
"url": "git+https://github.com/kairosastro-sketch/mcp-ephemeris.git"
|
|
23
|
+
},
|
|
24
|
+
"bugs": {
|
|
25
|
+
"url": "https://github.com/kairosastro-sketch/mcp-ephemeris/issues"
|
|
26
|
+
},
|
|
20
27
|
"bin": {
|
|
21
28
|
"cosmosos-mcp-ephemeris": "dist/index.js"
|
|
22
29
|
},
|
|
@@ -45,12 +52,11 @@
|
|
|
45
52
|
"swisseph": "^0.5.17"
|
|
46
53
|
},
|
|
47
54
|
"devDependencies": {
|
|
48
|
-
"@
|
|
55
|
+
"@astro-platform/ephemeris": "file:vendor/ephemeris",
|
|
49
56
|
"@types/node": "^25.9.3",
|
|
50
57
|
"tsup": "^8.5.0",
|
|
51
58
|
"tsx": "^4.19.0",
|
|
52
|
-
"typescript": "^6.0.3"
|
|
53
|
-
"@astro-platform/ephemeris": "0.1.0"
|
|
59
|
+
"typescript": "^6.0.3"
|
|
54
60
|
},
|
|
55
61
|
"scripts": {
|
|
56
62
|
"build": "tsup",
|