S

StarWhisper 天文可观测性计算器

wcs37a/StarWhisper-observation-calculator
0 Stars 301 次浏览 更新于 2026-08-23

## For modelscope托管 { "mcpServers": { "StarWhisper-observation": { "command": "python", "args": ["mcp_observability_server.py"], "env": { "PYTHONPATH": "." }, "description": "StarWhisper天文可观测性计算器MCP服务器", "version": "1.0.0" } }, "tools": { "calculate_observability": { "name": "calculate_observability", "description": "计算指定天文目标的可观测性", "inputSchema": { "type": "object", "properties": { "latitude": { "type": "number", "description": "观测站纬度(度)", "minimum": 0, "maximum": 90 }, "longitude": { "type": "number", "description": "观测站经度(度)", "minimum": -180, "maximum": 180 }, "target_name": { "type": "string", "description": "目标名称(如'Vega', 'moon', 'mars'等)" }, "altitude": { "type": "number", "description": "观测站海拔(米)", "default": 0.0 }, "min_altitude": { "type": "number", "description": "最小地平高度(度)", "default": 30.0, "minimum": 0, "maximum": 90 }, "min_moon_separation": { "type": "number", "description": "最小月距(度)", "default": 30.0, "minimum": 0, "maximum": 180 }, "time_range_hours": { "type": "integer", "description": "检查时间范围(小时)", "default": 24, "minimum": 1, "maximum": 168 } }, "required": ["latitude", "longitude", "target_name"] } } }, "examples": [ { "name": "查询Vega可观测性", "description": "在新昌观测站查询Vega的可观测性", "input": { "latitude": 29.501784, "longitude": 120.905740, "target_name": "Vega", "min_altitude": 30.0, "min_moon_separation": 30.0 } }, { "name": "查询月球可观测性", "description": "在新昌观测站查询月球的可观测性", "input": { "latitude": 29.501784, "longitude": 120.905740, "target_name": "moon", "min_altitude": 20.0, "min_moon_separation": 0.0 } }, { "name": "查询火星可观测性", "description": "在新昌观测站查询火星的可观测性", "input": { "latitude": 29.501784, "longitude": 120.905740, "target_name": "M31", "min_altitude": 30.0, "min_moon_separation": 30.0 } } ], "metadata": { "name": "StarWhisper-observation-calculator", "version": "1.0.0", "description": "计算天文目标的可观测性,包括高度曲线和约束条件检查", "author": "Cunshi Wang", "license": "MIT", "repository": "https://github.com/example/StarWhisper-observation-calculator", "keywords": [ "astronomy", "observability", "mcp", "astropy", "simbad" ], "dependencies": [ "astropy>=5.0.0", "astroquery>=0.4.6", "astroplan>=0.8.0", "numpy>=1.20.0" ], "python_version": ">=3.8" } }

MCP 服务配置

复制以下 JSON 到 OPClaw 或其他 MCP 客户端的配置文件中即可使用

{
  "mcpServers": {
    "StarWhisper-observation": {
      "args": [
        "mcp_observability_server.py"
      ],
      "command": "python",
      "description": "StarWhisper天文可观测性计算器MCP服务器",
      "env": {
        "PYTHONPATH": "."
      },
      "version": "1.0.0"
    }
  }
}

服务介绍

StarWhisper 天文可观测性计算器

一个用于计算天文目标可观测性的Python包,支持恒星、深空天体和太阳系天体。提供MCP(Model Context Protocol)服务接口,可与支持MCP的AI助手集成。

🌟 主要特性

  • 🔭 多目标支持: 恒星、深空天体、太阳系天体
  • 📍 灵活观测站: 支持自定义观测站位置
  • 🌙 月距约束: 考虑月球干扰的可观测性分析
  • 📊 高度曲线: 生成24小时高度变化曲线
  • 🌐 Web API: 提供RESTful API接口
  • 🤖 MCP服务: 标准MCP协议,支持AI助手集成
  • 📱 命令行工具: 简单易用的CLI界面

🚀 快速开始

安装

# 基本安装
pip install StarWhisper-observation-calculator

# 安装Web服务支持
pip install StarWhisper-observation-calculator[web]

# 安装MCP支持
pip install StarWhisper-observation-calculator[mcp]

基本使用

from StarWhisper_observation_calculator import ObservabilityCalculator

# 创建计算器(默认兴隆观测站)
calculator = ObservabilityCalculator(
    latitude=40.393333,
    longitude=117.575278,
    altitude=900.0
)

# 计算Vega可观测性
result = calculator.calculate_observability("Vega")
print(result)

命令行使用

# 基本使用
observability-calculator Vega

# 指定观测站
observability-calculator moon --latitude 40.393333 --longitude 117.575278

# 自定义约束条件
observability-calculator M31 --min-altitude 20 --min-moon-separation 45

🤖 MCP服务

本包提供完整的MCP服务,可与支持MCP的AI助手(如Claude Desktop、Cursor等)集成。

启动MCP服务

# 方法1: 使用命令行工具
observability-mcp

# 方法2: 直接运行
python -m mcp_observability_server

MCP配置

创建MCP配置文件 ~/.config/mcp/servers/StarWhisper-observation.json:

{
  "command": "observability-mcp",
  "args": [],
  "env": {}
}

MCP工具

服务提供以下MCP工具:

  • calculate_observability: 计算天文目标可观测性
    • 参数: latitude, longitude, target_name, altitude, min_altitude, min_moon_separation, time_range_hours
    • 返回: 详细的可观测性分析报告

在AI助手中使用

安装并配置MCP服务后,你可以直接与AI助手对话:

