The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the True Solar Time listing page.
True solar time correction for BaZi / Four Pillars charts — the step most calculators skip.
An MCP server, CLI, and TypeScript library that converts a recorded birth time (wall clock + IANA time zone + longitude) into the sun's actual time at the birthplace. Deterministic: same input, same output, every time.
A BaZi chart is a function of the sun's position, but birth records are written in civil clock time. Between the two sit three corrections that nearly every chart tool — including the popular open-source LLM "skills" — silently skips:
This library also reports two things most tools won't tell you:
It does not cast charts, pick favorable elements, or interpret anything. Casting is a solved problem with good open-source implementations; interpretation has no unique right answer and doesn't belong in a lookup library. One step, done carefully.
The full methodology — every constant, threshold, and convention, including the ones this library uses — is published at auspiceoracle.com/en/method. Three worked examples with full derivations: the birth-time test. Background essay: true solar time.
To try it on your own birth data without installing anything: free BaZi calculator (true solar time applied).
Hosted endpoint (no install): https://auspiceoracle.com/mcp — stateless streamable HTTP, no auth. Works as a claude.ai custom connector or in any MCP client that speaks streamable HTTP:
Local (stdio):
Tools:
true_solar_time — full correction: corrected instant, DST/longitude/EoT breakdown (the three always sum exactly to the total), hour branch, boundary distance, nonexistent-time detection.hour_branch — branch membership and boundary distance for an already-corrected time.The hosted endpoint additionally exposes cast_pillars — solar-corrected four pillars with hidden stems, Na Yin and luck cycles, computed by the production Auspice Oracle engine (closed source; same conventions as the published methodology). Facts only — no strength verdicts, no interpretation.
If you're building a BaZi skill or agent: call true_solar_time before casting, and pass the corrected time to your caster. An LLM cannot do this conversion in-context — the equation of time is a trigonometric series and the DST history lives in a database, not in model weights.
The MCPB bundle in the releases packages this server for one-click install, with the full charting flow added:
| Tool | Where it runs |
|---|---|
true_solar_time, hour_branch | locally, offline, from the code in this repo |
cast_chart, personality_sketch, compose_sketch | remotely, on https://auspiceoracle.com/mcp/bazi |
Casting the four pillars needs the production engine (solar-term instants, luck-cycle start dates, the late-Zi convention), which is not part of this package — so the bundle forwards those three calls over HTTPS and passes the result through unchanged. Build it yourself with npm run build:mcpb.
The same hosted endpoint works as a plain remote MCP server, no install required:
Full policy: https://auspiceoracle.com/en/privacy
true_solar_time, hour_branch) send nothing anywhere. No network, no telemetry, no files written.cast_chart, personality_sketch, compose_sketch) send the birth details you provide — date, clock time, IANA time zone, longitude, and for casting the gender flag that sets luck-cycle direction — to https://auspiceoracle.com/mcp/bazi over HTTPS, to compute that one response.This is an extracted mirror of the solar-time layer of the engine behind Auspice Oracle. The main engine is the source of truth; the golden tests here pin this mirror to the same published examples. Bug reports are very welcome; PRs that change the conventions above will be declined (a convention fork would make the published methodology untrue).
MIT © Shan Liu