{"_id":"@cosmosos/mcp-ephemeris","_rev":"5-f48918bf0752cc4183b9a0fb7dc40426","name":"@cosmosos/mcp-ephemeris","dist-tags":{"latest":"0.2.3"},"versions":{"0.1.0":{"name":"@cosmosos/mcp-ephemeris","version":"0.1.0","keywords":["mcp","model-context-protocol","astrology","ephemeris","swiss-ephemeris","astronomy","natal-chart","transits","llm","claude"],"license":"PolyForm-Noncommercial-1.0.0","_id":"@cosmosos/mcp-ephemeris@0.1.0","maintainers":[{"name":"kairosltd","email":"kairosastraai@gmail.com"}],"homepage":"https://llmastro.com/notre-moteur","bin":{"cosmosos-mcp-ephemeris":"dist/index.js"},"dist":{"shasum":"bc4aceb802771f3c2d910a8dfc1f3fbe472de163","tarball":"https://registry.npmjs.org/@cosmosos/mcp-ephemeris/-/mcp-ephemeris-0.1.0.tgz","fileCount":4,"integrity":"sha512-ynFG8gwRU+Q/lMW4ZRqWZJbKXJ/BMbv7c5bWJnscMmEHArClUUeH0nJaUkIwkjIQwHpHq5phi6ipnL605FPtRw==","signatures":[{"sig":"MEQCIGCRn3mfLvNmm6c6PyDFXdJsOAvS6a3hQlz9/GYs4o/cAiAHfouHEMi7NEldPlDpeSIXuOjXHX0uDLNH+2EUyk8oSg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":75276},"main":"dist/index.js","type":"module","_from":"file:cosmosos-mcp-ephemeris-0.1.0.tgz","engines":{"node":">=20"},"exports":{".":"./dist/index.js"},"scripts":{"dev":"tsx watch src/index.ts","build":"tsup","start":"tsx src/index.ts"},"_npmUser":{"name":"kairosltd","email":"kairosastraai@gmail.com"},"_resolved":"C:\\Users\\AZD\\AppData\\Local\\Temp\\934f9c88286fe91573d985955d08a866\\cosmosos-mcp-ephemeris-0.1.0.tgz","_integrity":"sha512-ynFG8gwRU+Q/lMW4ZRqWZJbKXJ/BMbv7c5bWJnscMmEHArClUUeH0nJaUkIwkjIQwHpHq5phi6ipnL605FPtRw==","_npmVersion":"11.12.1","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.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"zod":"^3.23.8","luxon":"^3.7.2","@modelcontextprotocol/sdk":"^1.12.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","tsup":"^8.5.0","typescript":"^6.0.3","@types/node":"^25.9.3","@astro-platform/ephemeris":"0.1.0","@modelcontextprotocol/inspector":"^0.14.0"},"optionalDependencies":{"redis":"^6.0.0","swisseph":"^0.5.17"},"_npmOperationalInternal":{"tmp":"tmp/mcp-ephemeris_0.1.0_1784621113018_0.3562913221230992","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@cosmosos/mcp-ephemeris","version":"0.2.0","keywords":["mcp","model-context-protocol","astrology","ephemeris","swiss-ephemeris","astronomy","natal-chart","transits","llm","claude"],"license":"PolyForm-Noncommercial-1.0.0","_id":"@cosmosos/mcp-ephemeris@0.2.0","maintainers":[{"name":"kairosltd","email":"kairosastraai@gmail.com"}],"homepage":"https://llmastro.com/notre-moteur","bin":{"cosmosos-mcp-ephemeris":"dist/index.js"},"dist":{"shasum":"6a9687bd30aa8cdf210fbb58c48a09bd9d4dd8cf","tarball":"https://registry.npmjs.org/@cosmosos/mcp-ephemeris/-/mcp-ephemeris-0.2.0.tgz","fileCount":4,"integrity":"sha512-436GP5RapipvrVJbIfWROGdrj9EjuQDgXI7cP9XXEIXVNgdnQTIzKePddcKb1429iqThomUG8l4GSTBxZdpfqA==","signatures":[{"sig":"MEYCIQDs0KX8bMkiqxzhyyDMeJ0eHmV712mTjsLxrFjK9Lyb5gIhANvMPoRxgfbK0SJZrdcuV7bWBdJDHAds1qfHpRwUvWbh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":127077},"main":"dist/index.js","type":"module","_from":"file:cosmosos-mcp-ephemeris-0.2.0.tgz","engines":{"node":">=20"},"exports":{".":"./dist/index.js"},"scripts":{"dev":"tsx watch src/index.ts","build":"tsup","start":"tsx src/index.ts"},"_npmUser":{"name":"kairosltd","email":"kairosastraai@gmail.com"},"_resolved":"C:\\Users\\AZD\\AppData\\Local\\Temp\\15a449b5827a9cbda86f751e56cb0981\\cosmosos-mcp-ephemeris-0.2.0.tgz","_integrity":"sha512-436GP5RapipvrVJbIfWROGdrj9EjuQDgXI7cP9XXEIXVNgdnQTIzKePddcKb1429iqThomUG8l4GSTBxZdpfqA==","_npmVersion":"11.12.1","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.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"zod":"^3.23.8","luxon":"^3.7.2","@modelcontextprotocol/sdk":"^1.12.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","tsup":"^8.5.0","typescript":"^6.0.3","@types/node":"^25.9.3","@astro-platform/ephemeris":"0.1.0","@modelcontextprotocol/inspector":"^0.14.0"},"optionalDependencies":{"redis":"^6.0.0","swisseph":"^0.5.17"},"_npmOperationalInternal":{"tmp":"tmp/mcp-ephemeris_0.2.0_1784629358996_0.4383785924947363","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@cosmosos/mcp-ephemeris","version":"0.2.1","keywords":["mcp","model-context-protocol","astrology","ephemeris","swiss-ephemeris","astronomy","natal-chart","transits","llm","claude"],"license":"PolyForm-Noncommercial-1.0.0","_id":"@cosmosos/mcp-ephemeris@0.2.1","maintainers":[{"name":"kairosltd","email":"kairosastraai@gmail.com"}],"homepage":"https://llmastro.com/notre-moteur","bugs":{"url":"https://github.com/kairosastro-sketch/mcp-ephemeris/issues"},"bin":{"cosmosos-mcp-ephemeris":"dist/index.js"},"dist":{"shasum":"852c5193a040d866281c3c1f1dae3ace98dc74f6","tarball":"https://registry.npmjs.org/@cosmosos/mcp-ephemeris/-/mcp-ephemeris-0.2.1.tgz","fileCount":4,"integrity":"sha512-8/uqf5wUOn/5GXowVsxCCJl2g7uTMDgvwez8yB60ShmrA9MdP5GWD1OXbV8gckzWWEVf+fGVdIM3t2B8gKtTow==","signatures":[{"sig":"MEYCIQCEjeiAYAR5hKqXo3rXx+wr4UY93U990Xdqk8JANAXFswIhAPDrI03j8s3ii4pTn1H7Ee6ORxL6sqaInQuTwP0e2rl5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":129270},"main":"dist/index.js","type":"module","_from":"file:cosmosos-mcp-ephemeris-0.2.1.tgz","engines":{"node":">=20"},"exports":{".":"./dist/index.js"},"scripts":{"dev":"tsx watch src/index.ts","build":"tsup","start":"tsx src/index.ts"},"_npmUser":{"name":"kairosltd","email":"kairosastraai@gmail.com"},"_resolved":"C:\\Users\\AZD\\AppData\\Local\\Temp\\1961dadca0de13d49a08cdf93060262c\\cosmosos-mcp-ephemeris-0.2.1.tgz","_integrity":"sha512-8/uqf5wUOn/5GXowVsxCCJl2g7uTMDgvwez8yB60ShmrA9MdP5GWD1OXbV8gckzWWEVf+fGVdIM3t2B8gKtTow==","repository":{"url":"git+https://github.com/kairosastro-sketch/mcp-ephemeris.git","type":"git"},"_npmVersion":"11.12.1","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.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"zod":"^3.23.8","luxon":"^3.7.2","@modelcontextprotocol/sdk":"^1.12.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","tsup":"^8.5.0","typescript":"^6.0.3","@types/node":"^25.9.3","@astro-platform/ephemeris":"file:vendor/ephemeris"},"optionalDependencies":{"redis":"^6.0.0","swisseph":"^0.5.17"},"_npmOperationalInternal":{"tmp":"tmp/mcp-ephemeris_0.2.1_1784637339619_0.8916953374617906","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@cosmosos/mcp-ephemeris","version":"0.2.2","keywords":["mcp","model-context-protocol","astrology","ephemeris","swiss-ephemeris","astronomy","natal-chart","transits","llm","claude"],"license":"PolyForm-Noncommercial-1.0.0","_id":"@cosmosos/mcp-ephemeris@0.2.2","maintainers":[{"name":"kairosltd","email":"kairosastraai@gmail.com"}],"homepage":"https://llmastro.com/notre-moteur","bugs":{"url":"https://github.com/kairosastro-sketch/mcp-ephemeris/issues"},"bin":{"cosmosos-mcp-ephemeris":"dist/index.js"},"dist":{"shasum":"6b94f3281183825ca158cb4b7191d9d87a6aaa5e","tarball":"https://registry.npmjs.org/@cosmosos/mcp-ephemeris/-/mcp-ephemeris-0.2.2.tgz","fileCount":4,"integrity":"sha512-YcGe9pSISlZniaSVU3YYIVtSoDy6XYBsBCk+/9vmYhvkyZl5Q14DyJ2j8v3YzE+R+3lvEQqDCsChCryWunAp7g==","signatures":[{"sig":"MEUCIQCxsvO5wU/DJSnk8pJFECiy+osnxUVs9WVtgZnK6dORRQIgWYtXcsslL9zcG2I3J7lxsE2ZZRFmWNENgmHm5CtoTic=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":137815},"main":"dist/index.js","type":"module","_from":"file:cosmosos-mcp-ephemeris-0.2.2.tgz","engines":{"node":">=20"},"exports":{".":"./dist/index.js"},"mcpName":"io.github.kairosastro-sketch/mcp-ephemeris","scripts":{"dev":"tsx watch src/index.ts","build":"tsup","start":"tsx src/index.ts"},"_npmUser":{"name":"kairosltd","email":"kairosastraai@gmail.com"},"_resolved":"C:\\Users\\AZD\\AppData\\Local\\Temp\\511d0e0db9dd5b2d2553ce52233cdc05\\cosmosos-mcp-ephemeris-0.2.2.tgz","_integrity":"sha512-YcGe9pSISlZniaSVU3YYIVtSoDy6XYBsBCk+/9vmYhvkyZl5Q14DyJ2j8v3YzE+R+3lvEQqDCsChCryWunAp7g==","repository":{"url":"git+https://github.com/kairosastro-sketch/mcp-ephemeris.git","type":"git"},"_npmVersion":"11.12.1","description":"MCP server exposing server-computed planetary positions (Swiss Ephemeris), validated against JPL Horizons (NASA). Plug any LLM/agent into the real sky — 19 astrology tools, never hallucinated.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"zod":"^3.23.8","luxon":"^3.7.2","@modelcontextprotocol/sdk":"^1.12.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","tsup":"^8.5.0","typescript":"^6.0.3","@types/node":"^25.9.3","@astro-platform/ephemeris":"file:vendor/ephemeris"},"optionalDependencies":{"redis":"^6.0.0","swisseph":"^0.5.17"},"_npmOperationalInternal":{"tmp":"tmp/mcp-ephemeris_0.2.2_1784643468860_0.50954690619584","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@cosmosos/mcp-ephemeris","version":"0.2.3","mcpName":"io.github.kairosastro-sketch/mcp-ephemeris","type":"module","description":"MCP server exposing server-computed planetary positions (Swiss Ephemeris), validated against JPL Horizons (NASA). Plug any LLM/agent into the real sky: 19 astrology tools, never hallucinated.","keywords":["mcp","model-context-protocol","astrology","ephemeris","swiss-ephemeris","astronomy","natal-chart","transits","llm","claude"],"license":"PolyForm-Noncommercial-1.0.0","homepage":"https://llmastro.com/notre-moteur","repository":{"type":"git","url":"git+https://github.com/kairosastro-sketch/mcp-ephemeris.git"},"bugs":{"url":"https://github.com/kairosastro-sketch/mcp-ephemeris/issues"},"bin":{"cosmosos-mcp-ephemeris":"dist/index.js"},"main":"dist/index.js","exports":{".":"./dist/index.js"},"engines":{"node":">=20"},"publishConfig":{"access":"public"},"dependencies":{"@modelcontextprotocol/sdk":"^1.12.0","luxon":"^3.7.2","zod":"^3.23.8"},"optionalDependencies":{"redis":"^6.0.0","swisseph":"^0.5.17"},"devDependencies":{"@astro-platform/ephemeris":"file:vendor/ephemeris","@types/node":"^25.9.3","tsup":"^8.5.0","tsx":"^4.19.0","typescript":"^6.0.3"},"scripts":{"build":"tsup","dev":"tsx watch src/index.ts","start":"tsx src/index.ts"},"_id":"@cosmosos/mcp-ephemeris@0.2.3","_integrity":"sha512-iWzzehQXSFrHKqQSbbr0lSjxRAyG2F2jc9oZO129udKWIW5q6MdNKuU/l73IfvXEfG1WXVoaQbRmmZC+X6ZW6A==","_resolved":"C:\\Users\\AZD\\AppData\\Local\\Temp\\93407371276b3e58f34436d3a94d9ffc\\cosmosos-mcp-ephemeris-0.2.3.tgz","_from":"file:cosmosos-mcp-ephemeris-0.2.3.tgz","_nodeVersion":"24.15.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-iWzzehQXSFrHKqQSbbr0lSjxRAyG2F2jc9oZO129udKWIW5q6MdNKuU/l73IfvXEfG1WXVoaQbRmmZC+X6ZW6A==","shasum":"ec56e65f5acc092b44a139d21dfbef2dbc7a84c0","tarball":"https://registry.npmjs.org/@cosmosos/mcp-ephemeris/-/mcp-ephemeris-0.2.3.tgz","fileCount":4,"unpackedSize":129583,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIEpMHQtHQwMuPIR1A0abv6lLQbTQ3bh4I3xtNgl87gF2AiAjQfXkSxsjin1V+7yxDt1wXLvLgmUoMrcV3vA8nwu2Ww=="}]},"_npmUser":{"name":"kairosltd","email":"kairosastraai@gmail.com"},"directories":{},"maintainers":[{"name":"kairosltd","email":"kairosastraai@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp-ephemeris_0.2.3_1784644282214_0.9579211352324863"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-21T08:05:12.825Z","modified":"2026-07-21T14:31:22.555Z","0.1.0":"2026-07-21T08:05:13.148Z","0.2.0":"2026-07-21T10:22:39.139Z","0.2.1":"2026-07-21T12:35:39.744Z","0.2.2":"2026-07-21T14:17:49.059Z","0.2.3":"2026-07-21T14:31:22.364Z"},"bugs":{"url":"https://github.com/kairosastro-sketch/mcp-ephemeris/issues"},"license":"PolyForm-Noncommercial-1.0.0","homepage":"https://llmastro.com/notre-moteur","keywords":["mcp","model-context-protocol","astrology","ephemeris","swiss-ephemeris","astronomy","natal-chart","transits","llm","claude"],"repository":{"type":"git","url":"git+https://github.com/kairosastro-sketch/mcp-ephemeris.git"},"description":"MCP server exposing server-computed planetary positions (Swiss Ephemeris), validated against JPL Horizons (NASA). Plug any LLM/agent into the real sky: 19 astrology tools, never hallucinated.","maintainers":[{"name":"kairosltd","email":"kairosastraai@gmail.com"}],"readme":"# @cosmosos/mcp-ephemeris\r\n\r\n**The real sky, for your AI.** An [MCP](https://modelcontextprotocol.io) server\r\nthat gives any assistant (Claude, Cursor, agents) **computed planetary\r\npositions** — never guessed — powered by the\r\n[Swiss Ephemeris](https://www.astro.com/swisseph/) engine, and **validated\r\nagainst JPL Horizons (NASA)** to under one arcsecond.\r\n\r\n> **Cardinal rule: the LLM never computes.** This server is a facade over an\r\n> ephemeris engine. The model interprets; the sky is a fact.\r\n\r\n*(Version française : <https://llmastro.com/notre-moteur>)*\r\n\r\n## Quick start (Claude Desktop)\r\n\r\nOpen **Settings → Developer → Edit Config**, then add:\r\n\r\n```json\r\n{\r\n  \"mcpServers\": {\r\n    \"llmastro\": {\r\n      \"command\": \"npx\",\r\n      \"args\": [\"-y\", \"@cosmosos/mcp-ephemeris\"]\r\n    }\r\n  }\r\n}\r\n```\r\n\r\nFully quit Claude Desktop (system tray) and relaunch it. Then ask:\r\n*\"What's the moon phase today?\"* — Claude calls the server and answers from\r\ngenuinely computed positions.\r\n\r\n**Cursor / Windsurf / others**: add the same `llmastro` entry\r\n(`command: npx`, `args: [\"-y\", \"@cosmosos/mcp-ephemeris\"]`) to your client's MCP\r\nconfiguration.\r\n\r\n## Tools exposed\r\n\r\n**19 tools**, all backed by the same server-side computed engine.\r\n\r\n### Positions & sky\r\n| Tool | Input | Output |\r\n|---|---|---|\r\n| `get_planet_positions` | `datetime` (ISO UTC) | ecliptic positions of all bodies (sign, degree, retro) |\r\n| `get_moon_phase` | `datetime` (ISO UTC) | moon phase, illumination %, description |\r\n| `get_current_sky` | `latitude`, `longitude` | the sky right now (current transits) for a place |\r\n| `get_aspects` | `datetime` (ISO UTC) | grid of major + minor aspects between bodies |\r\n\r\n### Natal chart & relationships\r\n| Tool | Input | Output |\r\n|---|---|---|\r\n| `get_natal_chart` | birth + `zodiac` (tropical/sidereal), `houseSystem` (7 systems) | full chart: houses, aspects, ASC/MC, moon phase, Hermetic Lots |\r\n| `get_transits` | birth + optional `datetime` | transit→natal aspects, sorted by orb |\r\n| `get_synastry` | two births | inter-chart aspects + harmony/tension summary |\r\n| `get_composite_chart` | two births | midpoint composite chart |\r\n| `get_secondary_progressions` | birth + `targetDate` | progressed positions (\"a day for a year\") |\r\n| `get_solar_return` | birth + `year` (+ optional place) | instant + chart of the solar return |\r\n| `get_lunar_return` | birth + optional `after` | instant + chart of the next lunar return |\r\n\r\n### Celestial events\r\n| Tool | Input | Output |\r\n|---|---|---|\r\n| `get_ingresses` | `body`, `start`, `end` | sign-change dates (retrograde-robust) |\r\n| `get_retrograde_windows` | `body`, `start`, `end` | retrograde/direct stations over the range |\r\n| `get_eclipse_details` | `datetime`, `kind` | magnitude, obscuration, Saros of a known eclipse *(swisseph)* |\r\n| `get_next_eclipse` | `from`, `kind`, optional `backward` | next/previous eclipse: maximum, type, contacts *(swisseph)* |\r\n\r\n### Astrocartography, numerology, authority\r\n| Tool | Input | Output |\r\n|---|---|---|\r\n| `get_astrocartography` | `datetime` (ISO UTC) | planetary MC/IC lines + parans (crossings) |\r\n| `get_life_path` | `date` (YYYY-MM-DD) | life-path number (numerology) |\r\n| `get_engine_diagnostic` | — | active engine, native addon load status, real precision |\r\n| `validate_against_horizons` | `datetime`, optional `bodies` | delta of our positions vs JPL Horizons (NASA) in arcseconds — network required |\r\n\r\n*(swisseph)* = requires the native Swiss Ephemeris addon; returns `null` on the AstraCore fallback.\r\n\r\n## Precision\r\n\r\nUnder [Swiss Ephemeris](https://www.astro.com/swisseph/), positions match the\r\nworld reference **JPL Horizons (NASA)** to under one arcsecond (measured\r\n2026-07-19):\r\n\r\n| Body | Difference vs NASA |\r\n|---|---|\r\n| Sun | 0.2″ |\r\n| Moon | 1.5″ |\r\n| Jupiter | 0.1″ |\r\n| Pluto | 0.4″ |\r\n\r\nCheck it yourself with the `validate_against_horizons` tool.\r\n\r\n## Two engines\r\n\r\nComputation is routed by the `ASTRO_ENGINE` variable:\r\n\r\n- **`swisseph`** (default) — Swiss Ephemeris, native addon, sub-arcsecond\r\n  precision. Compiles automatically wherever a C++ build chain is present\r\n  (Linux, macOS, most servers).\r\n- **`astracore`** — in-house pure-TypeScript engine (VSOP/Meeus), **no native\r\n  binary**. Used as an automatic fallback when `swisseph` couldn't be compiled\r\n  (common on Windows). Sun and Moon stay accurate; outer planets drift by a few\r\n  arcminutes.\r\n\r\nTo force an engine: `ASTRO_ENGINE=swisseph` or `ASTRO_ENGINE=astracore`.\r\n\r\n## Privacy\r\n\r\nThe server runs **on your machine**: your birth data is sent nowhere. Only\r\n`validate_against_horizons` makes an outbound request (to NASA's public API).\r\n\r\n## Requirements\r\n\r\n- Node.js ≥ 20.\r\n- For maximum precision (`swisseph`): a C++ build chain (`python3`, `make`, a\r\n  compiler) on the machine. Otherwise, automatic fallback to `astracore`, with\r\n  no configuration.\r\n\r\n## About\r\n\r\nPowered by the astrology engine of [Llmastro](https://llmastro.com). Learn more\r\nabout the precision and architecture: <https://llmastro.com/notre-moteur>.\r\n\r\n## License\r\n\r\n**Free for non-commercial use** (personal, research, education, non-profit\r\norganizations) — under the\r\n[PolyForm Noncommercial 1.0.0](./LICENSE) license.\r\n\r\n**Commercial / professional use: a paid license is required.** To obtain one,\r\ncontact KAIROSAST LTD via <https://llmastro.com/contact>.\r\n\r\nNote: the optional `swisseph` dependency (Swiss Ephemeris, Astrodienst) has its\r\nown license (AGPL or a commercial Swiss Ephemeris license) and is not covered by\r\nthis one. Professional use must comply with it separately.\r\n\r\n## Development\r\n\r\nThis repository is **self-contained**: the ephemeris engine is vendored in\r\n`vendor/ephemeris/` (source), and the build inlines it into `dist/` via\r\n[`tsup`](https://tsup.egoist.dev/).\r\n\r\n```bash\r\npnpm install          # or npm install\r\npnpm build            # bundles dist/index.js (engine inlined)\r\npnpm start            # runs the MCP server (stdio) locally\r\n```\r\n\r\n- Default engine: `swisseph` (sub-arcsecond precision) if the native addon\r\n  compiles, otherwise automatic fallback to `astracore` (pure TypeScript, no\r\n  binary). Force via `ASTRO_ENGINE=swisseph|astracore`.\r\n- The vendored engine is a snapshot of `@astro-platform/ephemeris` (Llmastro),\r\n  re-synced manually.\r\n","readmeFilename":"README.md"}