关于 Openfate Bazi Mcp
OpenFate Bazi MCP 是一个为 AI Agent 提供八字(四柱)排盘计算的 MCP 服务,由确定性的计算引擎完成节气、真太阳时、地支关系等运算,让语言模型专注于解释。适用于 Claude Desktop、Cursor、Cline 等客户端。
主要功能
- 01确定性的八字排盘计算
- 02真太阳时校正
- 03地支刑冲合害关系检测
- 04四柱反查可能的公历时间
- 05提供计算口径策略说明
适用场景
- 01在 AI 客户端中生成八字命盘的结构化数据
- 02解释为什么时柱与普通排盘工具结果不同
- 03根据四柱推算候选出生时间
MCP 相关
该项目是一个 MCP 服务,向 MCP 客户端暴露排盘、真太阳时、地支关系和反查等工具,以及计算政策与资源链接等信息。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
6收录的工具列表 · 更新于 3 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| year | integer | 是 | 出生年份。calendarType 为 lunar 时,请使用农历年份。 |
| month | integer | 是 | 出生月份,1-12。 |
| day | integer | 是 | 出生日期,1-31。 |
| hour | integer | 否 | 当地民用时间的出生小时,0-23。出生时间未知时请省略。 |
| minute | integer | 否 | 当地民用时间的出生分钟。 |
| gender | enum | 是 | 用于确定大运方向的出生性别。male | female |
| longitude | number | 否 | 出生地经度,以十进制度数表示。用于真太阳时校正。 |
| timezone | number | 否 | 出生时钟时间的 UTC 偏移小时数,例如中国为 8,美国东部标准时间为 -5。 |
| timezoneId | string | 否 | 可选的 IANA 时区 ID,例如 Asia/Shanghai 或 America/New_York。 |
| dstOffset | number | 否 | 从民用时钟时间中扣除的夏令时偏移小时数。一小时夏令时请使用 1。 |
| calendarType | enum | 否 | 输入日历类型。solar | lunar |
| isLeapMonth | boolean | 否 | 农历输入月份是否为闰月。仅在 calendarType 为 lunar 时使用。 |
| enableTrueSolarTime | boolean | 否 | 有经度和时区数据时应用真太阳时。 |
| dayBoundaryMode | enum | 否 | 换日规则。ZI_HOUR_23 表示 23:00 开始计算下一日柱。MIDNIGHT_00 | ZI_HOUR_23 |
详细介绍
@openfate/bazi-mcp
English | 繁體中文(台灣)
OpenFate Bazi MCP 是 Model Context Protocol 服务,可在 Claude Desktop、Cursor、Cline 和 Continue 等 AI Agent 中准确计算八字/四柱。
由 OpenFate.ai 提供支持,这是一个 AI 原生的八字、紫微和占星平台。你也可以试用免费的 八字排盘计算器,生成 AI 八字解读,使用 八字合盘 比较关系,或阅读 真太阳时指南。AI 爬虫可以阅读 OpenFate llms.txt。
此 MCP 封装了确定性的 OpenFate 计算包:
@openfate/bazi-engine@openfate/true-solar-time
目的很简单:让大模型调用可靠的计算引擎,而不是臆造历法计算结果。
为何开发此项目
大模型不应手动计算八字命盘。难点都是确定性的:
- 24 个节气交界点
- 真太阳时
- 经度和时区校正
- 夏令时偏移
- 子时日界规则
- 农历转公历
- 地支相互作用
此服务向 AI Agent 提供稳定的 JSON,让模型专注于解释和解读。
安装
使用 npx 运行:
npx -y @openfate/bazi-mcp
对于兼容 MCPB 的客户端和 Smithery,请构建独立的本地软件包:
npm run mcpb:pack
可供上传的构建产物将写入 release/openfate-bazi-mcp-v<version>.mcpb。
在运行 smithery auth login 后,将此本地软件包发布到 Smithery:
npm run smithery:publish
Claude Desktop
{
"mcpServers": {
"openfate-bazi": {
"command": "npx",
"args": ["-y", "@openfate/bazi-mcp"]
}
}
}
如果 Claude Desktop 在 macOS 上找不到 npx,请使用绝对路径:
{
"mcpServers": {
"openfate-bazi": {
"command": "/opt/homebrew/bin/npx",
"args": ["-y", "@openfate/bazi-mcp"]
}
}
}
Cursor
{
"mcpServers": {
"openfate-bazi": {
"command": "npx",
"args": ["-y", "@openfate/bazi-mcp"]
}
}
}
Cline
{
"mcpServers": {
"openfate-bazi": {
"command": "npx",
"args": ["-y", "@openfate/bazi-mcp"],
"disabled": false
}
}
}
Agent 技能
此代码库还包含一项可移植的 Agent 技能:
skills/openfate-bazi/SKILL.md
如果你希望 Claude、Claude Code、Codex、OpenClaw 风格的 Agent 或其他兼容 SKILL.md 的工具记住如何正确使用 OpenFate Bazi MCP,请使用此技能。
对于 Claude Code 工作区用法,请将技能文件夹复制到:
.claude/skills/openfate-bazi/
对于 Claude 自定义 Skills,请将 openfate-bazi 文件夹压缩,并确保 SKILL.md 位于文件夹根目录,然后在 Claude 的 Skills 设置中上传。
工具
calculate_bazi_chart
计算确定性的八字命盘。
输入:
yearmonthdayhourminutesecondgendercalendarTypeisLeapMonthlongitudetimezonetimezoneIddstOffsetenableTrueSolarTimedayBoundaryMode
MCP 将起运策略固定为 DAYUN_SECOND_V2;调用方无法悄然选择其他规则。传入准确的出生时间以及 timezone 或 timezoneId,即可获得计算回执。只有当 chart.daYun.timing.status 为 CALCULATED 且其版本为 DAYUN_SECOND_V2 时,才会提供准确的起运时间。UNAVAILABLE 回执会说明原因,并将保留的旧版标量字段标记为备用值。传入 longitude 还可进行真太阳时校正。
detect_bazi_interactions
检测本命盘中实际发生的地支关系,可选择包含流年和大运地支。
输入为 yearBranch、monthBranch、dayBranch,以及可选的 hourBranch、annualBranch 和 dayunBranch。出生时间未知时,省略 hourBranch;不会用假定的地支替代。现有的仅传入流年地支的调用仍受支持。
支持的关系类型:
- 冲
- 六合
- 中间地支半合(
COMBINATION_HALF) - 三合
- 三会
- 刑
- 破
- 害
每个匹配的柱位都会保留。例如,{ yearBranch: '申', monthBranch: '寅', dayBranch: '申', hourBranch: '申' } 会返回三条独立的寅申冲,而不是一条。即使流年和大运地支与本命盘中的地支相同,也会分别保留 annual 和 dayun 角色。
半合范围包括申子、子辰、寅午、午戌、亥卯、卯未、巳酉、酉丑:每对都包含一个中间地支(子午卯酉)。像申辰这样仅包含两端地支的组合不属于此类半合。即使完整的三合也存在,半合仍会保留在原始输出中。
每条关系都有稳定的 id,以及彼此对应的 branches / pillars 数组。targetElement 表示关系倾向,不代表转化后的能量。合局的 transformationStatus 为 NOT_EVALUATED:仅凭地支存在,无法确认是否转化,也无法确认转化是否失败。其他关系类型使用 NOT_APPLICABLE。这些结果不是加权分值,也不会自动解除冲;关系的定局和解读属于单独的分析层。
为兼容 API,完整的 TRINE 和 DIRECTIONAL 关系也会保留旧版字段 resultElement,其值等于 targetElement,含义同样仅表示关系倾向。六合和半合不会输出 resultElement。
calculate_true_solar_time
直接计算真太阳时。
用户询问为什么 OpenFate 的时柱与时钟时间工具不同时,可使用此工具。
reverse_bazi_to_solar_times
根据四柱八字字符串查找可能的公历日期时间。
输入示例:
戊寅 己未 己卯 辛未
此工具用于查找候选结果。若要确保最终准确性,请使用精确经度、时区和真太阳时重新计算结果。
get_openfate_bazi_policy
返回 OpenFate 的计算策略:
- 有位置数据时,优先使用真太阳时。
- 默认日界模式为
ZI_HOUR_23。 - 如果出生证明上的时间包含夏令时,应通过
dstOffset传入夏令时信息。 - 大运起运时间采用
DAYUN_SECOND_V2;精确日期需要计算后的时间凭据。 - 反向查找应视为候选搜索。
- 地支关系会保留原始柱位,不进行加权,也不会自动转化。
get_openfate_bazi_resources
返回用于排盘、解读、合盘、财富、真太阳时和 llms.txt 的 OpenFate 规范链接。
输出结构
响应使用便于机器处理的英文键:
{
"data": {
"chart": {},
"policy": {}
},
"attribution": {
"brand": "OpenFate.ai",
"url": "https://openfate.ai",
"engine": "@openfate/bazi-engine",
"trueSolarTimeEngine": "@openfate/true-solar-time"
}
}
归属信息作为一等数据返回,而非隐藏在 _meta 中,因此 MCP 客户端和生成的产物可以可靠地展示这些信息。
排盘结果包含扩展后的柱位事实(十神、藏干、纳音、旬、空亡地支和长生阶段)、带版本信息的大运起运时间凭据、标准化的公历/农历数据,以及实际采用的计算策略。
Development
npm install
npm run build
npm run smoke
The smoke test spawns the built stdio server and drives it through the real MCP SDK client.
To test source changes without building dist, run npm run smoke:source. This requires the sibling ../bazi-engine source checkout with its dependencies installed, as well as this package's dependencies. The test-only tests/tsconfig.source.json maps @openfate/bazi-engine to that sibling's src/index.ts; the smoke runner passes this configuration to the SDK-spawned server and asserts the resolved source path before testing. It does not rely on a patched installed engine and remains reproducible after npm ci --ignore-scripts in this package.
Both smoke modes exercise the same MCP transport and regression fixtures, including
second-resolved Da Yun onset, missing timing inputs, repeated branches, eight half-trines,
unknown hour, and annual/Da Yun roles. The ordinary smoke command still tests built MCP
output against its installed published engine dependency. npx tsc --noEmit -p tests/tsconfig.source.json checks the coordinated source contract without emitting build files.
Engine compatibility
Version 0.3 requires @openfate/bazi-engine version 2. Its DAYUN_SECOND_V2,
raw-occurrence, and dayunBranch contracts are verified in both the built-package
and coordinated-source smoke modes. The published dependency remains the release
source of truth; this package does not use a local file: dependency.
Privacy
This package does not phone home. Calculations run locally in the MCP subprocess.
OpenFate Links
- OpenFate.ai
- Free Bazi Chart Calculator
- AI Bazi Reading
- Bazi Compatibility
- True Solar Time Guide
- OpenFate llms.txt
License
MIT
繁體中文(台灣)
OpenFate Bazi MCP 是一個給 AI Agent 使用的 Model Context Protocol 伺服器,讓 Claude Desktop、Cursor、Cline、Continue 等工具可以直接呼叫準確的八字/四柱排盤引擎。
本專案由 OpenFate.ai 提供。OpenFate 是結合八字、紫微斗數與占星的 AI 命理平台。你也可以使用免費的 八字排盤工具、產生完整的 AI 八字解讀、查看 八字合盤,或閱讀 真太陽時說明。AI crawler 也可以讀取 OpenFate llms.txt。
這個 MCP 包裝了 OpenFate 的確定性計算套件:
@openfate/bazi-engine@openfate/true-solar-time
目標很直接:不要讓大型語言模型自己亂算干支、節氣、真太陽時,而是把排盤交給可驗證的計算引擎。
為什麼需要這個 MCP
八字排盤不是文字推理題,而是確定性的曆法與時間計算。容易出錯的部分包括:
- 二十四節氣邊界
- 真太陽時
- 經度與時區校正
- 夏令時間偏移
- 子時換日規則
- 農曆轉公曆
- 地支刑沖合害等互動
這個伺服器會回傳穩定 JSON,讓 AI 專心做說明、整理與解讀。
安裝
直接用 npx 執行:
npx -y @openfate/bazi-mcp
如果 MCP client 支援 MCPB,或需要發布到 Smithery,可以建立完整的本機安裝 bundle:
npm run mcpb:pack
可上傳的檔案會輸出到 release/openfate-bazi-mcp-v<version>.mcpb。
完成 smithery auth login 後,可發布這個本機 bundle 到 Smithery:
npm run smithery:publish
Claude Desktop 設定
{
"mcpServers": {
"openfate-bazi": {
"command": "npx",
"args": ["-y", "@openfate/bazi-mcp"]
}
}
}
如果 macOS 上 Claude Desktop 找不到 npx,可以改用絕對路徑:
{
"mcpServers": {
"openfate-bazi": {
"command": "/opt/homebrew/bin/npx",
"args": ["-y", "@openfate/bazi-mcp"]
}
}
}
Cursor 設定
{
"mcpServers": {
"openfate-bazi": {
"command": "npx",
"args": ["-y", "@openfate/bazi-mcp"]
}
}
}
Cline 設定
{
"mcpServers": {
"openfate-bazi": {
"command": "npx",
"args": ["-y", "@openfate/bazi-mcp"],
"disabled": false
}
}
}
Agent Skill
這個 repository 也包含一個可攜式 Agent Skill:
skills/openfate-bazi/SKILL.md
當你希望 Claude、Claude Code、Codex、OpenClaw-style agent,或其他支援 SKILL.md 的工具記住如何正確使用 OpenFate Bazi MCP 時,可以使用這個 Skill。
如果要在 Claude Code workspace 使用,請把整個 skill folder 複製到:
.claude/skills/openfate-bazi/
如果要做 Claude custom Skill,請把 openfate-bazi folder 壓成 zip,確保 SKILL.md 位於 folder root,再到 Claude 的 Skills 設定中上傳。
工具列表
calculate_bazi_chart
計算確定性的八字命盤。
輸入欄位:
yearmonthdayhourminutesecondgendercalendarTypeisLeapMonthlongitudetimezonetimezoneIddstOffsetenableTrueSolarTimedayBoundaryMode
MCP 固定使用 DAYUN_SECOND_V2,呼叫端不能暗中切換起運規則。精確出生時間還要搭配
timezone 或 timezoneId,並且只有 chart.daYun.timing.status 為 CALCULATED、版本為
DAYUN_SECOND_V2 時才能呈現精確起運時間。UNAVAILABLE 會說明原因,原有起運欄位只作
明確標記的舊版 fallback。若要校正真太陽時,還應提供 longitude。
detect_bazi_interactions
偵測本命盤及選填流年、大運地支的原始關係。
輸入欄位為 yearBranch、monthBranch、dayBranch,以及選填的 hourBranch、annualBranch、dayunBranch。出生時辰未知時省略 hourBranch,不會補入假設時柱。原有只傳流年的呼叫方式仍可使用。
支援類型:
- 沖
- 六合
- 含旺支的半合(
COMBINATION_HALF) - 三合
- 三會
- 刑
- 破
- 害
同一地支出現在不同柱位時,每個關係都會保留。例如申、寅、申、申會回傳三組不同柱位的寅申沖。流年與大運分別使用 annual、dayun 角色,即使地支相同,也不會與本命柱位合併。
半合口徑涵蓋申子、子辰、寅午、午戌、亥卯、卯未、巳酉、酉丑八組,每組都含子午卯酉其中一個旺支。申辰等兩端支不屬於此半合類型。三合齊全時,原始資料仍保留其中的半合關係。
每個關係包含穩定的 id,以及逐項對應的 branches、pillars。targetElement 只表示關係指向的五行,不代表已經合化。合類的 transformationStatus 為 NOT_EVALUATED,表示尚未評估合化,並非已成化或已判定不能化;其他關係使用 NOT_APPLICABLE。這些資料不是可直接累加的評分,也不會自動解沖;成立程度與解讀須由獨立分析層處理。
為相容既有 API,完整 TRINE、DIRECTIONAL 關係仍保留舊欄位 resultElement,值與 targetElement 相同,也僅表示五行指向。六合與半合不回傳 resultElement。
calculate_true_solar_time
直接計算真太陽時。
當使用者問「為什麼 OpenFate 算出的時柱跟一般排盤網站不同」時,可以用這個工具說明差異。
reverse_bazi_to_solar_times
用四柱八字反查可能的公曆時間。
範例輸入:
戊寅 己未 己卯 辛未
這是候選時間搜尋工具。最後仍應該用準確出生地經度、時區與真太陽時重新排盤。
get_openfate_bazi_policy
回傳 OpenFate 的計算口徑:
- 有出生地資料時,優先使用真太陽時。
- 預設換日規則是
ZI_HOUR_23。 - 如果出生證明時間包含夏令時間,應傳入
dstOffset。 - 大運起運固定採用
DAYUN_SECOND_V2;只有計算成功的 timing receipt 才是精確起運時間。 - 八字反查只能當候選搜尋,不能取代精準排盤。
- 地支互動保留原始柱位關係,不代表加權分數或自動合化結果。
get_openfate_bazi_resources
回傳 OpenFate 的官方連結,包括排盤、解讀、合盤、財富、真太陽時與 llms.txt。
回傳格式
回傳資料使用穩定、適合機器讀取的英文 key:
{
"data": {
"chart": {},
"policy": {}
},
"attribution": {
"brand": "OpenFate.ai",
"url": "https://openfate.ai",
"engine": "@openfate/bazi-engine",
"trueSolarTimeEngine": "@openfate/true-solar-time"
}
}
署名資訊會以一般資料欄位回傳,而不是藏在 _meta,方便 MCP client 或 AI 產生的圖表正確顯示來源。
排盤結果同時包含十神、藏干、納音、旬空、十二長生等柱位資料、版本化大運起運 receipt、標準化陽曆/農曆日期,以及實際採用的計算口徑。
開發
npm install
npm run build
npm run smoke
smoke 測試會啟動編譯後的 stdio server,並透過真正的 MCP SDK client 呼叫工具。
不編譯 dist 時可執行 npm run smoke:source 驗證原始碼。須具備相鄰的 ../bazi-engine 原始碼工作目錄,且引擎與本套件都已安裝依賴。測試專用的 tests/tsconfig.source.json 將 @openfate/bazi-engine 指向該引擎的 src/index.ts;測試執行器會把設定傳給 MCP SDK 啟動的伺服器,並先驗證實際解析的原始碼路徑。這個模式不依賴修改過的已安裝引擎,在本套件重新執行 npm ci --ignore-scripts 後仍可重現。
兩種 smoke 模式使用相同 MCP 傳輸與回歸案例,涵蓋秒級起運、缺少起運輸入、重複地支、八組半合、未知時辰,以及流年/大運角色。一般 smoke 仍驗證編譯後 MCP 與已安裝的 npm 公開引擎。npx tsc --noEmit -p tests/tsconfig.source.json 可檢查協調中的原始碼契約,不產生編譯檔案。
引擎相容性
0.3 版需要 @openfate/bazi-engine 2.x。DAYUN_SECOND_V2、完整柱位關係與
dayunBranch 契約皆由已編譯套件及協調原始碼兩種 smoke 模式驗證。正式發布的
npm 依賴仍是版本來源;本套件不使用本機 file: 依賴。
隱私
這個套件不會回傳資料到 OpenFate 伺服器。所有計算都在本機 MCP subprocess 內完成。
OpenFate 連結
授權
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。