Skip to main content

heliospice

Spacecraft ephemeris made easy — auto-managed SPICE kernels for heliophysics missions.

heliospice wraps SpiceyPy with automatic kernel download, caching, and loading. Ask for a spacecraft position and heliospice handles the rest: downloading the right NAIF kernels, loading them in the correct order, and returning results as Python dicts or pandas DataFrames.

Installation

pip install heliospice

For MCP server support (Claude Desktop, Claude Code, Cursor, etc.):

pip install heliospice[mcp]

Quick Start

from heliospice 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())

Kernels are automatically downloaded from NAIF on first use and cached in ~/.heliospice/kernels/.

Supported Missions

With SPICE Kernels (auto-downloaded)

  • PSP (Parker Solar Probe) — 2018-2030
  • Solar Orbiter (SOLO) — 2020-2030
  • STEREO-A — 2017-2031
  • Juno — 2011-present (updated regularly)
  • Voyager 1/2 — 1981-2100 / 1989-2100
  • New Horizons — 2019-2030

NAIF IDs Only (no auto-download yet)

  • ACE, Wind, DSCOVR, MMS (1-4) — no public SPK kernels exist
  • Cassini, MAVEN — require multi-segment kernel loading (planned)
  • Galileo, Pioneer 10/11, Ulysses, MESSENGER, STEREO-B

Natural Bodies

Sun, Earth, Moon, Mercury, Venus, Mars, Jupiter, Saturn, Uranus, Neptune, Pluto

API Reference

Position & Trajectory

from heliospice 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,
)

Coordinate Transforms

from heliospice 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())

Mission Registry

from heliospice 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()

Kernel Management

from heliospice 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

Configuration

Method Description
HELIOSPICE_KERNEL_DIR env var Override kernel cache directory
KernelManager(kernel_dir=...) Per-instance override
Default ~/.heliospice/kernels/

MCP Server

heliospice includes an MCP server for LLM tool use:

# Run directly
heliospice-mcp

# Or via Python
python -m heliospice.server

Claude Desktop Configuration

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "heliospice": {
      "command": "heliospice-mcp"
    }
  }
}

Available MCP Tools

Tool Description
get_ephemeris Position/velocity — single time (inline) or timeseries (CSV)
compute_distance Distance between two bodies
transform_coordinates Coordinate frame transform
list_spice_missions Supported missions
list_coordinate_frames Available frames with descriptions
manage_kernels Kernel cache management

License

MIT

Metadata

Release files for heliospice 0.5.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for heliospice 0.5.0
File Size Uploaded
heliospice-0.5.0.tar.gz 6.7 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for heliospice 0.5.0
File Interpreter ABI Platform
heliospice-0.5.0-py3-none-any.whl Python 3 none any Details

Total release size: 6.7 MB

Release files / heliospice-0.5.0.tar.gz

Download URL heliospice-0.5.0.tar.gz
Size 6.7 MB
Tags Source
SHA-256 checksum
How to use checksums
4825829c46e7d3607e097e1ec4b25b79b752dfae6c8a79afec7d23b5f0c4408b
BLAKE2b-256 checksum
How to use checksums
e1d28ee650a8e5628444cc3619fe2237cef526c12d1651e57973cec9ae7e6e8a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.5

Release files / heliospice-0.5.0-py3-none-any.whl

Download URL heliospice-0.5.0-py3-none-any.whl
Size 42.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
533c4fa80fc477cf3ca44d1b19d48271a0a664985d4da2a54bd561f0fa7aa4d4
BLAKE2b-256 checksum
How to use checksums
a3dda731cba00fbd5b10cdf6d12a7194b7a8068e45ed7a31e6785995c8c33b54
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.5

Release history Release notifications | RSS feed

This release

0.5.0 This release

2 release files

0.4.3

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page