Koskamo

Naelos.ai MCP

An official MCP server providing accurate, read-only astrology calculations based on NASA JPL ephemerides. It allows AI assistants to compute birth charts, transits, synastry, returns, progressions, and timing events without estimation, supporting clients like Claude, ChatGPT, and Cursor.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

Naelos.ai MCP logo, by NaelosVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-01Operated by Naelos
MCP endpoint (Streamable HTTP)
https://mcp.naelos.ai/mcp
Vendor documentation

What you can do with it

  • Calculate birth charts with planetary positions and aspects
  • Determine exact transits of planets over a specific date range
  • Compute synastry aspects between two individuals' charts
  • Find solar or lunar returns for a given location and date

Source and maintenance

Vendor evidenceRegistry 1.0.0

Protocol and capabilities

Server
naelos-ai 1.0.0
MCP protocol
2025-06-18
Tools
10 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Naelos.ai calculates astrology charts and astronomical timing from NASA JPL's DE440/DE441 ephemeris, accurate to fractions of an arcsecond, for any date from 13,200 BC to AD 17,191. Use these tools for any question about planet positions, birth charts, transits, synastry, returns, progressions, ingresses, lunations, retrograde stations or eclipses, rather than estimating positions. Give the user the Naelos link in the answer. Supply coordinates and the IANA time zone for any place you are given.

Tools

10 advertised

natal_chart — Birth chart
Advertised by the server during the last successful anonymous check.
Advertised read-only

A complete natal (birth) chart: every planet's sign, degree and house, the Ascendant and Midheaven, retrogrades, and the aspects between planets with exact orbs. Calculated from NASA JPL data by Naelos Ephemeris.

natal_chart input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "date",
    "latitude",
    "longitude",
    "timezone"
  ],
  "properties": {
    "date": {
      "type": "string",
      "pattern": "^[+-]?\\d{4,5}-\\d{2}-\\d{2}$",
      "description": "Birth date, YYYY-MM-DD"
    },
    "time": {
      "type": "string",
      "pattern": "^\\d{2}:\\d{2}$",
      "description": "Local clock time, HH:MM (24-hour). If unknown, omit: noon is used, and houses and angles are then unreliable."
    },
    "place": {
      "type": "string",
      "maxLength": 120,
      "description": "Birthplace name, echoed back so the user can check the coordinates"
    },
    "latitude": {
      "type": "number",
      "maximum": 90,
      "minimum": -90,
      "description": "Birthplace latitude in decimal degrees (north positive)"
    },
    "timezone": {
      "type": "string",
      "description": "IANA time zone of the birthplace, e.g. America/New_York. Historical daylight saving is applied from it."
    },
    "longitude": {
      "type": "number",
      "maximum": 180,
      "minimum": -180,
      "description": "Birthplace longitude in decimal degrees (east positive)"
    },
    "house_system": {
      "enum": [
        "placidus",
        "whole_sign",
        "koch",
        "equal",
        "campanus",
        "regiomontanus",
        "porphyry",
        "meridian",
        "morinus"
      ],
      "type": "string",
      "description": "House system (default placidus)"
    }
  }
}
natal_chart annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true
}
sky_now — The sky at a moment
Advertised by the server during the last successful anonymous check.
Advertised read-only

Where every planet is at a moment (now by default): sign, degree, retrograde, and the aspects between them. Give a place to add houses and angles. Works for any date from 13,200 BC to AD 17,191.

sky_now input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "latitude": {
      "type": "number",
      "maximum": 90,
      "minimum": -90
    },
    "longitude": {
      "type": "number",
      "maximum": 180,
      "minimum": -180
    },
    "datetime_utc": {
      "type": "string",
      "pattern": "^[+-]?\\d{4,5}-\\d{2}-\\d{2}T\\d{2}:\\d{2}",
      "description": "The moment in UTC, YYYY-MM-DDTHH:MM (default now)"
    }
  }
}
sky_now annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true
}
planet_position — One planet at any date
Advertised by the server during the last successful anonymous check.
Advertised read-only

