Koskamo

Xiaodao Charting Tools MCP

An official MCP server providing read-only tools for casting Bazi (Four Pillars) and Qimen Dunjia charts, and converting birth times to true solar time. It supports historical time zones and lunar calendars without requiring user authentication.

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.

Xiaodao Charting Tools MCP logo, by XiaodaoVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-01Operated by Xiaodao
MCP endpoint (Streamable HTTP)
https://xiaodaox.com/mcp
Vendor documentation

What you can do with it

  • Casting a full Bazi chart with detailed pillars and luck cycles
  • Casting an hour-based Qimen Dunjia chart
  • Converting historical local clock time to true solar time
  • Searching for birth place IDs by name

Source and maintenance

Vendor evidenceRegistry 1.0.0

Protocol and capabilities

Server
xiaodao-bazi 1.0.0
MCP protocol
2025-06-18
Tools
4 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": false
  }
}

Tools

4 advertised

search_birth_place — 查出生地 · Search birth places
Advertised by the server during the last successful anonymous check.
Advertised read-only

Search Xiaodao’s place catalogue for birth place IDs, Chinese and English names, countries and first-level administrative areas. Select the intended place; its stored coordinates and historical time zone rules are used by the calculation tools, not today’s UTC offset.

search_birth_place input schema
{
  "type": "object",
  "required": [
    "query"
  ],
  "properties": {
    "query": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "language": {
      "enum": [
        "zh-CN",
        "en"
      ],
      "type": "string",
      "default": "en"
    }
  },
  "additionalProperties": false
}
search_birth_place annotations
{
  "title": "查出生地 · Search birth places",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
bazi_chart — 排八字 · Bazi chart
Advertised by the server during the last successful anonymous check.
Advertised read-only

Calculate a full Bazi chart using the Xiaodao engine: four pillars and details, lunar date, auxiliary palaces, month command, luck start and direction, all twelve ten-year cycles with yearly lists, and focused annual/monthly/daily/hourly facts. The default focus is the chart page current instant at the birth place, using its historical time zone and true-solar day boundaries. focusDate selects a local civil date at noon; detailYears {from,to} adds up to ten inclusive years; allDaysOfMonth adds every day of the focused solar-term month. Ranges must fit the pre-luck and twelve-cycle timeline. Months run from Lichun (Yin) through the following Xiaohan (Chou). Year/month pillars compare the actual instant with solar terms; day/hour pillars use true solar time. earlyLateZi defaults to false (23:00 day change); true uses midnight and separates early/late Zi hours. Luck starts from the birth-to-term interval (3 days per year), forward for yang-year males/yin-year females, reverse otherwise. Input is historical wall-clock time, Gregorian or explicit lunar/leap-month date. Repeated times require a user-selected occurrence; nonexistent times are not calculated. Missing birth boundary choices return needs_input. Chart text stays Chinese; English adds a field glossary. This returns chart facts, not an interpretation. Gregorian date range: 1801-01-01 through 2099-12-31. 公历日期范围:1801-01-01 至 2099-12-31。 Lunar input is checked after conversion to Gregorian. 农历输入先换成公历再查。

bazi_chart input schema
{
  "type": "object",
  "required": [
    "placeId",
    "date",
    "time",
    "sex"
  ],
  "properties": {
    "sex": {
      "enum": [
        "MALE",
        "FEMALE"
      ],
      "type": "string"
    },
    "date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Birth date, YYYY-MM-DD, in the selected calendar."
    },
    "time": {
      "type": "string",
      "pattern": "^(?:[01]\\d|2[0-3]):[0-5]\\d$",
      "description": "Local wall-clock time, HH:MM."
    },
    "placeId": {
      "type": "string",
      "maxLength": 128,
      "description": "Birth place ID returned by search_birth_place."
    },
    "calendar": {
      "enum": [
        "SOLAR",
        "LUNAR"
      ],
      "type": "string",
      "default": "SOLAR",
      "description": "Gregorian (SOLAR) or Chinese lunar (LUNAR) input. Lunar input requires an explicit isLeapMonth."
    },
    "language": {
      "enum": [
        "zh-CN",
        "en"
      ],
      "type": "string",
      "default": "en"
    },
    "focusDate": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Local civil date at the birth place, evaluated at noon; defaults to the current chart-page instant. Must fall within the supported timeline."
    },
    "detailYears": {
      "type": "object",
      "required": [
        "from",
        "to"
      ],
      "properties": {
        "to": {
          "type": "integer"
        },
        "from": {
          "type": "integer"
        }
      },
      "description": "Inclusive calendar-year containers to include in detail, at most ten years, within the supported timeline.",
      "additionalProperties": false
    },
    "earlyLateZi": {
      "type": "boolean",
      "description": "Optional Zi-hour convention. Default false: the day changes at 23:00 true solar time (same as the Xiaodao website default). true keeps the same day until 00:00."
    },
    "isLeapMonth": {
      "type": "boolean",
      "description": "Required for LUNAR input: whether the supplied lunar month is a leap month."
    },
    "allDaysOfMonth": {
      "type": "boolean",
      "default": false,
      "description": "Include all days of the focused solar-term month, including partial boundary days."
    },
    "daylightSaving": {
      "type": "boolean",
      "description": "Only supply a user-selected DST choice when the local time occurs twice."
    },
    "boundaryChoices": {
      "type": "object",
      "properties": {
        "DAY": {
          "enum": [
            "SAME",
            "OTHER"
          ],
          "type": "string"
        },
        "HOUR": {
          "enum": [
            "SAME",
            "OTHER"
          ],
          "type": "string"
        },
        "TERM": {
          "enum": [
            "SAME",
            "OTHER"
          ],
          "type": "string"
        }
      },
      "description": "User choices for returned time boundaries: SAME uses this time; OTHER uses the other side.",
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
bazi_chart annotations
{
  "title": "排八字 · Bazi chart",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
qimen_chart — 奇门排盘 · Qimen chart
Advertised by the server during the last successful anonymous check.
Advertised read-only

Calculate an hour-based Qimen chart using the chai bu method and rotating plate only. date and time are local Gregorian wall-clock time at placeId (from search_birth_place); omitting placeId uses the same configured reference place as Xiaodao Daily Fortune, named in the result. Historical time zone and DST, longitude and equation of time produce local true solar time, then expressed in Beijing time. All four pillars, solar term and ju use that corrected moment; year/month pillars can differ from Bazi for the same instant. The day changes at 23:00, not selectable. Repeated wall-clock times need an explicit daylightSaving choice; nonexistent times are not calculated. Optional birthYearPillar is a full valid sexagenary pillar, not a numeric year or a single stem; obtain it from bazi_chart first because the year changes at Lichun. Jia uses its hidden Liu Yi stem. Returns nine-palace chart facts and optional birth-year stem locations, without interpretation rules. Chart text stays Chinese; language en adds English conventions and a field glossary. Gregorian date range: 1801-01-01 through 2099-12-31. 公历日期范围:1801-01-01 至 2099-12-31。

qimen_chart input schema
{
  "type": "object",
  "required": [
    "date",
    "time"
  ],
  "properties": {
    "date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Chart date in the local Gregorian calendar."
    },
    "time": {
      "type": "string",
      "pattern": "^(?:[01]\\d|2[0-3]):[0-5]\\d$",
      "description": "Local wall-clock time, HH:MM."
    },
    "placeId": {
      "type": "string",
      "maxLength": 128,
      "description": "Optional event place ID from search_birth_place; omitted uses the website reference place."
    },
    "language": {
      "enum": [
        "zh-CN",
        "en"
      ],
      "type": "string",
      "default": "en"
    },
    "daylightSaving": {
      "type": "boolean",
      "description": "Only supply a user-selected DST choice when the local time occurs twice."
    },
    "birthYearPillar": {
      "type": "string",
      "description": "Valid full sexagenary birth-year pillar, e.g. 庚午 or 甲戌, obtained from Bazi."
    }
  },
  "additionalProperties": false
}
qimen_chart annotations
{
  "title": "奇门排盘 · Qimen chart",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
true_solar_time — 真太阳时换算 · True solar time
Advertised by the server during the last successful anonymous check.
Advertised read-only

Convert historical local wall-clock time (Gregorian or explicit lunar/leap-month input) using the selected place: remove daylight saving, apply longitude correction (4 minutes per degree relative to the standard meridian), then equation of time. The Xiaodao engine uses the actual instant for equation of time in both hemispheres, with no half-year shift. Longitude and birth date are unchanged. Returns minute-resolution true solar time, historical zone/offset, DST and Zi-hour policy. Repeated clock times require an explicit occurrence; nonexistent times are rejected. earlyLateZi is optional and defaults to false (day changes at 23:00, same as the Xiaodao website default). Missing boundary choices return needs_input. No pillars or lunar date are returned; the Zi-hour policy does not change the displayed solar date. Gregorian date range: 1801-01-01 through 2099-12-31. 公历日期范围:1801-01-01 至 2099-12-31。 Lunar input is checked after conversion to Gregorian. 农历输入先换成公历再查。

true_solar_time input schema
{
  "type": "object",
  "required": [
    "placeId",
    "date",
    "time"
  ],
  "properties": {
    "date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Birth date, YYYY-MM-DD, in the selected calendar."
    },
    "time": {
      "type": "string",
      "pattern": "^(?:[01]\\d|2[0-3]):[0-5]\\d$",
      "description": "Local wall-clock time, HH:MM."
    },
    "placeId": {
      "type": "string",
      "maxLength": 128,
      "description": "Birth place ID returned by search_birth_place."
    },
    "calendar": {
      "enum": [
        "SOLAR",
        "LUNAR"
      ],
      "type": "string",
      "default": "SOLAR",
      "description": "Gregorian (SOLAR) or Chinese lunar (LUNAR) input. Lunar input requires an explicit isLeapMonth."
    },
    "language": {
      "enum": [
        "zh-CN",
        "en"
      ],
      "type": "string",
      "default": "en"
    },
    "earlyLateZi": {
      "type": "boolean",
      "description": "Optional Zi-hour convention. Default false: the day changes at 23:00 true solar time (same as the Xiaodao website default). true keeps the same day until 00:00."
    },
    "isLeapMonth": {
      "type": "boolean",
      "description": "Required for LUNAR input: whether the supplied lunar month is a leap month."
    },
    "daylightSaving": {
      "type": "boolean",
      "description": "Only supply a user-selected DST choice when the local time occurs twice."
    },
    "boundaryChoices": {
      "type": "object",
      "properties": {
        "DAY": {
          "enum": [
            "SAME",
            "OTHER"
          ],
          "type": "string"
        },
        "HOUR": {
          "enum": [
            "SAME",
            "OTHER"
          ],
          "type": "string"
        },
        "TERM": {
          "enum": [
            "SAME",
            "OTHER"
          ],
          "type": "string"
        }
      },
      "description": "User choices for returned time boundaries: SAME uses this time; OTHER uses the other side.",
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
true_solar_time annotations
{
  "title": "真太阳时换算 · True solar time",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}

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
803 ms
95th percentile latency
803 ms

Maintenance history

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

  • · probe · passed · 803 ms · metadata changed · 4 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 xiaodao-charting-tools-mcp https://xiaodaox.com/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 xiaodao-charting-tools-mcp --url https://xiaodaox.com/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable xiaodao-charting-tools-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "xiaodao-charting-tools-mcp": {
      "url": "https://xiaodaox.com/mcp"
    }
  }
}

Cline

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

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start xiaodao-charting-tools-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "xiaodao-charting-tools-mcp": {
      "type": "http",
      "url": "https://xiaodaox.com/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 xiaodao-charting-tools-mcp https://xiaodaox.com/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": {
    "xiaodao-charting-tools-mcp": {
      "url": "https://xiaodaox.com/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": {
    "xiaodao-charting-tools-mcp": {
      "serverUrl": "https://xiaodaox.com/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Xiaodao Charting Tools 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 Xiaodao Charting Tools 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