关于 HelioSPICE
HelioSPICE 基于 SpiceyPy 计算日球物理任务的航天器星历、位置、速度和坐标变换。它自动下载、缓存并加载 NAIF 内核,也包含供 LLM 调用工具的 MCP 服务。
主要功能
- 01计算航天器位置和轨迹
- 02返回位置与速度状态
- 03转换坐标系
- 04下载、缓存并加载 NAIF 内核
- 05列出支持的任务和坐标系
适用场景
- 01查询指定时刻的航天器位置
- 02生成航天器轨迹时间序列
- 03转换不同坐标系中的向量
- 04管理缓存的 SPICE 内核
MCP 相关
MCP 服务向 MCP 客户端提供星历、距离计算、坐标变换、任务与坐标系列表以及内核管理工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
xhelio-spice
轻松获取航天器星历——为日球物理任务自动管理 SPICE 内核。
xhelio-spice 基于 SpiceyPy,实现内核的自动下载、缓存和加载。只需查询航天器位置,剩下的交给 xhelio-spice:下载合适的 NAIF 内核,按正确顺序加载,并以 Python 字典或 pandas DataFrame 的形式返回结果。
安装
pip install xhelio-spice
要使用 MCP 服务(Claude Desktop、Claude Code、Cursor 等):
pip install xhelio-spice[mcp]
快速开始
from xhelio_spice import get_position, get_trajectory
# Where is Parker Solar Probe right now?
pos = get_position("PSP", observer="SUN", time="2024-01-15", frame="ECLIPJ2000")
print(f"PSP is {pos['r_au']:.3f} AU from the Sun")
# Get a month of trajectory data as a DataFrame
df = get_trajectory(
"PSP", observer="SUN",
time_start="2024-01-01", time_end="2024-01-31",
step="1h", frame="ECLIPJ2000",
)
print(df[["r_au"]].describe())
首次使用时会自动从 NAIF 下载内核,并缓存到 ~/.xhelio_spice/kernels/。
支持的任务
提供 SPICE 内核(自动下载)
- PSP(Parker Solar Probe)——2018-2030
- Solar Orbiter(SOLO)——2020-2030
- STEREO-A——2017-2031
- Juno——2011 年至今(定期更新)
- Voyager 1/2——1981-2100 / 1989-2100
- New Horizons——2019-2030
仅提供 NAIF ID(暂不支持自动下载)
- ACE、Wind、DSCOVR、MMS(1-4)——没有公开的 SPK 内核
- Cassini、MAVEN——需要加载多个片段内核(计划中)
- Galileo、Pioneer 10/11、Ulysses、MESSENGER、STEREO-B
天体
Sun、Earth、Moon、Mercury、Venus、Mars、Jupiter、Saturn、Uranus、Neptune、Pluto
API 参考
位置与轨迹
from xhelio_spice import get_position, get_trajectory, get_state
# Single position
pos = get_position("ACE", observer="EARTH", time="2024-06-01", frame="GSE")
# Full state (position + velocity)
state = get_state("PSP", observer="SUN", time="2024-01-15", frame="ECLIPJ2000")
# Trajectory timeseries (returns pandas DataFrame)
df = get_trajectory(
"Cassini", observer="SATURN",
time_start="2010-01-01", time_end="2010-12-31",
step="6h", frame="ECLIPJ2000",
include_velocity=True,
)
坐标变换
from xhelio_spice import transform_vector, list_available_frames
# J2000 to Ecliptic
v_ecl = transform_vector([1.0, 0.0, 0.0], "2024-01-15", "J2000", "ECLIPJ2000")
# RTN transform (requires spacecraft)
v_rtn = transform_vector(
[5.0, -3.0, 1.0], "2024-01-15",
from_frame="ECLIPJ2000", to_frame="RTN",
spacecraft="PSP",
)
# List all frames
print(list_available_frames())
任务注册表
from xhelio_spice import resolve_mission, list_supported_missions
# Resolve name aliases
naif_id, key = resolve_mission("Parker Solar Probe") # -> (-96, "PSP")
# List all spacecraft
missions = list_supported_missions()
内核管理
from xhelio_spice import get_kernel_manager
km = get_kernel_manager()
km.ensure_mission_kernels("PSP") # Download + load
print(km.get_cache_info()) # Cache stats
km.unload_all() # Free memory
配置
| 方法 | 说明 |
|---|---|
XHELIO_SPICE_KERNEL_DIR env var | 覆盖内核缓存目录 |
KernelManager(kernel_dir=...) | 按实例覆盖 |
| 默认值 | ~/.xhelio_spice/kernels/ |
MCP 服务
xhelio-spice 内置 MCP 服务,可供大模型调用工具:
# Run directly
xhelio-spice-mcp
# Or via Python
python -m xhelio_spice.server
Claude Desktop 配置
将以下内容添加到 claude_desktop_config.json:
{
"mcpServers": {
"xhelio-spice": {
"command": "xhelio-spice-mcp"
}
}
}
可用的 MCP 工具
| 工具 | 说明 |
|---|---|
get_ephemeris | 位置/速度——单个时间点(内联)或时间序列(CSV) |
compute_distance | 计算两个天体之间的距离 |
transform_coordinates | 坐标系变换 |
list_spice_missions | 支持的任务 |
list_coordinate_frames | 可用坐标系及其说明 |
manage_kernels | 内核缓存管理 |
MCP 冒烟测试
如需进行不请求下载内核且适用于 CI 的 MCP 检查,请运行:
uv run --extra mcp python scripts/smoke_mcp_list_tools.py --json
此冒烟测试会使用隔离的临时内核缓存启动 stdio 服务,运行 MCP initialize + list_tools,并验证公布的工具名称。
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。