Ephemeris-grade natal charts, current transits, zodiac sign profiles. No API key.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Compute a full natal (birth) chart: 10 planets (sign/degree/house/retrograde), 12 Placidus house cusps, and inter-planetary aspects (major aspects, classic orbs). Pass lng/lat/tz_str (e.g. -74.01, 40.71, 'America/New_York') for exact offline computation; otherwise city+nation are geocoded online.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
claude mcp add --transport http tj-mcp https://mcp.tianji-astrology.com/mcp
Compute a full natal (birth) chart: 10 planets (sign/degree/house/retrograde), 12 Placidus house cusps, and inter-planetary aspects (major aspects, classic orbs). Pass lng/lat/tz_str (e.g. -74.01, 40.71, 'America/New_York') for exact offline computation; otherwise city+nation are geocoded online.
| Argument | Type | Description |
|---|---|---|
| day* | integer | |
| lat | any | |
| lng | any | |
| city | string | |
| hour | integer | |
| name* | string | |
| year* | integer | |
| month* | integer | |
| minute | integer | |
| nation | string | |
| tz_str | any |
{
"type": "object",
"required": [
"name",
"year",
"month",
"day"
],
"properties": {
"day": {
"type": "integer"
},
"lat": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null
},
"lng": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null
},
"city": {
"type": "string",
"default": "Greenwich"
},
"hour": {
"type": "integer",
"default": 12
},
"name": {
"type": "string"
},
"year": {
"type": "integer"
},
"month": {
"type": "integer"
},
"minute": {
"type": "integer",
"default": 0
},
"nation": {
"type": "string",
"default": "GB"
},
"tz_str": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null
}
},
"additionalProperties": false
}Today's planetary positions (UTC now at Greenwich) — the current sky, for transit analysis, daily overviews, and timing work.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}Reference card for a zodiac sign: element, modality, ruling planet.
| Argument | Type | Description |
|---|---|---|
| sign* | string |
{
"type": "object",
"required": [
"sign"
],
"properties": {
"sign": {
"type": "string"
}
},
"additionalProperties": false
}Anti-hallucination confirmation gate (kosma-style): verify interpretation claims are grounded in the chart before publishing them. chart_json = exact JSON from compute_natal_chart or get_current_transits. claims = JSON array: [{"text": "...", "factors": [ {"type": "aspect", "a": "Sun", "b": "Moon"}, # aspect exists in chart {"type": "planet_house", "a": "Sun", "b": 5}, # planet is in that house {"type": "planet_sign", "a": "Sun", "b": "Leo"}, # planet is in that sign {"type": "house_sign", "a": 5, "b": "Leo"}]}] # house cusp is in that sign A claim is supported only if >= 2 of its factors independently exist in the chart. Returns per-claim verdicts; gate = "blocked" if any claim is unsupported — rewrite the claim against verified factors or drop it.
| Argument | Type | Description |
|---|---|---|
| claims* | string | |
| chart_json* | string |
{
"type": "object",
"required": [
"chart_json",
"claims"
],
"properties": {
"claims": {
"type": "string"
},
"chart_json": {
"type": "string"
}
},
"additionalProperties": false
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 1, 2026.
No readOnlyHint / destructiveHint annotations, so clients can't tell a read from a write without asking.
Fix: Add annotations to each tool, e.g. { readOnlyHint: true } for tools that only read.