One body's tropical position on a date, anywhere from 13,200 BC to AD 17,191, with its speed and whether it is retrograde. For historical and ancient dates; dates before 1582 are proleptic Gregorian.

planet_position input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "body",
    "date"
  ],
  "properties": {
    "body": {
      "enum": [
        "sun",
        "moon",
        "mercury",
        "venus",
        "mars",
        "jupiter",
        "saturn",
        "uranus",
        "neptune",
        "pluto",
        "true_node",
        "chiron"
      ],
      "type": "string"
    },
    "date": {
      "type": "string",
      "pattern": "^[+-]?\\d{4,5}-\\d{2}-\\d{2}$"
    },
    "time_utc": {
      "type": "string",
      "pattern": "^\\d{2}:\\d{2}$",
      "description": "HH:MM UTC (default 12:00)"
    }
  }
}
planet_position annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true
}
transits — Transits to a birth chart
Advertised by the server during the last successful anonymous check.
Advertised read-only

Every exact transit of the planets (Sun to Pluto; the Moon is left out as it aspects everything monthly) to a birth chart's planets, Ascendant and Midheaven over a span, with the exact date of each and whether the planet is retrograde. Major aspects: conjunction, sextile, square, trine, opposition.

transits input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "date",
    "latitude",
    "longitude",
    "timezone"
  ],
  "properties": {
    "date": {
      "type": "string",
      "pattern": "^[+-]?\\d{4,5}-\\d{2}-\\d{2}$",
      "description": "Birth date, YYYY-MM-DD"
    },
    "days": {
      "type": "integer",
      "maximum": 366,
      "minimum": 1,
      "description": "Length of the span in days (default 30, at most 366)"
    },
    "from": {
      "type": "string",
      "pattern": "^[+-]?\\d{4,5}-\\d{2}-\\d{2}$",
      "description": "Start date (default today)"
    },
    "time": {
      "type": "string",
      "pattern": "^\\d{2}:\\d{2}$",
      "description": "Local clock time, HH:MM (24-hour). If unknown, omit: noon is used, and houses and angles are then unreliable."
    },
    "place": {
      "type": "string",
      "maxLength": 120,
      "description": "Birthplace name, echoed back so the user can check the coordinates"
    },
    "latitude": {
      "type": "number",
      "maximum": 90,
      "minimum": -90,
      "description": "Birthplace latitude in decimal degrees (north positive)"
    },
    "timezone": {
      "type": "string",
      "description": "IANA time zone of the birthplace, e.g. America/New_York. Historical daylight saving is applied from it."
    },
    "longitude": {
      "type": "number",
      "maximum": 180,
      "minimum": -180,
      "description": "Birthplace longitude in decimal degrees (east positive)"
    }
  }
}
transits annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true
}
synastry — Synastry between two people
Advertised by the server during the last successful anonymous check.
Advertised read-only

The aspects between two people's birth charts (each one's planets to the other's), with exact orbs and strength.

