紫微斗数 MCP 服务器 (MCPIztro)
# 紫微斗数 MCP 服务器
[](https://opensource.org/licenses/MIT)
[](https://nodejs.org/)
[](https://github.com/SylarLong/iztro)
一个基于 [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) 的紫微斗数计算服务器,使用强大的 [iztro](https://github.com/SylarLong/iztro) 库提供精确的紫微斗数排盘和运限分析功能。
## ✨ 功能特性
- 🌟 **完整的紫微斗数排盘** - 支持阳历和农历生日计算
- 📅 **精确的时间处理** - 获取当前系统时间和详细信息
- 🔮 **运限分析** - 大限、流年等运势分析
- 🌐 **多语言支持** - 简体中文、繁体中文、英文、日文、韩文、越南文
- 🔄 **MCP 协议兼容** - 可与支持 MCP 的 AI 助手无缝集成
- ⚡ **轻量高效** - 基于 Node.js,响应快速
- 📊 **结构化数据** - 返回完整的 JSON 格式星盘数据
## 🛠️ 技术栈
- **Node.js** (≥18.0.0) - 运行环境
- **iztro** (v2.5.3) - 紫微斗数核心计算库
- **MCP Protocol** (2024-11-05) - 模型上下文协议
## 📦 安装
### 前置要求
- Node.js 18.0.0 或更高版本
- npm 包管理器
### 克隆仓库
```bash
git clone https://github.com/wuunicorn/MCPIztro.git
cd MCPIztro
```
### 安装依赖
```bash
npm install
```
## ⚙️ 配置
### 1. 创建配置文件
将 `ziwei_mcp_config.json` 中的路径修改为您的实际项目路径:
```json
{
"mcpServers": {
"ziwei": {
"command": "node",
"args": ["/path/to/your/project/ziwei_mcp_server.js"],
"env": {
"NODE_PATH": "/path/to/your/project/node_modules"
}
}
}
}
```
### 2. 在 MCP 客户端中配置
将配置文件内容添加到您的 MCP 客户端配置中(如 Claude Desktop、Cursor 等)。
## 🚀 使用方法
### 直接启动服务器
```bash
npm start
# 或
node ziwei_mcp_server.js
```
### 运行测试
```bash
npm test
# 或
node test_ziwei.js
```
## 📖 API 文档
服务器提供以下三个主要工具:
### 1. get_current_time
获取当前系统时间的详细信息。
**参数:** 无
**返回:**
```json
{
"success": true,
"data": {
"year": 2024,
"month": 8,
"day": 1,
"hour": 15,
"minute": 30,
"second": 45,
"datetime_str": "2024-08-01 15:30:45",
"weekday": "Thursday",
"weekday_cn": "星期四",
"timestamp": 1722513045
}
}
```
### 2. calculate_ziwei
计算指定生辰的紫微斗数星盘。
**参数:**
- `birthday` (必需): 生日,格式 YYYY-MM-DD
- `hour` (可选): 出生时辰 (0-23),默认 0
- `gender` (可选): 性别 ("男"/"女"),默认 "男"
- `type` (可选): 日期类型 ("solar"/"lunar"),默认 "solar"
- `isLeapMonth` (可选): 是否闰月,默认 false
- `language` (可选): 语言设置,默认 "zh-CN"
**示例请求:**
```json
{
"birthday": "1990-08-16",
"hour": 14,
"gender": "女",
"type": "solar",
"language": "zh-CN"
}
```
**返回:** 完整的星盘数据,包含十二宫信息、星耀分布、亮度等。
### 3. get_horoscope
获取指定生辰在特定时间的运限信息。
**参数:**
- `birthday` (必需): 生日,格式 YYYY-MM-DD
- `hour` (可选): 出生时辰 (0-23),默认 0
- `gender` (可选): 性别 ("男"/"女"),默认 "男"
- `type` (可选): 日期类型 ("solar"/"lunar"),默认 "solar"
- `isLeapMonth` (可选): 是否闰月,默认 false
- `targetDate` (可选): 目标日期,格式 YYYY-MM-DD,默认当前日期
- `language` (可选): 语言设置,默认 "zh-CN"
**返回:** 运限信息,包含大限、流年、年龄等数据。
## 🌐 支持的语言
| 语言代码 | 语言名称 |
|---------|----------|
| zh-CN | 简体中文 |
| zh-TW | 繁体中文 |
| en-US | 英语 |
| ja-JP | 日语 |
| ko-KR | 韩语 |
| vi-VN | 越南语 |
## 📝 使用示例
### 在 MCP 客户端中使用
配置完成后,您可以在支持 MCP 的客户端中直接使用自然语言查询:
```
请帮我排一个1990年8月16日下午2点出生的女性的紫微斗数星盘
```
```
我想看看这个人在2024年的运势如何
```
### 直接 API 调用
```bash
# 获取当前时间
echo '{"jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": {"name": "get_current_time", "arguments": {}}}' | node ziwei_mcp_server.js
# 计算星盘
echo '{"jsonrpc": "2.0", "id": 2, "method": "tools/call", "params": {"name": "calculate_ziwei", "arguments": {"birthday": "1990-08-16", "hour": 14, "gender": "女"}}}' | node ziwei_mcp_server.js
```
## 🏗️ 项目结构
```
MCPIztro/
├── README.md # 项目介绍文档
├── package.json # 项目配置和依赖
├── package-lock.json # 依赖锁定文件
├── ziwei_mcp_server.js # MCP 服务器主程序
├── ziwei_mcp_config.json # MCP 配置文件模板
├── test_ziwei.js # 测试脚本
└── node_modules/ # 依赖包目录
```
## 🔧 开发
### 测试服务器功能
```bash
node test_ziwei.js
```
### 检查语法
```bash
node -c ziwei_mcp_server.js
```
### 验证依赖
```bash
node -e "import { astro } from 'iztro'; console.log('依赖加载成功');"
```
## 🤝 贡献
欢迎提交 Issue 和 Pull Request!
1. Fork 本仓库
2. 创建您的特性分支 (`git checkout -b feature/AmazingFeature`)
3. 提交您的修改 (`git commit -m 'Add some AmazingFeature'`)
4. 推送到分支 (`git push origin feature/AmazingFeature`)
5. 打开一个 Pull Request
## 📄 许可证
本项目采用 MIT 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情。
## 🙏 致谢
- [iztro](https://github.com/SylarLong/iztro) - 提供强大的紫微斗数计算能力
- [Model Context Protocol](https://modelcontextprotocol.io/) - 提供标准化的协议支持
## 📞 联系
如果您有任何问题或建议,请通过以下方式联系:
- 提交 [Issue](https://github.com/wuunicorn/MCPIztro/issues)
- 发送邮件到:wuunicorn@gmail.com
---
**注意:** 紫微斗数仅供参考和娱乐,请理性对待运势分析结果。TDQS
Scored across 3 tools
The tools have mostly distinct purposes: calculate_ziwei for natal charts, get_horoscope for time-based horoscopes, and get_current_time for system time. However, get_current_time might be confused as a helper for the other tools rather than a standalone feature, creating minor ambiguity in the set's scope.
All tool names follow a consistent verb_noun pattern with snake_case (calculate_ziwei, get_current_time, get_horoscope). The verbs 'calculate' and 'get' are clear and appropriate for their functions, making the naming highly predictable.
With only 3 tools, the set feels thin for a Zi Wei Dou Shu server, as it lacks operations like updating charts, comparing charts, or accessing historical data. While the core functions are present, the low count may limit agent workflows in this domain.
The server covers basic natal chart calculation and horoscope retrieval, but there are notable gaps: no update or delete operations for saved charts, no chart comparison tools, and no methods for interpreting or analyzing results beyond raw data. This could lead to dead ends in complex agent tasks.