MCP 服务器

Auspice BaZi — Four Pillars Chart

com.auspiceoracle/bazi
其他 公开且可连接 MCP 2025-11-25

此 MCP 可以做什么

Calculates BaZi Four Pillars charts using true solar time and generates a constrained reflective personality sketch.

cast_chart
Cast a BaZi chart (true solar time first)
Cast a BaZi / Four Pillars chart the right way round: true solar time correction FIRST (DST + longitude + equation of time), then the four pillars with hidden stems and Na Yin, day master identity, and luck cycles. Also casts a comparison chart from raw clock time and reports exactly what calculators that skip the correction would get wrong for this birth. Returns a formatted scroll. If your client renders the chart card (widget) for the user, do NOT repeat the chart, pillars or link in text — add only a short plain-language walkthrough. Otherwise begin your reply with the scroll EXACTLY as returned, inside a code block, without redrawing or reformatting it; NEVER show the raw JSON / structured data to the user (the scroll is the display form); add your own walkthrough only after it. Runs on the production Auspice Oracle engine (same conventions as auspiceoracle.com/en/method). Facts only: no strength verdicts, no favorable elements, no interpretation. Deterministic.
只读 幂等
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['year', 'month', 'day', 'hour', 'minute', 'timeZone', 'longitude', 'gender'], 'properties': {'day': {'type': 'integer', 'maximum': 31, 'minimum': 1, 'description': 'Birth day of month, 1–31'}, 'hour': {'type': 'integer', 'maximum': 23, 'minimum': 0, 'description': 'Recorded wall-clock hour, 24-hour format'}, 'lang': {'enum': ['en', 'zh'], 'type': 'string', 'description': "Language of the rendered output — pass the language the user is conversing in. Defaults to 'en'."}, 'year': {'type': 'integer', 'maximum': 2100, 'minimum': 1900, 'description': 'Birth year, Gregorian calendar (engine ephemeris covers 1900–2100)'}, 'month': {'type': 'integer', 'maximum': 12, 'minimum': 1, 'description': 'Birth month, 1–12'}, 'gender': {'enum': ['male', 'female'], 'type': 'string', 'description': 'Sets luck-cycle direction (a charting convention, not an identity statement)'}, 'minute': {'type': 'integer', 'maximum': 59, 'minimum': 0, 'description': 'Recorded wall-clock minute, 0–59'}, 'timeZone': {'type': 'string', 'description': "IANA time zone of the birthplace, e.g. 'Asia/Shanghai', 'America/Vancouver'"}, 'longitude': {'type': 'number', 'maximum': 180, 'minimum': -180, 'description': 'Birthplace longitude in degrees, east positive (Beijing ≈ 116.4, Vancouver ≈ -123.1)'}}}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['pillars', 'dayMaster', 'season', 'lunarDate', 'castFrom', 'solarCorrection', 'naiveComparison', 'luckCycles', 'fullReadingUrl'], 'properties': {'season': {'type': 'object', 'required': ['monthBranch', 'zh', 'en'], 'properties': {'en': {'type': 'string'}, 'zh': {'type': 'string'}, 'monthBranch': {'type': 'string'}}, 'description': 'Season of the month branch (deterministic lookup)', 'additionalProperties': False}, 'pillars': {'type': 'object', 'required': ['year', 'month', 'day', 'hour'], 'properties': {'day': {'type': 'object', 'required': ['ganZhi', 'hiddenStems', 'naYin', 'naYinEn'], 'properties': {'naYin': {'type': 'string', 'description': 'Na Yin of the pillar (Chinese)'}, 'ganZhi': {'type': 'string', 'description': 'Stem-branch pair, e.g. 庚午'}, 'naYinEn': {'type': 'string', 'description': 'Na Yin, site-locked English name'}, 'hiddenStems': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Hidden stems of the branch, principal qi first'}}, 'additionalProperties': False}, 'hour': {'type': 'object', 'required': ['ganZhi', 'hiddenStems', 'naYin', 'naYinEn'], 'properties': {'naYin': {'type': 'string', 'description': 'Na Yin of the pillar (Chinese)'}, 'ganZhi': {'type': 'string', 'description': 'Stem-branch pair, e.g. 庚午'}, 'naYinEn': {'type': 'string', 'description': 'Na Yin, site-locked English name'}, 'hiddenStems': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Hidden stems of the branch, principal qi first'}}, 'additionalProperties': False}, 'year': {'type': 'object', 'required': ['ganZhi', 'hiddenStems', 'naYin', 'naYinEn'], 'properties': {'naYin': {'type': 'string', 'description': 'Na Yin of the pillar (Chinese)'}, 'ganZhi': {'type': 'string', 'description': 'Stem-branch pair, e.g. 庚午'}, 'naYinEn': {'type': 'string', 'description': 'Na Yin, site-locked English name'}, 'hiddenStems': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Hidden stems of the branch, principal qi first'}}, 'additionalProperties': False}, 'month': {'type': 'object', 'required': ['ganZhi', 'hiddenStems', 'naYin', 'naYinEn'], 'properties': {'naYin': {'type': 'string', 'description': 'Na Yin of the pillar (Chinese)'}, 'ganZhi': {'type': 'string', 'description': 'Stem-branch pair, e.g. 庚午'}, 'naYinEn': {'type': 'string', 'description': 'Na Yin, site-locked English name'}, 'hiddenStems': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Hidden stems of the branch, principal qi first'}}, 'additionalProperties': False}}, 'additionalProperties': False}, 'castFrom': {'type': 'string', 'description': 'The instant the chart was cast from (true solar time), YYYY-MM-DD HH:mm'}, 'dayMaster': {'type': 'object', 'required': ['gan', 'pinyin', 'element', 'elementEn', 'emoji', 'image', 'imageEn', 'motto', 'mottoEn'], 'properties': {'gan': {'type': 'string'}, 'emoji': {'type': 'string', 'description': 'Identity-seal emoji for the day master (ten-stem lookup)'}, 'image': {'type': 'string', 'description': 'Traditional image of the stem, e.g. 钗钏之金'}, 'motto': {'type': 'string', 'description': 'Fixed brand motto for this day master (Chinese)'}, 'pinyin': {'type': 'string'}, 'element': {'type': 'string', 'description': 'Five-element of the day stem (Chinese)'}, 'imageEn': {'type': 'string'}, 'mottoEn': {'type': 'string'}, 'elementEn': {'type': 'string'}}, 'additionalProperties': False}, 'lunarDate': {'type': 'string'}, 'luckCycles': {'type': 'object', 'required': ['startSolarDate', 'cycles'], 'properties': {'cycles': {'type': 'array', 'items': {'type': 'object', 'required': ['ganZhi', 'startAge', 'endAge', 'startYear', 'endYear'], 'properties': {'endAge': {'type': 'number'}, 'ganZhi': {'type': 'string'}, 'endYear': {'type': 'number'}, 'startAge': {'type': 'number'}, 'startYear': {'type': 'number'}}, 'additionalProperties': False}}, 'startSolarDate': {'type': 'string'}}, 'additionalProperties': False}, 'fullReadingUrl': {'type': 'string'}, 'naiveComparison': {'type': 'object', 'required': ['differs', 'pillarsChanged', 'hourBranchShift'], 'properties': {'differs': {'type': 'boolean', 'description': 'True when a chart cast from raw clock time (no solar correction) would differ'}, 'pillarsChanged': {'type': 'array', 'items': {'type': 'string'}, 'description': "Which pillars differ, e.g. ['hour']"}, 'hourBranchShift': {'anyOf': [{'type': 'object', 'required': ['from', 'to'], 'properties': {'to': {'type': 'string'}, 'from': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'null'}], 'description': 'Hour-branch move caused by the correction (naive → corrected), null if unchanged'}}, 'description': 'What calculators that skip true solar time would get wrong for this exact birth', 'additionalProperties': False}, 'solarCorrection': {'type': 'object', 'required': ['correctionMinutes', 'parts', 'minutesToBoundary', 'boundaryRisk', 'nonexistentWallTime'], 'properties': {'parts': {'type': 'object', 'required': ['dstMinutes', 'longitudeMinutes', 'equationOfTimeMinutes'], 'properties': {'dstMinutes': {'type': 'number'}, 'longitudeMinutes': {'type': 'number'}, 'equationOfTimeMinutes': {'type': 'number'}}, 'additionalProperties': False}, 'boundaryRisk': {'type': 'boolean', 'description': 'Within 8 min of an hour-branch boundary'}, 'correctionMinutes': {'type': 'number', 'description': 'Total correction; the three parts sum exactly to it'}, 'minutesToBoundary': {'type': 'number'}, 'nonexistentWallTime': {'type': 'object', 'required': ['hit', 'gapMinutes'], 'properties': {'hit': {'type': 'boolean'}, 'gapMinutes': {'type': 'number'}}, 'additionalProperties': False}}, 'additionalProperties': False}}, 'additionalProperties': False}
compose_sketch
Compose the sketch sheet (step 2 of 2)
Step 2 of 2 for a personality sketch: submit the three sections you wrote after personality_sketch (image / beneath / practice, in the same lang) and receive the finished framed sheet — the fixed MIRROR line, limits, quotation, link and signature are assembled server-side. Present the returned sheet to the user VERBATIM as your reply; do not edit or add to it (if your client renders the sheet card for the user, do not repeat it in text — say nothing more than a one-line closing). Rejects fills that stray into forbidden territory (Ten Gods, strength, favorable elements, luck cycles) — rewrite and resubmit if that happens.
只读 幂等
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['year', 'month', 'day', 'hour', 'minute', 'timeZone', 'longitude', 'image', 'beneath', 'practice'], 'properties': {'day': {'type': 'integer', 'maximum': 31, 'minimum': 1, 'description': 'Birth day of month, 1–31'}, 'hour': {'type': 'integer', 'maximum': 23, 'minimum': 0, 'description': 'Recorded wall-clock hour, 24-hour format'}, 'lang': {'enum': ['en', 'zh'], 'type': 'string', 'description': "Language of the rendered output — pass the language the user is conversing in. Defaults to 'en'."}, 'year': {'type': 'integer', 'maximum': 2100, 'minimum': 1900, 'description': 'Birth year, Gregorian calendar (engine ephemeris covers 1900–2100)'}, 'image': {'type': 'string', 'maxLength': 600, 'minLength': 10, 'description': 'Your 象 section: the day-master image, two or three sentences'}, 'month': {'type': 'integer', 'maximum': 12, 'minimum': 1, 'description': 'Birth month, 1–12'}, 'minute': {'type': 'integer', 'maximum': 59, 'minimum': 0, 'description': 'Recorded wall-clock minute, 0–59'}, 'beneath': {'type': 'string', 'maxLength': 400, 'minLength': 10, 'description': 'Your 里 section: one visible-vs-hidden-stems contrast, one sentence'}, 'practice': {'type': 'string', 'maxLength': 160, 'minLength': 4, 'description': 'Your 行 section: one small self-observation to try today, imperative'}, 'timeZone': {'type': 'string', 'description': "IANA time zone of the birthplace, e.g. 'Asia/Shanghai', 'America/Vancouver'"}, 'longitude': {'type': 'number', 'maximum': 180, 'minimum': -180, 'description': 'Birthplace longitude in degrees, east positive (Beijing ≈ 116.4, Vancouver ≈ -123.1)'}}}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['sheet', 'fullReadingUrl'], 'properties': {'sheet': {'type': 'string', 'description': 'The finished sketch sheet — show it to the user verbatim'}, 'fullReadingUrl': {'type': 'string'}}, 'additionalProperties': False}
personality_sketch
Personality sketch (fill-in template)
Step 1 of 2 for a personality sketch. Casts the chart and returns the chart facts plus a fill-in template (象 image / 里 beneath / 行 practice) for YOU, the assistant, to write — a short literary sketch grounded only in the returned facts, within the stated limits (no strength verdict, no favorable elements, no Ten Gods, no luck-cycle reading). Step 2: pass your three texts to compose_sketch and present its framed sheet verbatim. Deterministic facts; the prose is yours; the framing is the server’s.
只读 幂等
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['year', 'month', 'day', 'hour', 'minute', 'timeZone', 'longitude'], 'properties': {'day': {'type': 'integer', 'maximum': 31, 'minimum': 1, 'description': 'Birth day of month, 1–31'}, 'hour': {'type': 'integer', 'maximum': 23, 'minimum': 0, 'description': 'Recorded wall-clock hour, 24-hour format'}, 'lang': {'enum': ['en', 'zh'], 'type': 'string', 'description': "Language of the rendered output — pass the language the user is conversing in. Defaults to 'en'."}, 'year': {'type': 'integer', 'maximum': 2100, 'minimum': 1900, 'description': 'Birth year, Gregorian calendar (engine ephemeris covers 1900–2100)'}, 'month': {'type': 'integer', 'maximum': 12, 'minimum': 1, 'description': 'Birth month, 1–12'}, 'minute': {'type': 'integer', 'maximum': 59, 'minimum': 0, 'description': 'Recorded wall-clock minute, 0–59'}, 'timeZone': {'type': 'string', 'description': "IANA time zone of the birthplace, e.g. 'Asia/Shanghai', 'America/Vancouver'"}, 'longitude': {'type': 'number', 'maximum': 180, 'minimum': -180, 'description': 'Birthplace longitude in degrees, east positive (Beijing ≈ 116.4, Vancouver ≈ -123.1)'}}}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['dayMaster', 'pillars', 'season', 'boundaryRisk', 'fullReadingUrl'], 'properties': {'season': {'type': 'object', 'required': ['monthBranch', 'zh', 'en'], 'properties': {'en': {'type': 'string'}, 'zh': {'type': 'string'}, 'monthBranch': {'type': 'string'}}, 'description': 'Season of the month branch (deterministic lookup)', 'additionalProperties': False}, 'pillars': {'type': 'object', 'required': ['year', 'month', 'day', 'hour'], 'properties': {'day': {'type': 'object', 'required': ['ganZhi', 'hiddenStems', 'naYin', 'naYinEn'], 'properties': {'naYin': {'type': 'string', 'description': 'Na Yin of the pillar (Chinese)'}, 'ganZhi': {'type': 'string', 'description': 'Stem-branch pair, e.g. 庚午'}, 'naYinEn': {'type': 'string', 'description': 'Na Yin, site-locked English name'}, 'hiddenStems': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Hidden stems of the branch, principal qi first'}}, 'additionalProperties': False}, 'hour': {'type': 'object', 'required': ['ganZhi', 'hiddenStems', 'naYin', 'naYinEn'], 'properties': {'naYin': {'type': 'string', 'description': 'Na Yin of the pillar (Chinese)'}, 'ganZhi': {'type': 'string', 'description': 'Stem-branch pair, e.g. 庚午'}, 'naYinEn': {'type': 'string', 'description': 'Na Yin, site-locked English name'}, 'hiddenStems': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Hidden stems of the branch, principal qi first'}}, 'additionalProperties': False}, 'year': {'type': 'object', 'required': ['ganZhi', 'hiddenStems', 'naYin', 'naYinEn'], 'properties': {'naYin': {'type': 'string', 'description': 'Na Yin of the pillar (Chinese)'}, 'ganZhi': {'type': 'string', 'description': 'Stem-branch pair, e.g. 庚午'}, 'naYinEn': {'type': 'string', 'description': 'Na Yin, site-locked English name'}, 'hiddenStems': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Hidden stems of the branch, principal qi first'}}, 'additionalProperties': False}, 'month': {'type': 'object', 'required': ['ganZhi', 'hiddenStems', 'naYin', 'naYinEn'], 'properties': {'naYin': {'type': 'string', 'description': 'Na Yin of the pillar (Chinese)'}, 'ganZhi': {'type': 'string', 'description': 'Stem-branch pair, e.g. 庚午'}, 'naYinEn': {'type': 'string', 'description': 'Na Yin, site-locked English name'}, 'hiddenStems': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Hidden stems of the branch, principal qi first'}}, 'additionalProperties': False}}, 'additionalProperties': False}, 'dayMaster': {'type': 'object', 'required': ['gan', 'pinyin', 'element', 'elementEn', 'emoji', 'image', 'imageEn', 'motto', 'mottoEn'], 'properties': {'gan': {'type': 'string'}, 'emoji': {'type': 'string', 'description': 'Identity-seal emoji for the day master (ten-stem lookup)'}, 'image': {'type': 'string', 'description': 'Traditional image of the stem, e.g. 钗钏之金'}, 'motto': {'type': 'string', 'description': 'Fixed brand motto for this day master (Chinese)'}, 'pinyin': {'type': 'string'}, 'element': {'type': 'string', 'description': 'Five-element of the day stem (Chinese)'}, 'imageEn': {'type': 'string'}, 'mottoEn': {'type': 'string'}, 'elementEn': {'type': 'string'}}, 'additionalProperties': False}, 'boundaryRisk': {'type': 'boolean'}, 'fullReadingUrl': {'type': 'string'}}, 'additionalProperties': False}
已添加
compose_sketch
2026年9月25日 02:40
已添加
personality_sketch
2026年9月25日 02:40
已添加
cast_chart
2026年9月25日 02:40