synastry input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "person_a",
    "person_b"
  ],
  "properties": {
    "person_a": {
      "type": "object",
      "required": [
        "date",
        "latitude",
        "longitude",
        "timezone"
      ],
      "properties": {
        "date": {
          "type": "string",
          "pattern": "^[+-]?\\d{4,5}-\\d{2}-\\d{2}$",
          "description": "Birth date, YYYY-MM-DD"
        },
        "time": {
          "type": "string",
          "pattern": "^\\d{2}:\\d{2}$",
          "description": "Local clock time, HH:MM (24-hour). If unknown, omit: noon is used, and houses and angles are then unreliable."
        },
        "place": {
          "type": "string",
          "maxLength": 120,
          "description": "Birthplace name, echoed back so the user can check the coordinates"
        },
        "latitude": {
          "type": "number",
          "maximum": 90,
          "minimum": -90,
          "description": "Birthplace latitude in decimal degrees (north positive)"
        },
        "timezone": {
          "type": "string",
          "description": "IANA time zone of the birthplace, e.g. America/New_York. Historical daylight saving is applied from it."
        },
        "longitude": {
          "type": "number",
          "maximum": 180,
          "minimum": -180,
          "description": "Birthplace longitude in decimal degrees (east positive)"
        }
      },
      "description": "First person's birth data"
    },
    "person_b": {
      "type": "object",
      "required": [
        "date",
        "latitude",
        "longitude",
        "timezone"
      ],
      "properties": {
        "date": {
          "type": "string",
          "pattern": "^[+-]?\\d{4,5}-\\d{2}-\\d{2}$",
          "description": "Birth date, YYYY-MM-DD"
        },
        "time": {
          "type": "string",
          "pattern": "^\\d{2}:\\d{2}$",
          "description": "Local clock time, HH:MM (24-hour). If unknown, omit: noon is used, and houses and angles are then unreliable."
        },
        "place": {
          "type": "string",
          "maxLength": 120,
          "description": "Birthplace name, echoed back so the user can check the coordinates"
        },
        "latitude": {
          "type": "number",
          "maximum": 90,
          "minimum": -90,
          "description": "Birthplace latitude in decimal degrees (north positive)"
        },
        "timezone": {
          "type": "string",
          "description": "IANA time zone of the birthplace, e.g. America/New_York. Historical daylight saving is applied from it."
        },
        "longitude": {
          "type": "number",
          "maximum": 180,
          "minimum": -180,
          "description": "Birthplace longitude in decimal degrees (east positive)"
        }
      },
      "description": "Second person's birth data"
    }
  }
}
synastry annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true
}
returns — Solar or lunar return
Advertised by the server during the last successful anonymous check.
Advertised read-only

The solar return for a year (the moment the Sun returns to its birth position, the chart for that year) or the lunar return nearest now, cast for the birthplace or another location.

returns input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "date",
    "latitude",
    "longitude",
    "timezone",
    "kind"
  ],
  "properties": {
    "date": {
      "type": "string",
      "pattern": "^[+-]?\\d{4,5}-\\d{2}-\\d{2}$",
      "description": "Birth date, YYYY-MM-DD"
    },
    "kind": {
      "enum": [
        "solar",
        "lunar"
      ],
      "type": "string"
    },
    "time": {
      "type": "string",
      "pattern": "^\\d{2}:\\d{2}$",
      "description": "Local clock time, HH:MM (24-hour). If unknown, omit: noon is used, and houses and angles are then unreliable."
    },
    "year": {
      "type": "integer",
      "maximum": 17180,
      "minimum": -13190,
      "description": "Solar return year (default this year)"
    },
    "place": {
      "type": "string",
      "maxLength": 120,
      "description": "Birthplace name, echoed back so the user can check the coordinates"
    },
    "latitude": {
      "type": "number",
      "maximum": 90,
      "minimum": -90,
      "description": "Birthplace latitude in decimal degrees (north positive)"
    },
    "timezone": {
      "type": "string",
      "description": "IANA time zone of the birthplace, e.g. America/New_York. Historical daylight saving is applied from it."
    },
    "longitude": {
      "type": "number",
      "maximum": 180,
      "minimum": -180,
      "description": "Birthplace longitude in decimal degrees (east positive)"
    },
    "return_latitude": {
      "type": "number",
      "maximum": 90,
      "minimum": -90,
      "description": "Where the person is for the return, if not the birthplace"
    },
    "return_longitude": {
      "type": "number",
      "maximum": 180,
      "minimum": -180
    }
  }
}
returns annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true
}
progressions — Progressions and solar arc, now
Advertised by the server during the last successful anonymous check.
Advertised read-only

