trackmcp
Back to directory
openephemeris

openephemeris-MCP

View on GitHub

MCP server and API examples for OpenEphemeris — NASA JPL ephemeris API for AI agents

3 stars PythonOthers Updated Sep 3, 2026
aiai-agentapiastroastrologyastronomyclaudecursorephemerishuman-designmcpopenephemerismcp-servergemini-cli-extensionjpl-horizonsmodel-context-protocol

Documentation

OpenEphemeris MCP Server

smithery badge
npm version
System Status
License: MIT
Ephemeris: JPL DE440
OpenEphemeris in Claude — ask in plain language, get a real computed chart

Model Context Protocol server for OpenEphemeris — typed astrology tools powered by the NASA JPL DE440 ephemeris. Zero hallucination on planetary positions, dates, and degrees. Covers 1,100 years of astronomical data.

The catalog: 90 bodies and 124 fixed stars — asteroids, trans-Neptunians, Uranian points, computed in one engine

Hosted endpoint: `https://mcp.openephemeris.com/mcp` (Streamable HTTP, MCP 2025-11-25 spec)

Quick Start

The fastest way to connect any MCP-compatible client:

bash
npx -y @smithery/cli install @open-ephemeris/openephemeris --client claude

Or browse the listing and copy connection snippets: **smithery.ai/servers/open-ephemeris/openephemeris**


Connect via AI SDK (Vercel AI SDK)

typescript
import Smithery from "@smithery/api"
import { createMCPClient } from "@ai-sdk/mcp"
import { generateText } from "ai"
import { anthropic } from "@ai-sdk/anthropic"
import { createConnection } from "@smithery/api/mcp"

const smithery = new Smithery()

const conn = await smithery.connections.create("{your-namespace}", {
  mcpUrl: "https://server.smithery.ai/open-ephemeris/openephemeris",
  headers: {
    apiKey: "your-openephemeris-api-key", // get one free at openephemeris.com/dashboard
  },
})

const { transport } = await createConnection({
  client: smithery,
  namespace: "{your-namespace}",
  connectionId: conn.connectionId,
})

const mcpClient = await createMCPClient({ transport })
const tools = await mcpClient.tools()

const { text } = await generateText({
  model: anthropic("claude-sonnet-4-20250514"),
  tools,
  prompt: "Calculate a natal chart for someone born April 15, 1990 at 2:30 PM in Chicago.",
})

await mcpClient.close()

Connect via MCP SDK (TypeScript)

typescript
import Smithery from "@smithery/api"
import { Client } from "@modelcontextprotocol/sdk/client/index.js"
import { createConnection } from "@smithery/api/mcp"

const smithery = new Smithery()

const conn = await smithery.connections.create("{your-namespace}", {
  mcpUrl: "https://server.smithery.ai/open-ephemeris/openephemeris",
  headers: {
    apiKey: "your-openephemeris-api-key",
  },
})

const { transport } = await createConnection({
  client: smithery,
  namespace: "{your-namespace}",
  connectionId: conn.connectionId,
})

const mcpClient = new Client(
  { name: "my-app", version: "1.0.0" },
  { capabilities: {} }
)
await mcpClient.connect(transport)

const { tools } = await mcpClient.listTools()
const result = await mcpClient.callTool({
  name: "ephemeris_natal_chart",
  // A datetime that states a clock time must state its zone: either pass
  // `timezone` alongside the local time, or put a Z/±HH:MM offset on the value.
  arguments: {
    datetime: "1990-04-15T14:30:00",
    timezone: "America/Chicago",
    latitude: 41.8781,
    longitude: -87.6298,
    format: "llm",
  },
})

Connect directly (Streamable HTTP, no Smithery)

typescript
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js"
import { Client } from "@modelcontextprotocol/sdk/client/index.js"

const transport = new StreamableHTTPClientTransport(
  new URL("https://mcp.openephemeris.com/mcp"),
  { requestInit: { headers: { "X-API-Key": "your-openephemeris-api-key" } } }
)

const client = new Client({ name: "my-app", version: "1.0.0" }, { capabilities: {} })
await client.connect(transport)

One-click install (Cursor)

Install in Cursor

> Replace `YOUR_API_KEY_HERE` in Cursor MCP settings with your API key from https://openephemeris.com/dashboard.

Cursor deeplink payload:

json
{
  "command": "npx",
  "args": [
    "-y",
    "@openephemeris/mcp-server"
  ],
  "env": {
    "OPENEPHEMERIS_PROFILE": "dev",
    "OPENEPHEMERIS_BACKEND_URL": "https://api.openephemeris.com",
    "OPENEPHEMERIS_API_KEY": "YOUR_API_KEY_HERE"
  }
}

Manual install (stdio MCP clients)

json
{
  "mcpServers": {
    "openephemeris": {
      "command": "npx",
      "args": ["-y", "@openephemeris/mcp-server"],
      "env": {
        "OPENEPHEMERIS_PROFILE": "dev",
        "OPENEPHEMERIS_BACKEND_URL": "https://api.openephemeris.com",
        "OPENEPHEMERIS_API_KEY": "YOUR_API_KEY_HERE"
      }
    }
  }
}

Platform guide

> Detailed setup walkthroughs for each platform are in SETUP.md.

ClientInstall modeConfig location
SmitheryOne-clicksmithery.ai
CursorOne-click deeplink or manual`~/.cursor/mcp.json`
Claude Desktop (macOS)Manual`~/Library/Application Support/Claude/claude_desktop_config.json`
Claude Desktop (Windows)Manual`%APPDATA%\Claude\claude_desktop_config.json`
WindsurfManual`~/.codeium/windsurf/mcp_config.json` (or legacy `~/.codeium/mcp_config.json`)
Claude Web / ChatGPT / remote clientsHosted URL`https://mcp.openephemeris.com/mcp`

Client install walkthroughs

1. Cursor

    2. Claude Desktop (macOS/Windows)

      3. Windsurf

        Remote-only clients (Claude Web, ChatGPT, etc.)

        The server is hosted at `https://mcp.openephemeris.com/mcp` with full Streamable HTTP support (MCP 2025-11-25 spec). Remote-only clients can connect directly — no bridge/proxy required:

        • Claude Web: Add `https://mcp.openephemeris.com/mcp` as a custom connector URL — leave OAuth Client ID and Secret blank. The server uses OAuth 2.1 + PKCE (Dynamic Client Registration), so Claude handles authentication via a browser popup automatically.
        • Via Smithery: Use the Smithery listing for managed connections with any client
        • Legacy SSE: retired in 3.20.0 — use Streamable HTTP at `/mcp`

        Auth and upgrade behavior in MCP clients

        • Missing/invalid credentials (`401`): tool call fails with a message that points users to sign up/sign in at `https://openephemeris.com/login?signup=true&redirect=%2Fdashboard%3Ftab%3Daccount`, then create/manage keys in `https://openephemeris.com/dashboard?tab=account`.
        • Tier-gated endpoint (`403`): tool call returns an upgrade-required message with `https://openephemeris.com/pay` and dashboard billing/key management link.
        • Monthly quota exhausted (`402`): tool call returns usage quota guidance with both dashboard (`/dashboard?tab=account`) and upgrade (`/pay`) links.
        • Burst/rate limit (`429`): tool call returns retry guidance and links to dashboard usage monitoring.

        What You Can Ask

        code
        "Calculate a natal chart for 1990-04-15 at 2:30 PM in Chicago."
        "Find all Saturn transits to my natal Sun in the next 6 months."
        "Get the current moon phase and void-of-course status."
        "Find the next solar eclipse visible from Tokyo."
        "Find the best time to sign a contract in March — electional window."
        "Generate a Human Design chart for my birth data."
        "What is my Vedic (sidereal) chart?"
        "Calculate my Chinese BaZi (Four Pillars) chart."
        "Show me my Astrocartography power lines — where is my Venus line on the map?"
        "Find all ACG lines within 3° of Paris for my chart."
        "Calculate a synastry chart between two people."
        "Find the next Venus Star Point and my relationship to it."
        "What are the active planetary stations in the next 3 months?"
        "Calculate primary directions for the next 5 years."
        "Find my Firdaria time lord period."
        "What is the sidereal time and delta-T right now?"

        Interactive Charts

        Nine of the tools don't answer with JSON. They open a chart in the conversation — a real one, drawn from the same calculation, that you can click around in.

        This matters more than it sounds. A natal chart returned as JSON is a list of numbers you have to already understand to read. The same chart rendered as a wheel is something you can point at. Click a planet and you get that placement explained; click a house and you get what's in it. The chart stays on screen while you keep talking, and it doesn't cost another credit to keep looking at it.

        These need a host that supports MCP Apps — Claude Desktop is the main one today. In a client without app support the same tools still work; you get the underlying data instead of the picture, so nothing breaks, you just don't get the wheel.

        ToolWhat opensWhat you can clickCredits
        `explore_natal_chart`Natal wheel — planets, houses, aspects, anglesPlanets, houses, aspect lines; recalculate with new settings1
        `explore_bi_wheel`Two charts on one wheel: transits, synastry, progressionsEither wheel's planets, houses, and the aspects between them2
        `explore_human_design`Human Design bodygraph, with a mandala view toggleCenters, gates, channels, planets, variables2
        `explore_human_design_transit`Today's planets laid over a natal bodygraphTransit-activated channels3
        `explore_human_design_connection`Two bodygraphs combined, every shared channel classifiedConnection channels by type3
        `explore_vedic_chart`South Indian Rashi grid — sidereal placements and LagnaEach rashi, for its placements and nakshatras3
        `explore_bazi_chart`Four Pillars (四柱命盘) — Year, Month, Day, HourEach pillar3
        `explore_transit_timeline`Upcoming transit hits in date orderIndividual hits6
        `explore_moon_phase`Moon dial — illumination, phase, sign, void-of-courseRecalculate for another moment3

        Ask for these the way you'd ask a person: *"show me my chart"*, *"put today's transits over my Human Design"*, *"what's the moon doing right now"*. The model picks the app.

        Two things worth knowing. The chart wheel and bi-wheel accept a click on an aspect line, not just on the two planets it joins — so "why does this line matter" is one click rather than a paragraph of setup. And the bodygraph's mandala toggle rearranges the whole chart into concentric rings without another API call, so switching views is free.

        Screenshots of each are on the way.

        Tools at a Glance

        CategoryToolTier
        Natal chart`ephemeris_natal_chart`Explorer
        Transit forecast`ephemeris_transits`Explorer
        Transit chart snapshot`ephemeris_natal_transits`Explorer
        Moon phase / VOC`ephemeris_moon_phase`Explorer
        Eclipse next visible`ephemeris_next_eclipse`Explorer
        Electional window`ephemeris_electional`Developer
        Moment analysis`electional_moment_analysis`Developer
        Station tracker`electional_station_tracker`Developer
        Aspect search`electional_aspect_search`Developer
        Human Design chart`human_design_chart`Explorer
        HD composite`human_design_composite`Developer
        HD transit overlay`explore_human_design_transit`Developer
        HD connection (synastry)`explore_human_design_connection`Developer
        HD penta`human_design_penta`Explorer
        HD return / opposition`hd_planetary_return`, `hd_opposition`Explorer
        Vedic chart`vedic_chart`Explorer
        BaZi (Chinese)`chinese_bazi`Explorer
        Synastry`ephemeris_synastry`Developer
        Composite chart`ephemeris_composite`Developer
        Relocation chart`ephemeris_relocation`Developer
        Progressed chart`ephemeris_progressed_chart`Explorer
        Solar return`ephemeris_solar_return`Developer
        Lunar return`ephemeris_lunar_return`Developer
        Planetary return`ephemeris_planetary_return`Developer
        Astrocartography lines`acg_power_lines`Developer
        ACG hits at location`acg_hits`Scale
        Venus Star Points`venus_star_points` + 4 moreExplorer
        Chart wheel image`ephemeris_chart_wheel`Developer
        Bi-wheel image`ephemeris_bi_wheel`Developer
        Dignities / Midpoints / Fixed stars`ephemeris_dignities`, `ephemeris_midpoints`, `ephemeris_fixed_stars`Explorer

        Tooling Model

        • Typed tools are preferred for common workflows (natal, transits, moon phase, eclipse, synastry, relocation, electional, Human Design).
        • Generic tools: `dev_list_allowed` returns all currently allowlisted operations; `dev_read_api` invokes allowlisted GET (read) operations and `dev_write_api` invokes allowlisted POST/PUT/PATCH/DELETE (write/compute) operations, each by `method + path`. Read and write are kept as separate tools so a safe read surface never shares a tool with state-changing writes.
        • Security model: default-deny with explicit allowlist in `config/dev-allowlist.json`.
        • Deny prefixes block sensitive route families (`/auth`, `/billing`, `/admin`, etc.).

        `dev_read_api` / `dev_write_api` input

        ParameterTypeRequiredDescription
        `method``dev_read_api`: `GET` · `dev_write_api`: `POST\PUT\PATCH\DELETE`NoHTTP method (defaults to the tool's natural method)
        `path``string`YesAbsolute API path, e.g. `/ephemeris/natal-chart`
        `query``object`NoQuery parameters
        `body``object`NoJSON body for non-GET requests
        `preset``full\simple`NoConvenience mapping to `query.preset`
        `format``json\llm\llm_v2`NoConvenience mapping to `query.format` (`llm_v2` normalizes to `llm`)
        `output_mode``full\simple\llm\llm_v2`NoLegacy compatibility field

        Environment Variables

        VariableRequiredDescription
        `OPENEPHEMERIS_API_KEY`Yes (unless service key/JWT used)API key for OpenEphemeris
        `ASTROMCP_API_KEY`NoLegacy alias for `OPENEPHEMERIS_API_KEY` (checked as fallback)
        `OPENEPHEMERIS_BACKEND_URL`NoDefaults to `https://api.openephemeris.com`
        `OPENEPHEMERIS_PROFILE`No`dev` by default
        `OPENEPHEMERIS_TOOLS`No`core` (default) advertises a focused everyday tool set; `full` advertises every tool. See Tool surface
        `OPENEPHEMERIS_TELEMETRY`NoSet to `0`/`false`/`off` to disable anonymous usage reporting. `DO_NOT_TRACK=1` also works. See Telemetry
        `OPENEPHEMERIS_SERVICE_KEY`NoInternal service auth
        `OPENEPHEMERIS_JWT`NoBearer token auth
        `OPENEPHEMERIS_DEV_ALLOWLIST_PATH`NoOverride allowlist file path
        `MCP_USER_ID`NoPer-instance user identifier

        Legacy aliases (`ASTROMCP_*`, `MERIDIAN_*`) remain supported.

        Telemetry

        This server reports anonymous usage so we know which tools are worth maintaining and which are broken. Three events: session start, tool call, tool error.

        What is sent: the tool name, how long it took, error status, which MCP client connected (e.g. Claude Desktop, Cursor) and its version, the server version, and a one-way SHA-256 prefix of your API key used as a stable anonymous id.

        What is never sent: your API key or token, birth data, dates, names, coordinates, tool arguments, or tool results. No request or response bodies, ever.

        To turn it off — either works, checked before anything is sent:

        bash
        OPENEPHEMERIS_TELEMETRY=0
        # or the cross-tool standard
        DO_NOT_TRACK=1

        Tool surface

        By default the server advertises a focused core set of everyday tools rather than the entire catalog. Large tool lists cost context and make model tool-selection worse, so the default is tuned for real conversations: one interactive app per tradition, the primary data tool per domain, geocoding, and the allowlist-gated generic proxy.

        Nothing is removed. The surface is a filter on `tools/list` only — every tool stays registered and stays callable by name. If you know the tool you want, call it and it works, listed or not.

        To advertise the full catalog:

        bash
        OPENEPHEMERIS_TOOLS=full npx -y @openephemeris/mcp-server

        On the remote HTTP server, append `?profile=full` to the connector URL (or send `X-OE-Tool-Surface: full`):

        code
        https://mcp.openephemeris.com/mcp?profile=full

        Toolsets by tradition

        If you work in one tradition, ask for it by name instead of taking the general-purpose default. You get that tradition in full — including the long-tail tools the core set leaves out — for a fraction of the context.

        bash
        OPENEPHEMERIS_TOOLS=hd npx -y @openephemeris/mcp-server        # Human Design
        OPENEPHEMERIS_TOOLS=astrology,moon npx -y @openephemeris/mcp-server
        code
        https://mcp.openephemeris.com/mcp?profile=hd,bazi
        ToolsetWhat it coversToolsApprox. tokens
        `astrology`Natal, transits, synastry, progressions, returns, relocation, dignities, midpoints, lots, fixed stars, composites3215,800
        `hd`Human Design charts, transits, connection charts, penta, bodygraph147,800
        `bazi`Four Pillars, Ten Gods, element balance, luck pillars, compatibility137,200
        `electional`Timing windows, angle crossings, stations, moment analysis104,600
        `moon`Phases, void-of-course, eclipses94,100
        `venus`Star points, phases, elongations, stations113,700
        `acg`Astrocartography lines and hits73,700
        `vedic`Jyotish Rashi chart73,400
        *core (default)*3619,100
        *full*7034,600

        Every selection also includes geocoding (`location_search`, `timezone_resolve`), `account_usage`, and the allowlist-gated proxy — so a birthplace is always resolvable and nothing is stranded.

        Combine with commas; unknown names are ignored rather than rejected, so a typo degrades to a smaller surface instead of a dead connector. As with `core`/`full`, this only filters `tools/list` — every tool remains callable by name.

        Why it matters: tool definitions are re-sent to the model on every pass. `astrology,moon` advertises the same number of tools as the default but costs ~1,700 fewer tokens per message and covers more of the tradition.

        The surface is fixed when the session initializes — this server does not advertise `tools.listChanged`, so switching requires reconnecting. `dev_list_allowed` enumerates every operation reachable through the generic proxy regardless of surface.

        Contributing & Support

        • Something wrong with a result? Open an issue — include the tool, your inputs, and what you expected.
        • Want to contribute? See CONTRIBUTING.md. Integration examples and new skills are the most useful things you can add.
        • Found a security problem? Please report it privately — see SECURITY.md.
        • Tools timing out? Check status.openephemeris.com first.

        If this saved you from an LLM confidently inventing a Saturn position, a ⭐ helps other people find it.

        This package is licensed under the MIT License. However, use of this package to access the OpenEphemeris API constitutes use of the Service and is governed by the OpenEphemeris Terms of Service. By using this package, you agree to those terms. See also the Privacy Policy and Acceptable Use Policy.

        Development

        bash
        npm install
        npm run dev
        npm run typecheck
        npm test
        npm run regen:dev-allowlist
        npm run check:dev-allowlist
        npm run sync:readme
        npm run check:readme
        npm run verify:release

        Deploying the SSE Server to Fly.io

        When you update the MCP server logic (handlers, bug fixes, hardening), you should deploy it so clients connecting via the remote `https://mcp.openephemeris.com/mcp` endpoint get the updates immediately.

        1. Navigate to `apps/api/mcp-server`

        2. Run `fly deploy --remote-only`

        *Note on NPM:* Deploying to Fly.io instantly updates the web-accessible SSE tool. However, users installing your tool locally in Cursor/Desktop via `npx @openephemeris/mcp-server` will *only* receive the updates once a new version is published to NPM. If your changes are critical, you should bump the version in `package.json` and run `npm publish` (or your CI release pipeline) *after* deploying to Fly.

        `npm run verify:release` is the release gate. It checks:

        • allowlist freshness against OpenAPI
        • schema pack freshness
        • README synchronization
        • type safety + tests
        • publish tarball contents (`npm pack --dry-run --json`)

        Architecture

        text
        ┌─────────────────────────────────────────────────────────┐
        │                    MCP Clients                          │
        │  Smithery Gateway · Claude Web · ChatGPT · Remote apps  │
        └──────────────────┬──────────────────────────────────────┘
                           │ Streamable HTTP (MCP 2025-11-25)
                           │ https://mcp.openephemeris.com/mcp
                           │
        ┌─────────────────────────────────────────────────────────┐
        │          Cursor · Claude Desktop · Windsurf             │
        └──────────────────┬──────────────────────────────────────┘
                           │ stdio JSON-RPC
                           │ npx @openephemeris/mcp-server
                           │
                      ┌────▼────────────────────┐
                      │  openephemeris-mcp      │
                      │  Node.js MCP Server     │
                      │  typed tools            │
                      │  auth: Key > JWT        │
                      └────────────┬────────────┘
                                   │ HTTPS
                                   ▼
                      ┌────────────────────────┐
                      │  OpenEphemeris API     │
                      │  api.openephemeris.com │
                      │  NASA JPL DE440        │
                      │  1,100 years of data   │
                      └────────────────────────┘

        Runtime Snapshot (Generated)

        Generated by `npm run sync:readme` from `config/dev-allowlist.json` and the live tool registry.

        • Allowlisted operations: 120
        • Methods: `GET=44`, `POST=76`, `PUT=0`, `PATCH=0`, `DELETE=0`
        • Registered tools (`OPENEPHEMERIS_PROFILE=dev`): 92
        • Typed tools: `account_usage`, `acg_hits`, `acg_power_lines`, `auth_login`, `auth_logout`, `auth_status`, `bazi_annual_pillar`, `bazi_chart`, `bazi_compatibility`, `bazi_element_balance`, `bazi_luck_pillars`, `bazi_recalculate`, `bazi_ten_gods`, `bi_wheel_on_cross_aspect_click`, `bi_wheel_on_house_click`, `bi_wheel_on_planet_click`, `bi_wheel_recalculate`, `bi_wheel_synopsis`, `bodygraph_recalculate`, `chart_wheel_on_aspect_click`, `chart_wheel_on_house_click`, `chart_wheel_on_planet_click`, `chart_wheel_recalculate`, `chinese_bazi`, `electional_angle_crossings`, `electional_aspect_search`, `electional_moment_analysis`, `electional_station_tracker`, `ephemeris_angles_points`, `ephemeris_aspect_check`, `ephemeris_bi_wheel`, `ephemeris_chart_wheel`, `ephemeris_composite`, `ephemeris_composite_midpoint`, `ephemeris_dignities`, `ephemeris_electional`, `ephemeris_fixed_stars`, `ephemeris_hermetic_lots`, `ephemeris_house_cusps`, `ephemeris_lunar_return`, `ephemeris_midpoints`, `ephemeris_moon_phase`, `ephemeris_natal_batch`, `ephemeris_natal_chart`, `ephemeris_natal_transits`, `ephemeris_next_eclipse`, `ephemeris_next_lunar_phase`, `ephemeris_overlay`, `ephemeris_planet_position`, `ephemeris_planetary_return`, `ephemeris_progressed_chart`, `ephemeris_relocation`, `ephemeris_retrograde_status`, `ephemeris_solar_return`, `ephemeris_synastry`, `ephemeris_transits`, `explore_bazi_chart`, `explore_bi_wheel`, `explore_human_design`, `explore_human_design_connection`, `explore_human_design_transit`, `explore_moon_phase`, `explore_natal_chart`, `explore_transit_timeline`, `explore_vedic_chart`, `hd_on_center_click`, `hd_on_channel_click`, `hd_on_connection_channel_click`, `hd_on_gate_click`, `hd_on_planet_click`, `hd_on_transit_channel_click`, `hd_on_variable_click`, `hd_opposition`, `hd_planetary_return`, `human_design_bodygraph`, `human_design_chart`, `human_design_composite`, `human_design_penta`, `location_search`, `moon_phase_recalculate`, `timezone_resolve`, `vedic_chart`, `vedic_chart_recalculate`, `venus_eight_year_star`, `venus_elongations`, `venus_phase`, `venus_star_points`, `venus_star_points_conjunctions`, `venus_stations`
        • Generic tools: `dev_list_allowed`, `dev_read_api`, `dev_write_api`

        Allowlist Families

        FamilyOperationsExample
        `acg`14`POST /acg/aspects`, `POST /acg/ccg`
        `calendar`3`GET /calendar/astrology/cross-quarter`, `GET /calendar/astrology/lunar-standstill`
        `catalogs`3`GET /catalogs/bodies`, `GET /catalogs/fixed-stars`
        `chinese`9`POST /chinese/bazi`, `POST /chinese/bazi/annual-pillar`
        `comparative`5`POST /comparative/composite`, `POST /comparative/composite/midpoint`
        `eclipse`6`GET /eclipse/besselian-elements`, `GET /eclipse/lunar/global`
        `electional`6`GET /electional/angle-crossings`, `GET /electional/aspect-search`
        `ephemeris`36`GET /ephemeris/agro/calendar`, `GET /ephemeris/agro/daily`
        `health`2`GET /health`, `GET /health/detailed`
        `human-design`8`POST /human-design/chart`, `POST /human-design/composite`
        `location`2`GET /location/autocomplete`, `GET /location/reverse`
        `predictive`10`POST /predictive/returns`, `POST /predictive/returns/lunar`
        `root`1`GET /`
        `tidal`2`GET /tidal/forcing`, `GET /tidal/forcing/deep-time`
        `time`6`GET /time/delta-t`, `GET /time/equation-of-time`
        `timezone`3`GET /timezone/coverage`, `POST /timezone/lookup`
        `vedic`1`POST /vedic/chart`
        `visualization`3`POST /visualization/bi-wheel`, `POST /visualization/bodygraph`

        Why OpenEphemeris for AI Agents?

        Most LLMs (like Claude and ChatGPT) struggle heavily with astronomical calculations (trigonometry, Julian date conversions, and planetary lookups). OpenEphemeris serves as a secure, remote math engine.

        By pairing LLMs with the OpenEphemeris MCP server, your agents can instantly access:

        • Zero-hallucination coordinates: Direct, sub-arcsecond NASA JPL DE440 calculations spanning 1,100 years of astronomical data.
        • LLM-optimized tokens (`format=llm`): We compress standard 25,000 token JSON chart responses into minimal text blocks, cutting your inference costs by 50–73% depending on endpoint.
        • Ready-to-use astrology layers: Built-in support for Astrocartography geoJSON lines, Hermetic Lots, Fixed Stars, and complex Human Design matrix generation.

        Frequently asked questions

        What is openephemeris-MCP?

        openephemeris-MCP is MCP server and API examples for OpenEphemeris — NASA JPL ephemeris API for AI agents

        How do I install openephemeris-MCP?

        Open the GitHub repository and follow its README. Most MCP servers are added to your client's MCP config, then called by your agent.

        Is openephemeris-MCP open source?

        Yes — it is hosted on GitHub at https://github.com/openephemeris/openephemeris-MCP and has 3 stars.

        Related MCP tools

        Run your own MCP server? See who uses it and what to fix.

        Measure it with TrackMCP