用户: 请计算Vega在兴隆观测站的可观测性
AI助手: 我来为您计算Vega在兴隆观测站的可观测性...

[调用MCP工具: calculate_observability]
参数: latitude=40.393333, longitude=117.575278, target_name="Vega"

结果: Vega可观测性分析报告
📍 观测站: 40.393333°, 117.575278°, 900.0m
🌌 坐标: 18:36:56.3363, +38:47:01.280
📊 当前高度: -1.31°
✅ 可观测性: 不可观测
...

🌐 Web服务

启动Web服务

# 启动Web服务
observability-web

# 或指定端口
observability-web --port 8080

API接口

  • GET / - Web界面
  • GET /docs - API文档
  • POST /observability - 计算可观测性
  • POST /observability/batch - 批量计算
  • GET /targets/supported - 获取支持的目标
  • GET /observatories - 获取预设观测站

使用示例

# 计算Vega可观测性
curl -X POST "http://localhost:8000/observability" \
  -H "Content-Type: application/json" \
  -d '{
    "latitude": 40.393333,
    "longitude": 117.575278,
    "target_name": "Vega"
  }'

📊 支持的目标

太阳系天体

  • sun, moon, mercury, venus, mars, jupiter, saturn, uranus, neptune, pluto

📍 预设观测站

  • 兴隆观测站: 40.393333°, 117.575278°, 900m
  • 新昌观测站: 29.501784°, 120.905740°, 0m
  • 帕洛马天文台: 33.3563°, -116.8650°, 1712m

🔧 高级配置

自定义观测站

calculator = ObservabilityCalculator(
    latitude=your_latitude,
    longitude=your_longitude,
    altitude=your_altitude,
    timezone="Asia/Shanghai"
)

约束条件

result = calculator.calculate_observability(
    target_name="Vega",
    min_altitude=20.0,        # 最小地平高度
    min_moon_separation=45.0, # 最小月距
    time_range_hours=48       # 检查时间范围
)

📦 包结构

StarWhisper-observation-calculator/
├── observability_calculator.py    # 核心计算模块
├── mcp_observability_server.py    # MCP服务器
├── web_server.py                  # Web服务
├── de440_config.py               # DE440星表配置
├── de440.bsp                     # DE440星表文件
├── finals2000A.all              # IERS数据文件
└── mcp_config.json              # MCP配置文件

🛠️ 开发

安装开发依赖

pip install StarWhisper-observation-calculator[dev]

运行测试

# 测试核心功能
python -c "from StarWhisper_observation_calculator import ObservabilityCalculator; print('✅ 导入成功')"

# 测试MCP服务
python mcp_observability_server.py

# 测试Web服务
python web_server.py

📄 许可证

本项目采用 MIT 许可证,详见 LICENSE 文件。

🤝 贡献

欢迎提交 Issue 和 Pull Request!

📞 支持

For modelscope托管

{
"mcpServers": {
"StarWhisper-observation": {
"command": "python",
"args": ["mcp_observability_server.py"],
"env": {
"PYTHONPATH": "."
},
"description": "StarWhisper天文可观测性计算器MCP服务器",
"version": "1.0.0"
}
},
"tools": {
"calculate_observability": {
"name": "calculate_observability",
"description": "计算指定天文目标的可观测性",
"inputSchema": {
"type": "object",
"properties": {
"latitude": {
"type": "number",
"description": "观测站纬度(度)",
"minimum": 0,
"maximum": 90
},
"longitude": {
"type": "number",
"description": "观测站经度(度)",
"minimum": -180,
"maximum": 180
},
"target_name": {
"type": "string",
"description": "目标名称(如'Vega', 'moon', 'mars'等)"
},
"altitude": {
"type": "number",
"description": "观测站海拔(米)",
"default": 0.0
},
"min_altitude": {
"type": "number",
"description": "最小地平高度(度)",
"default": 30.0,
"minimum": 0,
"maximum": 90
},
"min_moon_separation": {
"type": "number",
"description": "最小月距(度)",
"default": 30.0,
"minimum": 0,
"maximum": 180
},
"time_range_hours": {
"type": "integer",
"description": "检查时间范围(小时)",
"default": 24,
"minimum": 1,
"maximum": 168
}
},
"required": ["latitude", "longitude", "target_name"]
}
}
},
"examples": [
{
"name": "查询Vega可观测性",
"description": "在新昌观测站查询Vega的可观测性",
"input": {
"latitude": 29.501784,
"longitude": 120.905740,
"target_name": "Vega",
"min_altitude": 30.0,
"min_moon_separation": 30.0
}
},
{
"name": "查询月球可观测性",
"description": "在新昌观测站查询月球的可观测性",
"input": {
"latitude": 29.501784,
"longitude": 120.905740,
"target_name": "moon",
"min_altitude": 20.0,
"min_moon_separation": 0.0
}
},
{
"name": "查询火星可观测性",
"description": "在新昌观测站查询火星的可观测性",
"input": {
"latitude": 29.501784,
"longitude": 120.905740,
"target_name": "M31",
"min_altitude": 30.0,
"min_moon_separation": 30.0
}
}
],
"metadata": {
"name": "StarWhisper-observation-calculator",
"version": "1.0.0",
"description": "计算天文目标的可观测性,包括高度曲线和约束条件检查",
"author": "Cunshi Wang",
"license": "MIT",
"repository": "https://github.com/example/StarWhisper-observation-calculator",
"keywords": [
"astronomy",
"observability",
"mcp",
"astropy",
"simbad"
],
"dependencies": [
"astropy>=5.0.0",
"astroquery>=0.4.6",
"astroplan>=0.8.0",
"numpy>=1.20.0"
],
"python_version": ">=3.8"
}
}

相关 MCP 服务