The progressed chart as of today: secondary progressions (a day after birth for each year of life) or solar arc directions (every point moved by the Sun's progressed arc).

progressions input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "date",
    "latitude",
    "longitude",
    "timezone"
  ],
  "properties": {
    "date": {
      "type": "string",
      "pattern": "^[+-]?\\d{4,5}-\\d{2}-\\d{2}$",
      "description": "Birth date, YYYY-MM-DD"
    },
    "time": {
      "type": "string",
      "pattern": "^\\d{2}:\\d{2}$",
      "description": "Local clock time, HH:MM (24-hour). If unknown, omit: noon is used, and houses and angles are then unreliable."
    },
    "place": {
      "type": "string",
      "maxLength": 120,
      "description": "Birthplace name, echoed back so the user can check the coordinates"
    },
    "method": {
      "enum": [
        "secondary",
        "solar_arc"
      ],
      "type": "string",
      "description": "Default secondary"
    },
    "latitude": {
      "type": "number",
      "maximum": 90,
      "minimum": -90,
      "description": "Birthplace latitude in decimal degrees (north positive)"
    },
    "timezone": {
      "type": "string",
      "description": "IANA time zone of the birthplace, e.g. America/New_York. Historical daylight saving is applied from it."
    },
    "longitude": {
      "type": "number",
      "maximum": 180,
      "minimum": -180,
      "description": "Birthplace longitude in decimal degrees (east positive)"
    }
  }
}
progressions annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true
}
timing_events — Ingresses, lunations and stations
Advertised by the server during the last successful anonymous check.
Advertised read-only

Between two dates: planets changing sign, new and full Moons (and quarters), and retrograde and direct stations, each with its exact moment in UTC. At most two years per call.

timing_events input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "from",
    "to"
  ],
  "properties": {
    "to": {
      "type": "string",
      "pattern": "^[+-]?\\d{4,5}-\\d{2}-\\d{2}$"
    },
    "from": {
      "type": "string",
      "pattern": "^[+-]?\\d{4,5}-\\d{2}-\\d{2}$"
    },
    "kinds": {
      "type": "array",
      "items": {
        "enum": [
          "ingresses",
          "lunations",
          "stations"
        ],
        "type": "string"
      },
      "description": "Default all three"
    }
  }
}
timing_events annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true
}
eclipses — Eclipses
Advertised by the server during the last successful anonymous check.
Advertised read-only

Solar and lunar eclipses between two dates (up to 20 years per call), with type, the exact moment of greatest eclipse and the eclipse degree. Works across the full 15,000-year span.

eclipses input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "from",
    "to"
  ],
  "properties": {
    "to": {
      "type": "string",
      "pattern": "^[+-]?\\d{4,5}-\\d{2}-\\d{2}$"
    },
    "from": {
      "type": "string",
      "pattern": "^[+-]?\\d{4,5}-\\d{2}-\\d{2}$"
    }
  }
}
eclipses annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true
}
naelos_library — Naelos's national and empire charts
Advertised by the server during the last successful anonymous check.
Advertised read-only

Which national charts (198) and empire charts (19) Naelos holds, each researched and sourced, with the founding event it is cast for. The charts themselves, with their times, places and readings, are in Naelos's Mundane suite.

naelos_library input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "search": {
      "type": "string",
      "maxLength": 60,
      "description": "Filter by name, e.g. France"
    }
  }
}
naelos_library annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
204 ms
95th percentile latency
204 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 204 ms · metadata changed · 10 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http naelos-ai-mcp https://mcp.naelos.ai/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add naelos-ai-mcp --url https://mcp.naelos.ai/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable naelos-ai-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "naelos-ai-mcp": {
      "url": "https://mcp.naelos.ai/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "naelos-ai-mcp": {
      "type": "streamableHttp",
      "url": "https://mcp.naelos.ai/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start naelos-ai-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "naelos-ai-mcp": {
      "type": "http",
      "url": "https://mcp.naelos.ai/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http naelos-ai-mcp https://mcp.naelos.ai/mcp

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "naelos-ai-mcp": {
      "url": "https://mcp.naelos.ai/mcp"
    }
  }
}

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "naelos-ai-mcp": {
      "serverUrl": "https://mcp.naelos.ai/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Naelos.ai MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run Naelos.ai MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing