# OpenFate Bazi MCP (npm · @openfate/bazi-mcp)

OpenFate Bazi MCP with True Solar Time, Four Pillars, Da Yun, and branch interactions.

- Trust score: 71/100 (medium)
- Change this week: +33
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- npm · `@openfate/bazi-mcp`: 71/100 (this document), [markdown](https://verifymcp.io/servers/openfate-ai-bazi-mcp/openfate-bazi-mcp.md), [page](https://verifymcp.io/servers/openfate-ai-bazi-mcp/openfate-bazi-mcp)

## Channel facts

- Registry: `npm`
- Package: `@openfate/bazi-mcp`
- Version: `0.2.6`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Supply Chain Security**: 87/100
  - No malware found by supply-chain analysis.
  - Only part of the dependency tree could be resolved (98 of 102), so this covers what we could see, not the whole tree.
  - No install/post-install scripts declared.
  - Only part of the dependency tree could be resolved (98 of 102), so this covers what we could see, not the whole tree.
- **Provenance & Transparency**: 71/100
  - Repository check failed: the declared repository URL redirects; it must resolve directly.
  - Cryptographically verified build provenance (signed, bound to openfate-ai/bazi-mcp).
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 32 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 66/100
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 864 tokens (~144/item across 6 items; 6 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 23/100
  - Stability observed for 7 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 95/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 85% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add openfate-ai-bazi-mcp -- npx -y @openfate/bazi-mcp
```

### Codex

```bash
codex mcp add openfate-ai-bazi-mcp -- npx -y @openfate/bazi-mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "openfate-ai-bazi-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@openfate/bazi-mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add openfate-ai-bazi-mcp --command npx --arg -y --arg @openfate/bazi-mcp
```

### Hermes

```yaml
mcp_servers:
  openfate-ai-bazi-mcp:
    command: "npx"
    args: ["-y", "@openfate/bazi-mcp"]
```

### Other

```json
{
  "mcpServers": {
    "openfate-ai-bazi-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@openfate/bazi-mcp"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-03 (score 71, +3)

- [functional improvement] Stability: unverified → 0.23

### 2026-08-02 (score 68, +54)

- [security improvement] Known CVEs: unverified → partial
- [security improvement] Install scripts: unverified → pass
- [security improvement] Provenance: unverified → pass
- [security improvement] Malware scan: unverified → pass
- [security] Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window).
- [security] The attested source repository moved: openfate-ai/bazi-mcp
- [functional regression] Security disclosure: fail → unverified
- [functional regression] Tool coverage: 100 → unverified
- [functional improvement] License: unverified → pass
- [functional improvement] Dependency health: unverified → partial
- [functional improvement] Maintenance: unverified → pass
- [functional improvement] MCP protocol: unverified → pass
- [functional improvement] Schema quality: unverified → good
- [functional] First check of Schema quality: unverified
- [functional] Licence: MIT

### 2026-07-31 (score 14, −6)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 20, −18)

- [security regression] Malware scan: pass → unverified

### 2026-07-27 (score 38)

First indexed and scored.

## MCP tools (6)

### `calculate_bazi_chart` (~341 tokens)

Calculate Bazi Chart

Calculate a deterministic OpenFate Bazi/Four Pillars chart with True Solar Time correction, Day Master, Da Yun cycles, and branch interactions. For best accuracy, pass longitude plus timezone or timezoneId.

Input parameters:

- `calendarType` (string): Input calendar type.
- `day` (integer, required): Birth day, 1-31.
- `dayBoundaryMode` (string): Day-change rule. ZI_HOUR_23 means 23:00 starts the next day pillar.
- `dstOffset` (number): Daylight saving offset in hours to remove from civil clock time. Use 1 for one-hour DST.
- `enableTrueSolarTime` (boolean): Apply true solar time when longitude and timezone data are available.
- `gender` (string, required): Birth gender used for Da Yun direction.
- `hour` (integer): Birth hour in local civil time, 0-23. Omit when birth time is unknown.
- `isLeapMonth` (boolean): Whether the lunar input month is a leap month. Used only when calendarType is lunar.
- `longitude` (number): Birthplace longitude in decimal degrees. Enables true solar time correction.
- `minute` (integer): Birth minute in local civil time.
- `month` (integer, required): Birth month, 1-12.
- `timezone` (number): UTC offset in hours for the birth clock time, such as 8 for China or -5 for US Eastern Standard Time.
- `timezoneId` (string): Optional IANA timezone ID, such as Asia/Shanghai or America/New_York.
- `year` (integer, required): Birth year. Use the lunar year when calendarType is lunar.

### `detect_bazi_interactions` (~122 tokens)

Detect Bazi Interactions

Detect deterministic Earthly Branch interactions for natal charts, synastry checks, annual triggers, or target-branch comparison. Covers clashes, combinations, trines, directionals, punishments, destructions, and harms.

Input parameters:

- `annualBranch`: Optional annual or target branch for dynamic interaction detection.
- `dayBranch` (string, required): Natal day branch.
- `hourBranch` (string): Natal hour branch. Omit when birth time is unknown.
- `monthBranch` (string, required): Natal month branch.
- `yearBranch` (string, required): Natal year branch.

### `calculate_true_solar_time` (~143 tokens)

Calculate True Solar Time

Calculate OpenFate True Solar Time from civil birth time, longitude, timezone, and optional DST offset. Use this when explaining why the hour pillar may differ from ordinary clock-time tools.

Input parameters:

- `day` (integer, required)
- `dstOffset` (number): Daylight saving offset in hours.
- `hour` (integer, required)
- `longitude` (number, required): Birthplace longitude in decimal degrees.
- `minute` (integer)
- `month` (integer, required)
- `timezone` (number): UTC offset in hours for the clock time.
- `timezoneId` (string): IANA timezone ID, such as Asia/Shanghai.
- `year` (integer, required)

### `reverse_bazi_to_solar_times` (~152 tokens)

Reverse Bazi To Solar Times

Find possible Gregorian datetimes that produce a given four-pillar Bazi string. This is useful when a user only has a Bazi chart or screenshot. This lookup uses clock-time pillars without location-based true solar correction.

Input parameters:

- `bazi` (string, required): Four pillars separated by spaces, for example: 戊寅 己未 己卯 辛未.
- `dayBoundaryMode` (string): Day-change rule used during lookup.
- `endYear` (integer): End year for brute-force lookup. Defaults to the current year.
- `limit` (integer): Maximum number of matching datetimes to return.
- `startYear` (integer): Start year for brute-force lookup.

### `get_openfate_bazi_policy` (~29 tokens)

Get OpenFate Bazi Policy

Return OpenFate calculation policy and LLM guidance for Bazi chart calls.

### `get_openfate_bazi_resources` (~38 tokens)

Get OpenFate Bazi Resources

Return canonical OpenFate URLs for charting, readings, compatibility, wealth, true solar time, and AI crawler metadata.

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/openfate-ai-bazi-mcp/openfate-bazi-mcp#diagnostics

## Score history

- 2026-08-03: 71
- 2026-08-02: 68
- 2026-08-01: 14
- 2026-07-31: 14
- 2026-07-30: 20
- 2026-07-28: 38
- 2026-07-27: 38

## Links

- npm package: https://www.npmjs.com/package/@openfate/bazi-mcp
- Socket report: https://socket.dev/npm/package/@openfate/bazi-mcp
- Changelog RSS feed: https://verifymcp.io/servers/openfate-ai-bazi-mcp/openfate-bazi-mcp/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/openfate-ai-bazi-mcp/openfate-bazi-mcp/changelog.json
- HTML version of this page: https://verifymcp.io/servers/openfate-ai-bazi-mcp/openfate-bazi-mcp
