mingli-mcp


Namemingli-mcp JSON
Version 1.0.6 PyPI version JSON
download
home_pageNone
Summary命理MCP服务 - 支持紫微斗数、八字等多种命理系统
upload_time2025-10-28 06:21:32
maintainerNone
docs_urlNone
authorNone
requires_python>=3.8
licenseMIT
keywords mcp ziwei bazi fortune astrology
VCS
bugtrack_url
requirements py-iztro lunar_python bidict colorama python-dateutil python-dotenv fastapi uvicorn
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # 命理MCP服务 (Mingli MCP Server)

一个支持多种命理系统(紫微斗数、八字、占星等)的 Model Context Protocol (MCP) 服务器,专为 AI 工具(如 Cursor IDE)设计。

## ✨ 特性

### 🎯 核心特性
- ✅ **多命理系统支持**: 采用插件化架构,轻松扩展新的命理系统
  - ✅ 紫微斗数(已实现)
  - ✅ 八字(已实现)⭐ **新增**
  - 🔄 西方占星(预留接口)
- ✅ **多传输方式**: 支持stdio、HTTP、WebSocket等多种传输协议
- ✅ **MCP标准兼容**: 完全兼容 MCP 协议规范
- ✅ **易于扩展**: 清晰的抽象层设计,添加新系统只需3步

### 🔮 紫微斗数功能
- ✅ **完整排盘**: 十二宫、主星、辅星、杂耀、四化等
- ✅ **运势查询**: 大限、流年、流月、流日、流时
- ✅ **宫位分析**: 深度分析特定宫位的星曜配置
- ✅ **多种历法**: 支持阳历和农历输入
- ✅ **格式化输出**: JSON和Markdown两种输出格式

### 🎴 八字功能 ⭐ **新增**
- ✅ **四柱排盘**: 年月日时四柱、天干地支详细信息
- ✅ **十神分析**: 比肩、劫财、食神、伤官、偏财、正财、七杀、正官、偏印、正印
- ✅ **五行分析**: 金木水火土分数、百分比、平衡度
- ✅ **地支藏干**: 详细的地支藏干信息
- ✅ **运势查询**: 大运、流年分析
- ✅ **缺失分析**: 自动识别五行缺失并给出建议
- ✅ **多种历法**: 支持阳历和农历输入

## 📋 可用工具

### 1. get_ziwei_chart
获取紫微斗数完整排盘信息

**参数**:
- `date` (string, 必需): 出生日期 YYYY-MM-DD,如 "2000-08-16"
- `time_index` (integer, 必需): 时辰序号 0-12
  - 0=早子时(23-01), 1=丑时(01-03), 2=寅时(03-05), 3=卯时(05-07)
  - 4=辰时(07-09), 5=巳时(09-11), 6=午时(11-13), 7=未时(13-15)
  - 8=申时(15-17), 9=酉时(17-19), 10=戌时(19-21), 11=亥时(21-23)
  - 12=晚子时(23-01)
- `gender` (string, 必需): 性别 "男" 或 "女"
- `calendar` (string, 可选): 历法 "solar"(阳历) 或 "lunar"(农历), 默认 "solar"
- `is_leap_month` (boolean, 可选): 是否闰月,默认 false
- `format` (string, 可选): 输出格式 "json" 或 "markdown", 默认 "markdown"

**示例**:
```json
{
  "date": "2000-08-16",
  "time_index": 2,
  "gender": "女",
  "calendar": "solar"
}
```

### 2. get_ziwei_fortune
获取紫微斗数运势信息

**参数**:
- `birth_date` (string, 必需): 出生日期
- `time_index` (integer, 必需): 时辰序号
- `gender` (string, 必需): 性别
- `calendar` (string, 可选): 历法类型
- `query_date` (string, 可选): 查询日期,不填则为今天
- `format` (string, 可选): 输出格式

### 3. analyze_ziwei_palace
分析紫微斗数特定宫位

**参数**:
- `birth_date` (string, 必需): 出生日期
- `time_index` (integer, 必需): 时辰序号
- `gender` (string, 必需): 性别
- `palace_name` (string, 必需): 宫位名称,可选值:
  - 命宫、兄弟、夫妻、子女、财帛、疾厄
  - 迁移、仆役、官禄、田宅、福德、父母
- `calendar` (string, 可选): 历法类型
- `format` (string, 可选): 输出格式

### 4. list_fortune_systems
列出所有可用的命理系统

### 5. get_bazi_chart ⭐ **新增**
获取八字(四柱)排盘信息

**参数**:
- `date` (string, 必需): 出生日期 YYYY-MM-DD
- `time_index` (integer, 必需): 时辰序号 0-12
- `gender` (string, 必需): 性别 "男" 或 "女"
- `calendar` (string, 可选): 历法 "solar"(阳历) 或 "lunar"(农历), 默认 "solar"
- `is_leap_month` (boolean, 可选): 是否闰月,默认 false
- `format` (string, 可选): 输出格式 "json" 或 "markdown", 默认 "markdown"

**示例**:
```json
{
  "date": "2000-08-16",
  "time_index": 2,
  "gender": "女"
}
```

**输出包含**:
- 四柱八字(年月日时)
- 天干地支详细信息
- 十神分析(比肩、劫财等)
- 五行分数统计
- 地支藏干信息
- 生肖、日主等基本信息

### 6. get_bazi_fortune ⭐ **新增**
获取八字运势信息

**参数**:
- `birth_date` (string, 必需): 出生日期
- `time_index` (integer, 必需): 时辰序号
- `gender` (string, 必需): 性别
- `calendar` (string, 可选): 历法类型
- `query_date` (string, 可选): 查询日期,不填则为今天
- `format` (string, 可选): 输出格式

**输出包含**:
- 当前年龄
- 大运信息(年龄范围、干支)
- 流年信息(年份、干支、生肖)
- 本命八字

### 7. analyze_bazi_element ⭐ **新增**
分析八字五行强弱

**参数**:
- `birth_date` (string, 必需): 出生日期
- `time_index` (integer, 必需): 时辰序号
- `gender` (string, 必需): 性别
- `calendar` (string, 可选): 历法类型
- `format` (string, 可选): 输出格式

**输出包含**:
- 日主及其五行属性
- 五行分数和百分比
- 最旺/最弱五行
- 缺失五行
- 平衡度评价
- 补救建议

## 🚀 快速开始

### 在线体验
- **Smithery 部署**: [https://server.smithery.ai/@spyfree/mingli-mcp/mcp](https://server.smithery.ai/@spyfree/mingli-mcp/mcp)
- 添加到 Cursor: [![Install MCP Server](https://img.shields.io/badge/Cursor-Add+MCP+Server-blue?logo=cursor)](https://cursor.com/install-mcp?name=mingli&config=eyJjb21tYW5kIjoidXZ4IiwiYXJncyI6WyJtaW5nbGktbWNwIl19)
- 添加到 Claude Code: `claude mcp add mingli -- uvx mingli-mcp`
- 添加到 OpenAI CodeX: `codex mcp add mingli -- uvx mingli-mcp`

---

## 📦 安装方式

### 方式1: uvx (推荐)

使用 `uvx` 是最简单的安装方式,无需手动管理依赖:

在 `~/.cursor/mcp.json` 或对应IDE的MCP配置文件中添加:

```json
{
  "mcpServers": {
    "mingli": {
      "command": "uvx",
      "args": ["mingli-mcp"],
      "env": {
        "LOG_LEVEL": "INFO"
      }
    }
  }
}
```

### 方式2: Docker

使用 Docker 部署,适合服务器环境或需要隔离的场景:

```bash
# 下载配置文件
mkdir -p /opt/mingli-mcp
cd /opt/mingli-mcp
wget https://raw.githubusercontent.com/spyfree/mingli-mcp/main/docker-compose.yml

# 启动服务
docker-compose up -d
```

然后在MCP配置中使用HTTP连接:

```json
{
  "mcpServers": {
    "mingli": {
      "url": "http://localhost:8080/mcp"
    }
  }
}
```

### 方式3: 从源码安装

适合开发者或需要自定义的场景:

## 🛠️ 从源码安装

### 环境要求
- Python 3.8+
- Cursor IDE 或其他支持MCP的工具

### 1. 克隆项目
```bash
cd /Users/lix18854/Documents/code
# 项目已在 ziwei_mcp 目录中
cd ziwei_mcp
```

### 2. 创建虚拟环境(推荐)
```bash
python3 -m venv venv
source venv/bin/activate  # macOS/Linux
# 或
venv\Scripts\activate  # Windows
```

### 3. 安装依赖
```bash
pip install -r requirements.txt
```

### 4. 配置环境变量(可选)
```bash
cp examples/config/.env.example .env
# 编辑 .env 文件根据需要调整配置
```

### 5. 测试运行
```bash
chmod +x mingli_mcp.py
python mingli_mcp.py
```

### 6. 配置 Cursor MCP

编辑或创建 `~/.cursor/mcp.json`:

```json
{
  "mcpServers": {
    "mingli": {
      "command": "/Users/lix18854/Documents/code/ziwei_mcp/venv/bin/python",
      "args": ["/Users/lix18854/Documents/code/ziwei_mcp/mingli_mcp.py"],
      "env": {
        "LOG_LEVEL": "INFO"
      }
    }
  }
}
```

> **注意**: 请根据实际路径调整 `command` 和 `args`

### 7. 重启 Cursor
重启 Cursor IDE 以加载新的 MCP 配置。

## 📁 项目结构

```
ziwei_mcp/
├── mingli_mcp.py              # MCP服务器主入口
├── config.py                  # 配置管理
├── requirements.txt           # Python依赖
├── pyproject.toml            # 项目配置
├── .gitignore                # Git忽略文件
├── README.md                 # 项目文档
│
├── core/                      # 核心抽象层
│   ├── __init__.py
│   ├── base_system.py        # 命理系统抽象基类
│   ├── birth_info.py         # 生辰信息数据模型
│   └── chart_result.py       # 排盘结果数据模型
│
├── transports/                # 传输层(支持多种传输方式)
│   ├── __init__.py
│   ├── base_transport.py     # 传输层抽象基类
│   └── stdio_transport.py    # stdio传输实现(默认)
│
├── systems/                   # 命理系统实现
│   ├── __init__.py           # 系统注册中心
│   ├── ziwei/                # 紫微斗数(已实现)
│   │   ├── __init__.py
│   │   ├── ziwei_system.py  # 系统实现
│   │   └── formatter.py     # 结果格式化
│   ├── bazi/                 # 八字(已实现)
│   │   ├── __init__.py
│   │   ├── bazi_system.py   # 系统实现
│   │   └── formatter.py     # 结果格式化
│   └── astrology/            # 占星(预留)
│       └── __init__.py
│
├── utils/                     # 工具函数
│   ├── __init__.py
│   ├── validators.py         # 参数验证
│   └── formatters.py         # 响应格式化
│
├── docs/                      # 文档
│   ├── README.md             # 文档索引
│   ├── guides/               # 用户指南
│   ├── deployment/           # 部署文档
│   ├── architecture/         # 架构设计
│   └── development/          # 开发文档
│
├── examples/                  # 示例配置
│   └── config/               # 配置文件示例
│       ├── .env.example
│       ├── codex_config.toml.example
│       └── cursor_mcp_config.example.json
│
├── scripts/                   # 脚本工具
│   ├── tests/                # 测试脚本
│   └── check_ready_to_publish.sh
│
└── tests/                     # 单元测试
    └── __init__.py
```

## 🚀 扩展新命理系统

本项目采用插件化架构,添加新命理系统只需3步:

### 步骤1: 创建系统类
在 `systems/` 下创建新目录,实现 `BaseFortuneSystem` 接口:

```python
# systems/bazi/bazi_system.py
from core.base_system import BaseFortuneSystem

class BaziSystem(BaseFortuneSystem):
    def get_system_name(self) -> str:
        return "八字"
    
    def get_chart(self, birth_info):
        # 实现八字排盘逻辑
        return {...}
    
    # 实现其他必需方法...
```

### 步骤2: 注册系统
在 `systems/__init__.py` 中注册:

```python
from .bazi import BaziSystem
register_system('bazi', BaziSystem)
```

### 步骤3: 添加MCP工具
在 `mingli_mcp.py` 的 `_handle_tools_list()` 中添加工具定义。

就这么简单!无需修改核心框架代码。

## 🔧 传输层扩展

当前默认使用 stdio 传输(适用于 Cursor)。未来可扩展:

### HTTP传输(预留)
```python
# transports/http_transport.py
class HttpTransport(BaseTransport):
    def __init__(self, host, port):
        # 实现HTTP服务器
        pass
```

### WebSocket传输(预留)
```python
# transports/ws_transport.py
class WebSocketTransport(BaseTransport):
    def __init__(self, host, port):
        # 实现WebSocket服务器
        pass
```

## 💡 最佳实践

### 在 AI 助手中使用

与AI助手(如Claude、Cursor等)对话时,可以直接使用自然语言查询:

**紫微斗数示例**:
- "帮我排一个紫微斗数盘:1990年5月20日,午时,男性"
- "查询这个人今年的运势如何"
- "分析他的财帛宫"
- "看看他适合什么行业"

**八字示例**:
- "帮我算八字:1985年3月15日,卯时,女性"  
- "分析一下她的五行缺什么"
- "看看她今年的大运"
- "什么五行的颜色适合她"

**农历支持**:
- "排盘:农历1995年7月初七,酉时,女性"
- "注意指定是农历"

### 提示词技巧

**详细查询**:
```
请帮我详细分析:
- 出生日期:2000年8月16日
- 出生时辰:寅时(早上5点)
- 性别:女
- 使用紫微斗数系统
- 重点看事业宫和财帛宫
```

**对比分析**:
```
请对比两个人的八字:
人A:1990年5月20日,午时,男
人B:1992年3月15日,辰时,女
看看他们的五行是否相配
```

**运势追踪**:
```
请记住这个人的信息:1988年10月1日,未时,男性
然后每个月帮我分析当月运势
```

---

## 📚 使用示例

### 在 Cursor 中使用

直接在对话中提问:

1. **获取紫微排盘**:
```
帮我排一个紫微斗数盘:2000年8月16日,寅时,女性
```

2. **查询运势**:
```
查询2000年8月16日寅时出生的女性,今天的紫微运势
```

3. **分析宫位**:
```
分析上面这个人的命宫
```

4. **八字五行分析**:
```
帮我看看这个人的五行:1995年7月10日,申时,男性
```

### 编程调用

```python
from systems import get_system

# 获取紫微系统
ziwei = get_system('ziwei')

# 准备生辰信息
birth_info = {
    'date': '2000-08-16',
    'time_index': 2,  # 寅时
    'gender': '女',
    'calendar': 'solar'
}

# 获取排盘
chart = ziwei.get_chart(birth_info)
print(chart)

# 获取运势
from datetime import datetime
fortune = ziwei.get_fortune(birth_info, datetime.now())
print(fortune)

# 分析宫位
palace = ziwei.analyze_palace(birth_info, '命宫')
print(palace)
```

## 🧪 测试

```bash
# 运行测试(待实现)
pytest tests/

# 测试单个系统
python -m systems.ziwei.ziwei_system
```

## 📝 依赖说明

- **py-iztro**: 紫微斗数核心库,提供排盘算法
- **python-dotenv**: 环境变量管理
- **python-dateutil**: 日期处理

## 🗺️ 未来规划

- [ ] 完善八字系统实现
- [ ] 添加西方占星系统
- [ ] 实现合盘功能
- [ ] HTTP/WebSocket传输层
- [ ] 命理知识库集成
- [ ] AI解读功能
- [ ] 更多运势分析维度

## 🤝 贡献

欢迎贡献代码、报告问题或提出建议!

## 📄 许可证

MIT License

## 🙏 致谢

- [iztro](https://github.com/SylarLong/iztro) - 紫微斗数 JavaScript 库
- [py-iztro](https://github.com/x-haose/py-iztro) - Python 移植版本
- [MCP Protocol](https://modelcontextprotocol.io/) - Model Context Protocol 规范

---

**🔮 开始你的命理探索之旅!**

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "mingli-mcp",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": "mcp, ziwei, bazi, fortune, astrology",
    "author": null,
    "author_email": "spyfree <srlixin@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/9d/2b/20d4632d49a850929270f2930e7fb2ee95b8609139a6c094d9af4d23630a/mingli_mcp-1.0.6.tar.gz",
    "platform": null,
    "description": "# \u547d\u7406MCP\u670d\u52a1 (Mingli MCP Server)\n\n\u4e00\u4e2a\u652f\u6301\u591a\u79cd\u547d\u7406\u7cfb\u7edf\uff08\u7d2b\u5fae\u6597\u6570\u3001\u516b\u5b57\u3001\u5360\u661f\u7b49\uff09\u7684 Model Context Protocol (MCP) \u670d\u52a1\u5668\uff0c\u4e13\u4e3a AI \u5de5\u5177\uff08\u5982 Cursor IDE\uff09\u8bbe\u8ba1\u3002\n\n## \u2728 \u7279\u6027\n\n### \ud83c\udfaf \u6838\u5fc3\u7279\u6027\n- \u2705 **\u591a\u547d\u7406\u7cfb\u7edf\u652f\u6301**: \u91c7\u7528\u63d2\u4ef6\u5316\u67b6\u6784\uff0c\u8f7b\u677e\u6269\u5c55\u65b0\u7684\u547d\u7406\u7cfb\u7edf\n  - \u2705 \u7d2b\u5fae\u6597\u6570\uff08\u5df2\u5b9e\u73b0\uff09\n  - \u2705 \u516b\u5b57\uff08\u5df2\u5b9e\u73b0\uff09\u2b50 **\u65b0\u589e**\n  - \ud83d\udd04 \u897f\u65b9\u5360\u661f\uff08\u9884\u7559\u63a5\u53e3\uff09\n- \u2705 **\u591a\u4f20\u8f93\u65b9\u5f0f**: \u652f\u6301stdio\u3001HTTP\u3001WebSocket\u7b49\u591a\u79cd\u4f20\u8f93\u534f\u8bae\n- \u2705 **MCP\u6807\u51c6\u517c\u5bb9**: \u5b8c\u5168\u517c\u5bb9 MCP \u534f\u8bae\u89c4\u8303\n- \u2705 **\u6613\u4e8e\u6269\u5c55**: \u6e05\u6670\u7684\u62bd\u8c61\u5c42\u8bbe\u8ba1\uff0c\u6dfb\u52a0\u65b0\u7cfb\u7edf\u53ea\u97003\u6b65\n\n### \ud83d\udd2e \u7d2b\u5fae\u6597\u6570\u529f\u80fd\n- \u2705 **\u5b8c\u6574\u6392\u76d8**: \u5341\u4e8c\u5bab\u3001\u4e3b\u661f\u3001\u8f85\u661f\u3001\u6742\u8000\u3001\u56db\u5316\u7b49\n- \u2705 **\u8fd0\u52bf\u67e5\u8be2**: \u5927\u9650\u3001\u6d41\u5e74\u3001\u6d41\u6708\u3001\u6d41\u65e5\u3001\u6d41\u65f6\n- \u2705 **\u5bab\u4f4d\u5206\u6790**: \u6df1\u5ea6\u5206\u6790\u7279\u5b9a\u5bab\u4f4d\u7684\u661f\u66dc\u914d\u7f6e\n- \u2705 **\u591a\u79cd\u5386\u6cd5**: \u652f\u6301\u9633\u5386\u548c\u519c\u5386\u8f93\u5165\n- \u2705 **\u683c\u5f0f\u5316\u8f93\u51fa**: JSON\u548cMarkdown\u4e24\u79cd\u8f93\u51fa\u683c\u5f0f\n\n### \ud83c\udfb4 \u516b\u5b57\u529f\u80fd \u2b50 **\u65b0\u589e**\n- \u2705 **\u56db\u67f1\u6392\u76d8**: \u5e74\u6708\u65e5\u65f6\u56db\u67f1\u3001\u5929\u5e72\u5730\u652f\u8be6\u7ec6\u4fe1\u606f\n- \u2705 **\u5341\u795e\u5206\u6790**: \u6bd4\u80a9\u3001\u52ab\u8d22\u3001\u98df\u795e\u3001\u4f24\u5b98\u3001\u504f\u8d22\u3001\u6b63\u8d22\u3001\u4e03\u6740\u3001\u6b63\u5b98\u3001\u504f\u5370\u3001\u6b63\u5370\n- \u2705 **\u4e94\u884c\u5206\u6790**: \u91d1\u6728\u6c34\u706b\u571f\u5206\u6570\u3001\u767e\u5206\u6bd4\u3001\u5e73\u8861\u5ea6\n- \u2705 **\u5730\u652f\u85cf\u5e72**: \u8be6\u7ec6\u7684\u5730\u652f\u85cf\u5e72\u4fe1\u606f\n- \u2705 **\u8fd0\u52bf\u67e5\u8be2**: \u5927\u8fd0\u3001\u6d41\u5e74\u5206\u6790\n- \u2705 **\u7f3a\u5931\u5206\u6790**: \u81ea\u52a8\u8bc6\u522b\u4e94\u884c\u7f3a\u5931\u5e76\u7ed9\u51fa\u5efa\u8bae\n- \u2705 **\u591a\u79cd\u5386\u6cd5**: \u652f\u6301\u9633\u5386\u548c\u519c\u5386\u8f93\u5165\n\n## \ud83d\udccb \u53ef\u7528\u5de5\u5177\n\n### 1. get_ziwei_chart\n\u83b7\u53d6\u7d2b\u5fae\u6597\u6570\u5b8c\u6574\u6392\u76d8\u4fe1\u606f\n\n**\u53c2\u6570**:\n- `date` (string, \u5fc5\u9700): \u51fa\u751f\u65e5\u671f YYYY-MM-DD\uff0c\u5982 \"2000-08-16\"\n- `time_index` (integer, \u5fc5\u9700): \u65f6\u8fb0\u5e8f\u53f7 0-12\n  - 0=\u65e9\u5b50\u65f6(23-01), 1=\u4e11\u65f6(01-03), 2=\u5bc5\u65f6(03-05), 3=\u536f\u65f6(05-07)\n  - 4=\u8fb0\u65f6(07-09), 5=\u5df3\u65f6(09-11), 6=\u5348\u65f6(11-13), 7=\u672a\u65f6(13-15)\n  - 8=\u7533\u65f6(15-17), 9=\u9149\u65f6(17-19), 10=\u620c\u65f6(19-21), 11=\u4ea5\u65f6(21-23)\n  - 12=\u665a\u5b50\u65f6(23-01)\n- `gender` (string, \u5fc5\u9700): \u6027\u522b \"\u7537\" \u6216 \"\u5973\"\n- `calendar` (string, \u53ef\u9009): \u5386\u6cd5 \"solar\"(\u9633\u5386) \u6216 \"lunar\"(\u519c\u5386), \u9ed8\u8ba4 \"solar\"\n- `is_leap_month` (boolean, \u53ef\u9009): \u662f\u5426\u95f0\u6708\uff0c\u9ed8\u8ba4 false\n- `format` (string, \u53ef\u9009): \u8f93\u51fa\u683c\u5f0f \"json\" \u6216 \"markdown\", \u9ed8\u8ba4 \"markdown\"\n\n**\u793a\u4f8b**:\n```json\n{\n  \"date\": \"2000-08-16\",\n  \"time_index\": 2,\n  \"gender\": \"\u5973\",\n  \"calendar\": \"solar\"\n}\n```\n\n### 2. get_ziwei_fortune\n\u83b7\u53d6\u7d2b\u5fae\u6597\u6570\u8fd0\u52bf\u4fe1\u606f\n\n**\u53c2\u6570**:\n- `birth_date` (string, \u5fc5\u9700): \u51fa\u751f\u65e5\u671f\n- `time_index` (integer, \u5fc5\u9700): \u65f6\u8fb0\u5e8f\u53f7\n- `gender` (string, \u5fc5\u9700): \u6027\u522b\n- `calendar` (string, \u53ef\u9009): \u5386\u6cd5\u7c7b\u578b\n- `query_date` (string, \u53ef\u9009): \u67e5\u8be2\u65e5\u671f\uff0c\u4e0d\u586b\u5219\u4e3a\u4eca\u5929\n- `format` (string, \u53ef\u9009): \u8f93\u51fa\u683c\u5f0f\n\n### 3. analyze_ziwei_palace\n\u5206\u6790\u7d2b\u5fae\u6597\u6570\u7279\u5b9a\u5bab\u4f4d\n\n**\u53c2\u6570**:\n- `birth_date` (string, \u5fc5\u9700): \u51fa\u751f\u65e5\u671f\n- `time_index` (integer, \u5fc5\u9700): \u65f6\u8fb0\u5e8f\u53f7\n- `gender` (string, \u5fc5\u9700): \u6027\u522b\n- `palace_name` (string, \u5fc5\u9700): \u5bab\u4f4d\u540d\u79f0\uff0c\u53ef\u9009\u503c\uff1a\n  - \u547d\u5bab\u3001\u5144\u5f1f\u3001\u592b\u59bb\u3001\u5b50\u5973\u3001\u8d22\u5e1b\u3001\u75be\u5384\n  - \u8fc1\u79fb\u3001\u4ec6\u5f79\u3001\u5b98\u7984\u3001\u7530\u5b85\u3001\u798f\u5fb7\u3001\u7236\u6bcd\n- `calendar` (string, \u53ef\u9009): \u5386\u6cd5\u7c7b\u578b\n- `format` (string, \u53ef\u9009): \u8f93\u51fa\u683c\u5f0f\n\n### 4. list_fortune_systems\n\u5217\u51fa\u6240\u6709\u53ef\u7528\u7684\u547d\u7406\u7cfb\u7edf\n\n### 5. get_bazi_chart \u2b50 **\u65b0\u589e**\n\u83b7\u53d6\u516b\u5b57\uff08\u56db\u67f1\uff09\u6392\u76d8\u4fe1\u606f\n\n**\u53c2\u6570**:\n- `date` (string, \u5fc5\u9700): \u51fa\u751f\u65e5\u671f YYYY-MM-DD\n- `time_index` (integer, \u5fc5\u9700): \u65f6\u8fb0\u5e8f\u53f7 0-12\n- `gender` (string, \u5fc5\u9700): \u6027\u522b \"\u7537\" \u6216 \"\u5973\"\n- `calendar` (string, \u53ef\u9009): \u5386\u6cd5 \"solar\"(\u9633\u5386) \u6216 \"lunar\"(\u519c\u5386), \u9ed8\u8ba4 \"solar\"\n- `is_leap_month` (boolean, \u53ef\u9009): \u662f\u5426\u95f0\u6708\uff0c\u9ed8\u8ba4 false\n- `format` (string, \u53ef\u9009): \u8f93\u51fa\u683c\u5f0f \"json\" \u6216 \"markdown\", \u9ed8\u8ba4 \"markdown\"\n\n**\u793a\u4f8b**:\n```json\n{\n  \"date\": \"2000-08-16\",\n  \"time_index\": 2,\n  \"gender\": \"\u5973\"\n}\n```\n\n**\u8f93\u51fa\u5305\u542b**:\n- \u56db\u67f1\u516b\u5b57\uff08\u5e74\u6708\u65e5\u65f6\uff09\n- \u5929\u5e72\u5730\u652f\u8be6\u7ec6\u4fe1\u606f\n- \u5341\u795e\u5206\u6790\uff08\u6bd4\u80a9\u3001\u52ab\u8d22\u7b49\uff09\n- \u4e94\u884c\u5206\u6570\u7edf\u8ba1\n- \u5730\u652f\u85cf\u5e72\u4fe1\u606f\n- \u751f\u8096\u3001\u65e5\u4e3b\u7b49\u57fa\u672c\u4fe1\u606f\n\n### 6. get_bazi_fortune \u2b50 **\u65b0\u589e**\n\u83b7\u53d6\u516b\u5b57\u8fd0\u52bf\u4fe1\u606f\n\n**\u53c2\u6570**:\n- `birth_date` (string, \u5fc5\u9700): \u51fa\u751f\u65e5\u671f\n- `time_index` (integer, \u5fc5\u9700): \u65f6\u8fb0\u5e8f\u53f7\n- `gender` (string, \u5fc5\u9700): \u6027\u522b\n- `calendar` (string, \u53ef\u9009): \u5386\u6cd5\u7c7b\u578b\n- `query_date` (string, \u53ef\u9009): \u67e5\u8be2\u65e5\u671f\uff0c\u4e0d\u586b\u5219\u4e3a\u4eca\u5929\n- `format` (string, \u53ef\u9009): \u8f93\u51fa\u683c\u5f0f\n\n**\u8f93\u51fa\u5305\u542b**:\n- \u5f53\u524d\u5e74\u9f84\n- \u5927\u8fd0\u4fe1\u606f\uff08\u5e74\u9f84\u8303\u56f4\u3001\u5e72\u652f\uff09\n- \u6d41\u5e74\u4fe1\u606f\uff08\u5e74\u4efd\u3001\u5e72\u652f\u3001\u751f\u8096\uff09\n- \u672c\u547d\u516b\u5b57\n\n### 7. analyze_bazi_element \u2b50 **\u65b0\u589e**\n\u5206\u6790\u516b\u5b57\u4e94\u884c\u5f3a\u5f31\n\n**\u53c2\u6570**:\n- `birth_date` (string, \u5fc5\u9700): \u51fa\u751f\u65e5\u671f\n- `time_index` (integer, \u5fc5\u9700): \u65f6\u8fb0\u5e8f\u53f7\n- `gender` (string, \u5fc5\u9700): \u6027\u522b\n- `calendar` (string, \u53ef\u9009): \u5386\u6cd5\u7c7b\u578b\n- `format` (string, \u53ef\u9009): \u8f93\u51fa\u683c\u5f0f\n\n**\u8f93\u51fa\u5305\u542b**:\n- \u65e5\u4e3b\u53ca\u5176\u4e94\u884c\u5c5e\u6027\n- \u4e94\u884c\u5206\u6570\u548c\u767e\u5206\u6bd4\n- \u6700\u65fa/\u6700\u5f31\u4e94\u884c\n- \u7f3a\u5931\u4e94\u884c\n- \u5e73\u8861\u5ea6\u8bc4\u4ef7\n- \u8865\u6551\u5efa\u8bae\n\n## \ud83d\ude80 \u5feb\u901f\u5f00\u59cb\n\n### \u5728\u7ebf\u4f53\u9a8c\n- **Smithery \u90e8\u7f72**: [https://server.smithery.ai/@spyfree/mingli-mcp/mcp](https://server.smithery.ai/@spyfree/mingli-mcp/mcp)\n- \u6dfb\u52a0\u5230 Cursor: [![Install MCP Server](https://img.shields.io/badge/Cursor-Add+MCP+Server-blue?logo=cursor)](https://cursor.com/install-mcp?name=mingli&config=eyJjb21tYW5kIjoidXZ4IiwiYXJncyI6WyJtaW5nbGktbWNwIl19)\n- \u6dfb\u52a0\u5230 Claude Code: `claude mcp add mingli -- uvx mingli-mcp`\n- \u6dfb\u52a0\u5230 OpenAI CodeX: `codex mcp add mingli -- uvx mingli-mcp`\n\n---\n\n## \ud83d\udce6 \u5b89\u88c5\u65b9\u5f0f\n\n### \u65b9\u5f0f1: uvx (\u63a8\u8350)\n\n\u4f7f\u7528 `uvx` \u662f\u6700\u7b80\u5355\u7684\u5b89\u88c5\u65b9\u5f0f\uff0c\u65e0\u9700\u624b\u52a8\u7ba1\u7406\u4f9d\u8d56\uff1a\n\n\u5728 `~/.cursor/mcp.json` \u6216\u5bf9\u5e94IDE\u7684MCP\u914d\u7f6e\u6587\u4ef6\u4e2d\u6dfb\u52a0\uff1a\n\n```json\n{\n  \"mcpServers\": {\n    \"mingli\": {\n      \"command\": \"uvx\",\n      \"args\": [\"mingli-mcp\"],\n      \"env\": {\n        \"LOG_LEVEL\": \"INFO\"\n      }\n    }\n  }\n}\n```\n\n### \u65b9\u5f0f2: Docker\n\n\u4f7f\u7528 Docker \u90e8\u7f72\uff0c\u9002\u5408\u670d\u52a1\u5668\u73af\u5883\u6216\u9700\u8981\u9694\u79bb\u7684\u573a\u666f\uff1a\n\n```bash\n# \u4e0b\u8f7d\u914d\u7f6e\u6587\u4ef6\nmkdir -p /opt/mingli-mcp\ncd /opt/mingli-mcp\nwget https://raw.githubusercontent.com/spyfree/mingli-mcp/main/docker-compose.yml\n\n# \u542f\u52a8\u670d\u52a1\ndocker-compose up -d\n```\n\n\u7136\u540e\u5728MCP\u914d\u7f6e\u4e2d\u4f7f\u7528HTTP\u8fde\u63a5\uff1a\n\n```json\n{\n  \"mcpServers\": {\n    \"mingli\": {\n      \"url\": \"http://localhost:8080/mcp\"\n    }\n  }\n}\n```\n\n### \u65b9\u5f0f3: \u4ece\u6e90\u7801\u5b89\u88c5\n\n\u9002\u5408\u5f00\u53d1\u8005\u6216\u9700\u8981\u81ea\u5b9a\u4e49\u7684\u573a\u666f\uff1a\n\n## \ud83d\udee0\ufe0f \u4ece\u6e90\u7801\u5b89\u88c5\n\n### \u73af\u5883\u8981\u6c42\n- Python 3.8+\n- Cursor IDE \u6216\u5176\u4ed6\u652f\u6301MCP\u7684\u5de5\u5177\n\n### 1. \u514b\u9686\u9879\u76ee\n```bash\ncd /Users/lix18854/Documents/code\n# \u9879\u76ee\u5df2\u5728 ziwei_mcp \u76ee\u5f55\u4e2d\ncd ziwei_mcp\n```\n\n### 2. \u521b\u5efa\u865a\u62df\u73af\u5883\uff08\u63a8\u8350\uff09\n```bash\npython3 -m venv venv\nsource venv/bin/activate  # macOS/Linux\n# \u6216\nvenv\\Scripts\\activate  # Windows\n```\n\n### 3. \u5b89\u88c5\u4f9d\u8d56\n```bash\npip install -r requirements.txt\n```\n\n### 4. \u914d\u7f6e\u73af\u5883\u53d8\u91cf\uff08\u53ef\u9009\uff09\n```bash\ncp examples/config/.env.example .env\n# \u7f16\u8f91 .env \u6587\u4ef6\u6839\u636e\u9700\u8981\u8c03\u6574\u914d\u7f6e\n```\n\n### 5. \u6d4b\u8bd5\u8fd0\u884c\n```bash\nchmod +x mingli_mcp.py\npython mingli_mcp.py\n```\n\n### 6. \u914d\u7f6e Cursor MCP\n\n\u7f16\u8f91\u6216\u521b\u5efa `~/.cursor/mcp.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"mingli\": {\n      \"command\": \"/Users/lix18854/Documents/code/ziwei_mcp/venv/bin/python\",\n      \"args\": [\"/Users/lix18854/Documents/code/ziwei_mcp/mingli_mcp.py\"],\n      \"env\": {\n        \"LOG_LEVEL\": \"INFO\"\n      }\n    }\n  }\n}\n```\n\n> **\u6ce8\u610f**: \u8bf7\u6839\u636e\u5b9e\u9645\u8def\u5f84\u8c03\u6574 `command` \u548c `args`\n\n### 7. \u91cd\u542f Cursor\n\u91cd\u542f Cursor IDE \u4ee5\u52a0\u8f7d\u65b0\u7684 MCP \u914d\u7f6e\u3002\n\n## \ud83d\udcc1 \u9879\u76ee\u7ed3\u6784\n\n```\nziwei_mcp/\n\u251c\u2500\u2500 mingli_mcp.py              # MCP\u670d\u52a1\u5668\u4e3b\u5165\u53e3\n\u251c\u2500\u2500 config.py                  # \u914d\u7f6e\u7ba1\u7406\n\u251c\u2500\u2500 requirements.txt           # Python\u4f9d\u8d56\n\u251c\u2500\u2500 pyproject.toml            # \u9879\u76ee\u914d\u7f6e\n\u251c\u2500\u2500 .gitignore                # Git\u5ffd\u7565\u6587\u4ef6\n\u251c\u2500\u2500 README.md                 # \u9879\u76ee\u6587\u6863\n\u2502\n\u251c\u2500\u2500 core/                      # \u6838\u5fc3\u62bd\u8c61\u5c42\n\u2502   \u251c\u2500\u2500 __init__.py\n\u2502   \u251c\u2500\u2500 base_system.py        # \u547d\u7406\u7cfb\u7edf\u62bd\u8c61\u57fa\u7c7b\n\u2502   \u251c\u2500\u2500 birth_info.py         # \u751f\u8fb0\u4fe1\u606f\u6570\u636e\u6a21\u578b\n\u2502   \u2514\u2500\u2500 chart_result.py       # \u6392\u76d8\u7ed3\u679c\u6570\u636e\u6a21\u578b\n\u2502\n\u251c\u2500\u2500 transports/                # \u4f20\u8f93\u5c42\uff08\u652f\u6301\u591a\u79cd\u4f20\u8f93\u65b9\u5f0f\uff09\n\u2502   \u251c\u2500\u2500 __init__.py\n\u2502   \u251c\u2500\u2500 base_transport.py     # \u4f20\u8f93\u5c42\u62bd\u8c61\u57fa\u7c7b\n\u2502   \u2514\u2500\u2500 stdio_transport.py    # stdio\u4f20\u8f93\u5b9e\u73b0\uff08\u9ed8\u8ba4\uff09\n\u2502\n\u251c\u2500\u2500 systems/                   # \u547d\u7406\u7cfb\u7edf\u5b9e\u73b0\n\u2502   \u251c\u2500\u2500 __init__.py           # \u7cfb\u7edf\u6ce8\u518c\u4e2d\u5fc3\n\u2502   \u251c\u2500\u2500 ziwei/                # \u7d2b\u5fae\u6597\u6570\uff08\u5df2\u5b9e\u73b0\uff09\n\u2502   \u2502   \u251c\u2500\u2500 __init__.py\n\u2502   \u2502   \u251c\u2500\u2500 ziwei_system.py  # \u7cfb\u7edf\u5b9e\u73b0\n\u2502   \u2502   \u2514\u2500\u2500 formatter.py     # \u7ed3\u679c\u683c\u5f0f\u5316\n\u2502   \u251c\u2500\u2500 bazi/                 # \u516b\u5b57\uff08\u5df2\u5b9e\u73b0\uff09\n\u2502   \u2502   \u251c\u2500\u2500 __init__.py\n\u2502   \u2502   \u251c\u2500\u2500 bazi_system.py   # \u7cfb\u7edf\u5b9e\u73b0\n\u2502   \u2502   \u2514\u2500\u2500 formatter.py     # \u7ed3\u679c\u683c\u5f0f\u5316\n\u2502   \u2514\u2500\u2500 astrology/            # \u5360\u661f\uff08\u9884\u7559\uff09\n\u2502       \u2514\u2500\u2500 __init__.py\n\u2502\n\u251c\u2500\u2500 utils/                     # \u5de5\u5177\u51fd\u6570\n\u2502   \u251c\u2500\u2500 __init__.py\n\u2502   \u251c\u2500\u2500 validators.py         # \u53c2\u6570\u9a8c\u8bc1\n\u2502   \u2514\u2500\u2500 formatters.py         # \u54cd\u5e94\u683c\u5f0f\u5316\n\u2502\n\u251c\u2500\u2500 docs/                      # \u6587\u6863\n\u2502   \u251c\u2500\u2500 README.md             # \u6587\u6863\u7d22\u5f15\n\u2502   \u251c\u2500\u2500 guides/               # \u7528\u6237\u6307\u5357\n\u2502   \u251c\u2500\u2500 deployment/           # \u90e8\u7f72\u6587\u6863\n\u2502   \u251c\u2500\u2500 architecture/         # \u67b6\u6784\u8bbe\u8ba1\n\u2502   \u2514\u2500\u2500 development/          # \u5f00\u53d1\u6587\u6863\n\u2502\n\u251c\u2500\u2500 examples/                  # \u793a\u4f8b\u914d\u7f6e\n\u2502   \u2514\u2500\u2500 config/               # \u914d\u7f6e\u6587\u4ef6\u793a\u4f8b\n\u2502       \u251c\u2500\u2500 .env.example\n\u2502       \u251c\u2500\u2500 codex_config.toml.example\n\u2502       \u2514\u2500\u2500 cursor_mcp_config.example.json\n\u2502\n\u251c\u2500\u2500 scripts/                   # \u811a\u672c\u5de5\u5177\n\u2502   \u251c\u2500\u2500 tests/                # \u6d4b\u8bd5\u811a\u672c\n\u2502   \u2514\u2500\u2500 check_ready_to_publish.sh\n\u2502\n\u2514\u2500\u2500 tests/                     # \u5355\u5143\u6d4b\u8bd5\n    \u2514\u2500\u2500 __init__.py\n```\n\n## \ud83d\ude80 \u6269\u5c55\u65b0\u547d\u7406\u7cfb\u7edf\n\n\u672c\u9879\u76ee\u91c7\u7528\u63d2\u4ef6\u5316\u67b6\u6784\uff0c\u6dfb\u52a0\u65b0\u547d\u7406\u7cfb\u7edf\u53ea\u97003\u6b65\uff1a\n\n### \u6b65\u9aa41: \u521b\u5efa\u7cfb\u7edf\u7c7b\n\u5728 `systems/` \u4e0b\u521b\u5efa\u65b0\u76ee\u5f55\uff0c\u5b9e\u73b0 `BaseFortuneSystem` \u63a5\u53e3\uff1a\n\n```python\n# systems/bazi/bazi_system.py\nfrom core.base_system import BaseFortuneSystem\n\nclass BaziSystem(BaseFortuneSystem):\n    def get_system_name(self) -> str:\n        return \"\u516b\u5b57\"\n    \n    def get_chart(self, birth_info):\n        # \u5b9e\u73b0\u516b\u5b57\u6392\u76d8\u903b\u8f91\n        return {...}\n    \n    # \u5b9e\u73b0\u5176\u4ed6\u5fc5\u9700\u65b9\u6cd5...\n```\n\n### \u6b65\u9aa42: \u6ce8\u518c\u7cfb\u7edf\n\u5728 `systems/__init__.py` \u4e2d\u6ce8\u518c\uff1a\n\n```python\nfrom .bazi import BaziSystem\nregister_system('bazi', BaziSystem)\n```\n\n### \u6b65\u9aa43: \u6dfb\u52a0MCP\u5de5\u5177\n\u5728 `mingli_mcp.py` \u7684 `_handle_tools_list()` \u4e2d\u6dfb\u52a0\u5de5\u5177\u5b9a\u4e49\u3002\n\n\u5c31\u8fd9\u4e48\u7b80\u5355\uff01\u65e0\u9700\u4fee\u6539\u6838\u5fc3\u6846\u67b6\u4ee3\u7801\u3002\n\n## \ud83d\udd27 \u4f20\u8f93\u5c42\u6269\u5c55\n\n\u5f53\u524d\u9ed8\u8ba4\u4f7f\u7528 stdio \u4f20\u8f93\uff08\u9002\u7528\u4e8e Cursor\uff09\u3002\u672a\u6765\u53ef\u6269\u5c55\uff1a\n\n### HTTP\u4f20\u8f93\uff08\u9884\u7559\uff09\n```python\n# transports/http_transport.py\nclass HttpTransport(BaseTransport):\n    def __init__(self, host, port):\n        # \u5b9e\u73b0HTTP\u670d\u52a1\u5668\n        pass\n```\n\n### WebSocket\u4f20\u8f93\uff08\u9884\u7559\uff09\n```python\n# transports/ws_transport.py\nclass WebSocketTransport(BaseTransport):\n    def __init__(self, host, port):\n        # \u5b9e\u73b0WebSocket\u670d\u52a1\u5668\n        pass\n```\n\n## \ud83d\udca1 \u6700\u4f73\u5b9e\u8df5\n\n### \u5728 AI \u52a9\u624b\u4e2d\u4f7f\u7528\n\n\u4e0eAI\u52a9\u624b\uff08\u5982Claude\u3001Cursor\u7b49\uff09\u5bf9\u8bdd\u65f6\uff0c\u53ef\u4ee5\u76f4\u63a5\u4f7f\u7528\u81ea\u7136\u8bed\u8a00\u67e5\u8be2\uff1a\n\n**\u7d2b\u5fae\u6597\u6570\u793a\u4f8b**\uff1a\n- \"\u5e2e\u6211\u6392\u4e00\u4e2a\u7d2b\u5fae\u6597\u6570\u76d8\uff1a1990\u5e745\u670820\u65e5\uff0c\u5348\u65f6\uff0c\u7537\u6027\"\n- \"\u67e5\u8be2\u8fd9\u4e2a\u4eba\u4eca\u5e74\u7684\u8fd0\u52bf\u5982\u4f55\"\n- \"\u5206\u6790\u4ed6\u7684\u8d22\u5e1b\u5bab\"\n- \"\u770b\u770b\u4ed6\u9002\u5408\u4ec0\u4e48\u884c\u4e1a\"\n\n**\u516b\u5b57\u793a\u4f8b**\uff1a\n- \"\u5e2e\u6211\u7b97\u516b\u5b57\uff1a1985\u5e743\u670815\u65e5\uff0c\u536f\u65f6\uff0c\u5973\u6027\"  \n- \"\u5206\u6790\u4e00\u4e0b\u5979\u7684\u4e94\u884c\u7f3a\u4ec0\u4e48\"\n- \"\u770b\u770b\u5979\u4eca\u5e74\u7684\u5927\u8fd0\"\n- \"\u4ec0\u4e48\u4e94\u884c\u7684\u989c\u8272\u9002\u5408\u5979\"\n\n**\u519c\u5386\u652f\u6301**\uff1a\n- \"\u6392\u76d8\uff1a\u519c\u53861995\u5e747\u6708\u521d\u4e03\uff0c\u9149\u65f6\uff0c\u5973\u6027\"\n- \"\u6ce8\u610f\u6307\u5b9a\u662f\u519c\u5386\"\n\n### \u63d0\u793a\u8bcd\u6280\u5de7\n\n**\u8be6\u7ec6\u67e5\u8be2**\uff1a\n```\n\u8bf7\u5e2e\u6211\u8be6\u7ec6\u5206\u6790\uff1a\n- \u51fa\u751f\u65e5\u671f\uff1a2000\u5e748\u670816\u65e5\n- \u51fa\u751f\u65f6\u8fb0\uff1a\u5bc5\u65f6\uff08\u65e9\u4e0a5\u70b9\uff09\n- \u6027\u522b\uff1a\u5973\n- \u4f7f\u7528\u7d2b\u5fae\u6597\u6570\u7cfb\u7edf\n- \u91cd\u70b9\u770b\u4e8b\u4e1a\u5bab\u548c\u8d22\u5e1b\u5bab\n```\n\n**\u5bf9\u6bd4\u5206\u6790**\uff1a\n```\n\u8bf7\u5bf9\u6bd4\u4e24\u4e2a\u4eba\u7684\u516b\u5b57\uff1a\n\u4ebaA\uff1a1990\u5e745\u670820\u65e5\uff0c\u5348\u65f6\uff0c\u7537\n\u4ebaB\uff1a1992\u5e743\u670815\u65e5\uff0c\u8fb0\u65f6\uff0c\u5973\n\u770b\u770b\u4ed6\u4eec\u7684\u4e94\u884c\u662f\u5426\u76f8\u914d\n```\n\n**\u8fd0\u52bf\u8ffd\u8e2a**\uff1a\n```\n\u8bf7\u8bb0\u4f4f\u8fd9\u4e2a\u4eba\u7684\u4fe1\u606f\uff1a1988\u5e7410\u67081\u65e5\uff0c\u672a\u65f6\uff0c\u7537\u6027\n\u7136\u540e\u6bcf\u4e2a\u6708\u5e2e\u6211\u5206\u6790\u5f53\u6708\u8fd0\u52bf\n```\n\n---\n\n## \ud83d\udcda \u4f7f\u7528\u793a\u4f8b\n\n### \u5728 Cursor \u4e2d\u4f7f\u7528\n\n\u76f4\u63a5\u5728\u5bf9\u8bdd\u4e2d\u63d0\u95ee\uff1a\n\n1. **\u83b7\u53d6\u7d2b\u5fae\u6392\u76d8**:\n```\n\u5e2e\u6211\u6392\u4e00\u4e2a\u7d2b\u5fae\u6597\u6570\u76d8\uff1a2000\u5e748\u670816\u65e5\uff0c\u5bc5\u65f6\uff0c\u5973\u6027\n```\n\n2. **\u67e5\u8be2\u8fd0\u52bf**:\n```\n\u67e5\u8be22000\u5e748\u670816\u65e5\u5bc5\u65f6\u51fa\u751f\u7684\u5973\u6027\uff0c\u4eca\u5929\u7684\u7d2b\u5fae\u8fd0\u52bf\n```\n\n3. **\u5206\u6790\u5bab\u4f4d**:\n```\n\u5206\u6790\u4e0a\u9762\u8fd9\u4e2a\u4eba\u7684\u547d\u5bab\n```\n\n4. **\u516b\u5b57\u4e94\u884c\u5206\u6790**:\n```\n\u5e2e\u6211\u770b\u770b\u8fd9\u4e2a\u4eba\u7684\u4e94\u884c\uff1a1995\u5e747\u670810\u65e5\uff0c\u7533\u65f6\uff0c\u7537\u6027\n```\n\n### \u7f16\u7a0b\u8c03\u7528\n\n```python\nfrom systems import get_system\n\n# \u83b7\u53d6\u7d2b\u5fae\u7cfb\u7edf\nziwei = get_system('ziwei')\n\n# \u51c6\u5907\u751f\u8fb0\u4fe1\u606f\nbirth_info = {\n    'date': '2000-08-16',\n    'time_index': 2,  # \u5bc5\u65f6\n    'gender': '\u5973',\n    'calendar': 'solar'\n}\n\n# \u83b7\u53d6\u6392\u76d8\nchart = ziwei.get_chart(birth_info)\nprint(chart)\n\n# \u83b7\u53d6\u8fd0\u52bf\nfrom datetime import datetime\nfortune = ziwei.get_fortune(birth_info, datetime.now())\nprint(fortune)\n\n# \u5206\u6790\u5bab\u4f4d\npalace = ziwei.analyze_palace(birth_info, '\u547d\u5bab')\nprint(palace)\n```\n\n## \ud83e\uddea \u6d4b\u8bd5\n\n```bash\n# \u8fd0\u884c\u6d4b\u8bd5\uff08\u5f85\u5b9e\u73b0\uff09\npytest tests/\n\n# \u6d4b\u8bd5\u5355\u4e2a\u7cfb\u7edf\npython -m systems.ziwei.ziwei_system\n```\n\n## \ud83d\udcdd \u4f9d\u8d56\u8bf4\u660e\n\n- **py-iztro**: \u7d2b\u5fae\u6597\u6570\u6838\u5fc3\u5e93\uff0c\u63d0\u4f9b\u6392\u76d8\u7b97\u6cd5\n- **python-dotenv**: \u73af\u5883\u53d8\u91cf\u7ba1\u7406\n- **python-dateutil**: \u65e5\u671f\u5904\u7406\n\n## \ud83d\uddfa\ufe0f \u672a\u6765\u89c4\u5212\n\n- [ ] \u5b8c\u5584\u516b\u5b57\u7cfb\u7edf\u5b9e\u73b0\n- [ ] \u6dfb\u52a0\u897f\u65b9\u5360\u661f\u7cfb\u7edf\n- [ ] \u5b9e\u73b0\u5408\u76d8\u529f\u80fd\n- [ ] HTTP/WebSocket\u4f20\u8f93\u5c42\n- [ ] \u547d\u7406\u77e5\u8bc6\u5e93\u96c6\u6210\n- [ ] AI\u89e3\u8bfb\u529f\u80fd\n- [ ] \u66f4\u591a\u8fd0\u52bf\u5206\u6790\u7ef4\u5ea6\n\n## \ud83e\udd1d \u8d21\u732e\n\n\u6b22\u8fce\u8d21\u732e\u4ee3\u7801\u3001\u62a5\u544a\u95ee\u9898\u6216\u63d0\u51fa\u5efa\u8bae\uff01\n\n## \ud83d\udcc4 \u8bb8\u53ef\u8bc1\n\nMIT License\n\n## \ud83d\ude4f \u81f4\u8c22\n\n- [iztro](https://github.com/SylarLong/iztro) - \u7d2b\u5fae\u6597\u6570 JavaScript \u5e93\n- [py-iztro](https://github.com/x-haose/py-iztro) - Python \u79fb\u690d\u7248\u672c\n- [MCP Protocol](https://modelcontextprotocol.io/) - Model Context Protocol \u89c4\u8303\n\n---\n\n**\ud83d\udd2e \u5f00\u59cb\u4f60\u7684\u547d\u7406\u63a2\u7d22\u4e4b\u65c5\uff01**\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "\u547d\u7406MCP\u670d\u52a1 - \u652f\u6301\u7d2b\u5fae\u6597\u6570\u3001\u516b\u5b57\u7b49\u591a\u79cd\u547d\u7406\u7cfb\u7edf",
    "version": "1.0.6",
    "project_urls": {
        "Documentation": "https://github.com/spyfree/mingli-mcp/blob/main/README.md",
        "Homepage": "https://github.com/spyfree/mingli-mcp",
        "Issues": "https://github.com/spyfree/mingli-mcp/issues",
        "Repository": "https://github.com/spyfree/mingli-mcp"
    },
    "split_keywords": [
        "mcp",
        " ziwei",
        " bazi",
        " fortune",
        " astrology"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "0cb95ceca4825d3fa609fea55ff3d515133b062e69164cfc3569fce85b27362d",
                "md5": "fd0363cd2744af96dc83ec40cd57ac4c",
                "sha256": "ce50b270a9a657d63a4d2345a183e1339bef3ddaa25d5ae90da5ad9ab93fec37"
            },
            "downloads": -1,
            "filename": "mingli_mcp-1.0.6-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "fd0363cd2744af96dc83ec40cd57ac4c",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 117730,
            "upload_time": "2025-10-28T06:21:30",
            "upload_time_iso_8601": "2025-10-28T06:21:30.768070Z",
            "url": "https://files.pythonhosted.org/packages/0c/b9/5ceca4825d3fa609fea55ff3d515133b062e69164cfc3569fce85b27362d/mingli_mcp-1.0.6-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "9d2b20d4632d49a850929270f2930e7fb2ee95b8609139a6c094d9af4d23630a",
                "md5": "806b2ce21c4efa4848e45d055bdc24b0",
                "sha256": "2fbe9a1516bd7b8115b309c66bed2e79ffbaa1ea541cf8618b7f28afafb32ea0"
            },
            "downloads": -1,
            "filename": "mingli_mcp-1.0.6.tar.gz",
            "has_sig": false,
            "md5_digest": "806b2ce21c4efa4848e45d055bdc24b0",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 118115,
            "upload_time": "2025-10-28T06:21:32",
            "upload_time_iso_8601": "2025-10-28T06:21:32.432019Z",
            "url": "https://files.pythonhosted.org/packages/9d/2b/20d4632d49a850929270f2930e7fb2ee95b8609139a6c094d9af4d23630a/mingli_mcp-1.0.6.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-10-28 06:21:32",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "spyfree",
    "github_project": "mingli-mcp",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [
        {
            "name": "py-iztro",
            "specs": [
                [
                    ">=",
                    "0.1.5"
                ]
            ]
        },
        {
            "name": "lunar_python",
            "specs": [
                [
                    ">=",
                    "1.4.7"
                ]
            ]
        },
        {
            "name": "bidict",
            "specs": [
                [
                    ">=",
                    "0.23.0"
                ]
            ]
        },
        {
            "name": "colorama",
            "specs": [
                [
                    ">=",
                    "0.4.6"
                ]
            ]
        },
        {
            "name": "python-dateutil",
            "specs": [
                [
                    ">=",
                    "2.8.0"
                ]
            ]
        },
        {
            "name": "python-dotenv",
            "specs": [
                [
                    ">=",
                    "1.0.0"
                ]
            ]
        },
        {
            "name": "fastapi",
            "specs": [
                [
                    ">=",
                    "0.104.0"
                ]
            ]
        },
        {
            "name": "uvicorn",
            "specs": [
                [
                    ">=",
                    "0.24.0"
                ]
            ]
        }
    ],
    "lcname": "mingli-mcp"
}
        
Elapsed time: 1.07885s