Sidereon MCP Server
io.github.neilberkman/sidereon
GNSS positioning and astrodynamics: orbit propagation, passes, positioning solves, and RINEX quality control.
What is the Sidereon MCP server?
The Sidereon MCP server exposes GNSS positioning and astrodynamics capabilities through the Model Context Protocol, enabling AI agents to perform satellite orbit propagation, GNSS positioning solves (SPP/RTK/PPP), pass predictions, and RINEX observation quality control. It wraps a validated Rust engine with reference-checked implementations of SGP4/SDP4, coordinate transforms, ephemeris handling, and multi-constellation GNSS algorithms.
Sidereon is a comprehensive GNSS and astrodynamics library compiled to an MCP server. It handles satellite orbit propagation with composable force models, GNSS single-point and real-time kinematic positioning with covariance bounds, integrity metrics (RAIM, ARAIM), time and frame transforms, RINEX parsing and quality assessment, and geodetic calculations. Use it to compute satellite passes, solve receiver positions from raw observations, validate GNSS data quality, or analyze orbital mechanics—all accessible to Claude and other AI agents.
How to install Sidereon
Copy-paste configuration for popular MCP clients.
Tools & capabilities
Tools this server exposes to the agent.
solve— SPP (single-point positioning) from RINEX observations and broadcast/precise ephemerides with covariance-derived error bounds.qc— RINEX observation quality control: completeness, multipath, cycle slips, validated against teqc.inspect— Summarize GNSS product files (SP3, RINEX, OMM) and check ephemeris continuity over a time window.metrics— Compute error metrics (CEP, DRMS, R95, error ellipse) from covariance matrices.tui— Terminal UI for replaying logged RINEX sessions or monitoring live NTRIP/TCP RTCM streams in real time.orbit_propagation— SGP4/SDP4 and numerical propagation with selectable force models (geopotential, tides, drag, SRP, third-body).passes— Compute satellite pass predictions, visibility, ground tracks, and coverage from TLE/OMM elements.rtk_positioning— Real-time kinematic float and fixed (LAMBDA) positioning from dual RINEX streams with millimeter-level validation.ppp_positioning— Precise point positioning (float and fixed) with SSR or Galileo HAS corrections over broadcast ephemeris.integrity_and_bounds— RAIM fault detection/exclusion, ARAIM protection levels, SBAS protection levels, reliability metrics, and observability classification.time_and_frames— UTC/TAI/TT/UT1/TDB/TCG/TCB conversions, leap-second handling, TEME/GCRS/ITRS/geodetic/topocentric transforms per IAU/IERS.ephemeris_handling— Broadcast (RTCM 3) and precise (SP3) ephemeris decode, interpolation, and continuity assessment across GPS/GLONASS/Galileo/BeiDou/QZSS.corrections— SBAS message decode, RTCM SSR and Galileo HAS orbit/clock/bias correction stores, NTRIP client, differential code biases (DCB/OSB).gnss_ins_fusion— Loose and tight coupling of GNSS and IMU with error-state EKF, RTS smoothing, and field-mode receiver constraints.conjunction_screening— Collision probability assessment (TCA, Pc) between satellites or debris.geodesy— Ellipsoidal geodetic direct/inverse (Karney), terrestrial reference frame transforms with ITRF/ETRF parameters, station displacements and velocities.observation_quality— Carrier-phase combinations, Hatch smoothing, cycle-slip detection, multipath estimation with interval-metadata handling.atmosphere_and_terrain— Klobuchar/NeQuick-G ionosphere, IONEX grids, tropospheric delay, NRLMSISE-00 density, DTED terrain, EGM96/EGM2008 geoid.sky_observation— Apparent places (RA/Dec, az/el) for Sun/Moon/planets, rise/set, illumination, eclipses, angular separation, satellite visual magnitude.scenario_simulation— Deterministic scenario simulator producing bit-reproducible synthetic observables with per-term error budgets and ground-truth attribution.
Use cases
- Compute satellite pass predictions and visibility windows for ground stations from TLE data.
- Solve receiver position and velocity from raw GNSS observations (RINEX) with uncertainty bounds and integrity metrics.
- Validate GNSS observation quality (multipath, cycle slips, completeness) in real-time or post-processing.
- Perform real-time kinematic (RTK) positioning for surveying or autonomous systems using dual GNSS receivers.
- Assess collision risk between satellites or debris using conjunction screening with probability estimates.
Sidereon MCP server FAQ
Sidereon is an MCP server wrapping a validated Rust engine for GNSS positioning and astrodynamics. It exposes tools for satellite orbit propagation, GNSS solves (SPP/RTK/PPP), pass prediction, RINEX quality control, time/frame transforms, and integrity metrics to AI agents like Claude.
Yes. Sidereon is open-source under the MIT license. The core library and all language bindings (Rust, Python, C, Go, Elixir, WebAssembly) are freely available.
Download the prebuilt binary from the GitHub releases page (sidereon_2.1.1.mcpb) and configure it in your MCP settings. Alternatively, build from source with `cargo build -p sidereon-cli` and run `sidereon serve-mcp`.
No. The core engine is network-free and deterministic. Optional product loaders (Python/Elixir interfaces) can authenticate to NASA CDDIS/Earthdata for GNSS products, but the MCP server itself requires no credentials.
Sidereon supports GPS, GLONASS, Galileo, BeiDou, and QZSS across all positioning modes (SPP, RTK, PPP, DGNSS) and integrity frameworks (RAIM, ARAIM, SBAS).
Yes. The `tui` command and the underlying engine support NTRIP client stream handling for live RTCM correction feeds, enabling real-time RTK or PPP solutions.
README (reference)
Source of truth, from the repository.
sidereon
GNSS positioning and astrodynamics in Rust, with first-class interfaces in Python, C, Go, WebAssembly, and Elixir. Reference-validated, and bit-exact to public oracles where it counts.
sidereon is one engine: a Rust core for satellite orbit propagation, GNSS positioning, time and frame transforms, atmosphere models, and the standard exchange formats, exposed through idiomatic interfaces in six languages so the same validated math is reachable wherever you work.
Live demo: sidereon.dev: a real-time satellite tracker (globe, ground tracks, coverage, conjunction screening, orbit determination) computed in the browser via the WebAssembly build.
Capabilities
- Orbit propagation: SGP4/SDP4 from TLE/OMM, numerical propagation with a composable force model (spherical-harmonic geopotential to selectable degree and order, solid Earth and pole tides per the IERS conventions, Sun/Moon third-body, solar radiation pressure with conical shadow, Earth albedo and infrared radiation pressure, relativistic correction, NRLMSISE-00 drag), decay/reentry prediction with a post-decay validity latch, Kepler propagation and anomaly conversion, batch/constellation propagation, ground tracks, passes, visibility, and coverage.
- Orbit determination: initial orbit determination (Gibbs, Herrick-Gibbs, Gauss angles-only), batch least-squares fit of the numerical propagator to precise ephemerides with a per-satellite RTN residual ledger, and covariance propagation.
- GNSS positioning: single-point (SPP), RINEX observation to SPP assembly and solve helpers, public multi-epoch
static_positioning/solve_staticsolves with covariance, leave-one-out redundancy diagnostics, and robust weighting (including one-call reference-station static: rover and reference RINEX in, station coordinate with covariance out), Doppler velocity with clock drift, RTK float and fixed (LAMBDA) with baselines built straight from raw RINEX (verified to millimeters against a published ITRF station pair), PPP float and fixed with SSR or Galileo HAS corrections driving the solve over broadcast ephemeris, static PPP with temporal-correlation covariance (calibrated day-length bounds), optional elevation cutoff, and optional tropospheric gradient estimation, DGNSS, across GPS/GLONASS/Galileo/BeiDou/QZSS, with DOP (G/P/H/V/T). - Integrity and error bounds: RAIM fault detection and exclusion, multi-constellation ARAIM (MHSS protection levels), SBAS protection levels (DO-229), classical reliability (per-observation minimal detectable bias, internal/external reliability), observability classification of every solve (rank, redundancy, conditioning), and covariance-derived error metrics (CEP, R95, drms, SEP, error ellipse) that report wide or flagged bounds for weak geometry rather than fabricated confidence, and uncertainty-aware geodesic geofencing (containment and crossing probabilities from a position covariance, with hysteresis).
- GNSS corrections: SBAS message decode and correction application, RTCM SSR and Galileo HAS orbit/clock/bias correction stores with explicit provider reference-point handling, NTRIP client stream handling, and differential code biases (DCB/OSB) from Bias-SINEX and CODE products.
- Ephemeris and time: broadcast and precise (SP3) ephemeris, window-scoped continuity verdicts using the product interpolator's derived stencil reach, RTCM 3 broadcast ephemeris decode for GPS (1019), GLONASS (1020), Galileo (1045/1046), BeiDou (1042), and QZSS (1044), each real-data validated, JPL SPK kernels, source-agnostic satellite state sampling across all three, batched multi-satellite interpolation, scale-aware time (UTC/TAI/TT/UT1/TDB/TCG/TCB and the GNSS system times) with leap-second handling and caller-updatable leap and UT1 tables, and Earth orientation (EOP).
- Timing and clocks: Allan-family stability analysis (ADEV/MDEV/HDEV/TDEV), power-law clock-noise identification with a five-coefficient fit (IEEE 1139), and clock comparison across products.
- Estimation and detection: a covariance-weighted track filter for position fixes (no IMU required: weak-geometry fixes with wide covariances cannot spike the track) with a fixed-interval RTS smoother, scalar Kalman and alpha-beta trackers, innovation gating (NIS), MAD statistics, CFAR detection thresholds, and source localization (ToA/TDOA) from arrival times at known sensors.
- Geodesy and monitoring: geodesic direct and inverse problems on the ellipsoid (Karney), an epoch-aware terrestrial reference frame catalog with published ITRF and ETRF Helmert parameter sets, station displacement corrections (solid Earth tide, pole tide, and ocean loading from caller-supplied BLQ coefficients), station velocity (MIDAS), trajectory fitting with seasonal terms and offsets, step detection, network motion fields with common-mode removal, and repeating-geometry (sidereal) filtering with coverage-aware templates.
- GNSS/INS fusion: field mode for real receivers (zero-velocity and zero-angular-rate updates, non-holonomic vehicle constraints, per-fix-status weighting, IMU-to-body mounting DCM, velocity matching across outages), plus ECEF strapdown mechanization with rigorous attitude integration, an error-state EKF (with a UKF option) using Joseph-form updates, loose and tight coupling (per-satellite pseudorange and range-rate measurements, valid from a single satellite), IGG-III loose updates (measurement reweighting and adaptive prediction scaling behind an outlier guard, from the published schemes), an RTS fixed-interval smoother over recorded histories, time synchronization with checkpointed late-measurement replay, a serializable filter state, and a deterministic IMU error simulator. Field behavior is pinned by simulator-backed tests: fused beats own GNSS under an outlier budget, outages coast within the IMU-grade bound, and sub-4-satellite windows stay covariance-consistent.
- Geometry and events: TEME/GCRS/ITRS/geodetic/topocentric transforms (IAU/IERS), a precise Earth-orientation rotation provider, look angles, eclipse, relative motion in RIC/RTN/LVLH frames with Clohessy-Wiltshire propagation, conjunction screening with collision probability (TCA/Pc), and classical and equinoctial element conversion.
- Observation and almanac: apparent places (geocentric and topocentric RA/Dec and az/el) for the Sun, Moon, and planets, Sun and Moon rise/set, Moon illumination, seasons, moon phases, planetary transits, lunar and solar eclipses, sub-solar/sub-observer and terminator geometry, angular separation and position/phase/beta angles, and satellite visual magnitude.
- Observation quality: RINEX observation QC (completeness, multipath, cycle slips) validated against the standard toolchain, with explicit interval-metadata handling, carrier-phase combinations, and Hatch smoothing.
- Simulation: a deterministic scenario simulator that turns the library into a validation instrument: versioned scenarios with a per-term error budget produce bit-reproducible synthetic observables plus a ground-truth ledger attributing solver error to each budget term.
- Atmosphere and terrain: Klobuchar and full Galileo NeQuick-G ionosphere, IONEX grids (vertical TEC and slant delay), tropospheric delay, NRLMSISE-00 density, DTED terrain elevation lookup with batch probes, a memory-mappable terrain store, EGM96/EGM2008 geoid grids, and a PROJ 9.3-compatible EGM96 GTX loader with explicit fused or separately rounded radian interpolation.
- RF link and signal analysis: free-space path loss, EIRP, carrier-to-noise (C/N0), link margin, and closed-form navigation-signal figures of merit (BPSK/BOC spectra, spectral separation coefficients, DLL thermal-noise jitter, multipath error envelopes) validated against published constants.
- Formats: TLE/OMM (Alpha-5 catalog numbers and CelesTrak GP CSV/JSON), CCSDS OEM/OPM/CDM/TDM, RINEX observation/navigation/clock, CRINEX (Hatanaka encode/decode), SP3, IONEX, ANTEX, Bias-SINEX, CODE DCB, RTCM 3.x, NMEA 0183, with forgiving parsers and round-trippable serializers for the formats that support it.
- Public product distribution: exact GNSS product identity is independent of
its direct archive, NASA CDDIS/Earthdata, local-file, or in-memory source. The
network-free core derives official SP3/IONEX names, source locations, and
collision-resistant cache paths; the Python and Elixir interfaces add
authenticated acquisition, validation, typed failures, and secret-free
provenance. See the design note.
Resilience under analysis-center publication lag: an opt-in cross-line walk
for CODE's predicted ionosphere (
P1thenP2, same map date, provenance naming the line served), a bounded publication-status query (newest published issue per center and line, its archive-reported publication text, and its lag behind nominal - distinguishing "nothing published" from an unreachable archive), a network-free next-issue due-time query with exact identity and observed/predicted coverage, and a wider ultra pool including the IGS combined ultra and Wuhan's hourly MGEX NRT line. Broadcast ephemerides as the resilience floor are a recorded design issue.
Install
cargo add sidereon
use sidereon::astro::passes::{look_angle, GroundStation, UtcInstant};
let line1 = "1 25544U 98067A 24001.50000000 .00016717 00000-0 10270-3 0 9009";
let line2 = "2 25544 51.6400 208.8657 0002644 250.3037 109.7782 15.49560812999990";
let elements = sidereon::astro::tle::parse(line1, line2)?.elements.to_element_set()?;
let station = GroundStation { latitude_deg: 51.5, longitude_deg: -0.1, altitude_m: 10.0 };
let when = UtcInstant::from_utc(2024, 1, 1, 12, 0, 0, 0).ok_or("bad datetime")?;
let look = look_angle(&elements, station, when)?;
println!("az {:.2} el {:.2} range {:.1} km", look.azimuth_deg, look.elevation_deg, look.range_km);
More runnable examples, in all six languages, are on the live demo.
The command line
The repo ships a single binary for working without writing code:
sidereon solve --obs rover.obs --nav brdc.nav # SPP per epoch, bounds always shown
sidereon qc --obs rover.obs # teqc-style observation quality report
sidereon inspect FILE [--window FROM THROUGH] # summarize a file and optionally scope SP3 continuity
sidereon metrics --enu-cov "..." # CEP / DRMS / R95 / ellipse from a covariance
sidereon tui --obs rover.obs --nav brdc.nav # replay a session in the terminal monitor
sidereon tui --ntrip host:2101 --mount MP ... # watch a live stream solve in real time
sidereon serve-mcp # expose the engine to AI agents over MCP
Crates
sidereon-core: the engine. SGP4/SDP4 propagation, coordinate and time transforms, RINEX/SP3/ANTEX/OMM/RTCM parsing, broadcast and precise ephemeris, SPP/RTK/PPP/static/DGNSS positioning, DOP and visibility, conjunction assessment, and the supporting numerical kernels.sidereon: the ergonomic Rust interface oversidereon-core. Product loaders, CRINEX encode/decode, Sun/Moon sky helpers, geodetic/topocentric and TLE look-angle/ground-track shortcuts, Doppler helpers, plus SPP/RTK/PPP/static solves with result structs and one error enum. This is the Rust interface, held to the same parity bar as the bindings below.sidereon-cli: thesidereoncommand-line tool over the engine:solve(SPP from RINEX with covariance-derived bounds always shown),qc,metrics,inspect, a terminal solution monitor (tui) that replays a logged RINEX session or watches a live NTRIP/TCP RTCM stream, andserve-mcp, a Model Context Protocol server exposing the engine to AI agents through task tools plus a typed capability graph. Built from this repo withcargo build -p sidereon-cli; not yet on crates.io.trust-region-least-squares: a standalone, independently publishable nonlinear least-squares solver that reproduces SciPy's trust-region-reflectiveleast_squaresbit-for-bit. It does not depend on the engine.
Interfaces
The Rust interface is the sidereon crate above. The other language interfaces live in their own repositories, each over the same core:
- Python:
sidereon-python(PyPI:sidereon) - C:
sidereon-c - Go:
sidereon-go - Elixir:
sidereon-ex(Hex:sidereon) - JavaScript / WebAssembly:
sidereon-wasm(npm:@neilberkman/sidereon)
Validation
Evaluation is deterministic: the same product, the same version, and the same platform give identical bits, and releases that change evaluation bits for an existing surface say so in the changelog. Cross-platform bit identity holds only where a test pins it.
Every numerical routine is cross-checked against the reference implementation or published standard for its domain, not just internal goldens. Each check runs in the test suite against a committed reference fixture whose provenance (tool, version, source) is recorded, and many gates are bit-for-bit.
| Capability | Cross-checked against | Reference |
|---|---|---|
| SGP4 / SDP4 propagation | Vallado / CelesTrak verification states | Vallado, Crawford, Hujsak & Kelso, Revisiting Spacetrack Report #3, AIAA 2006-6753 |
| Frames, time, ephemerides (TEME/GCRS/ITRS, IAU 2006/2000A) | Pinned Skyfield vectors (ERFA/SOFA routines under the hood) | IAU SOFA / ERFA |
| Earth orientation | IERS Earth-orientation parameters | Petit & Luzum (eds.), IERS Conventions (2010), IERS TN 36 |
| Least-squares engine (TRF) | SciPy least_squares, bit-exact | Virtanen et al., SciPy 1.0, Nature Methods 17 (2020) |
| GNSS positioning (SPP / RTK / PPP) | RTKLIB oracle arcs and real IGS precise products | RTKLIB; International GNSS Service (IGS) |
| Geoid undulation (EGM96 15-arcminute) | PROJ (us_nga_egm96_15), to 5 mm | PROJ |
| RINEX observation QC - multipath (MP1/MP2) | teqc +qc on a real captured stream, to sub-micrometer | teqc |
| RTCM MSM lock-time to RINEX LLI | RTKLIB convbin decode of a real MSM stream | RTKLIB |
| RTCM 3 MSM1..MSM7, legacy 1001..1004 / 1009..1012, NavIC 1041, GLONASS 1230 and IGS SSR 4076 decoding | RTKLIB decode_rtcm3 of real multi-constellation streams and RTKLIB-encoded streams, bit for bit | RTKLIB |
| RTCM 3 SSR 1057..1270 and IGS SSR 4076 (every subtype, VTEC included) decoding | BNC SSR decoder on BNC-encoded, RTKLIB-encoded and real IGS SSR streams, bit for bit | BKG NTRIP Client (BNC) |
| RTCM 3 network RTK and transformation messages (1014-1017, 1021-1027, 1030-1032, 1034, 1035, 1037-1039) | pyrtcm message layouts, field for field | pyrtcm |
The per-crate test suites document the exact references, fixtures, and tolerances. The Python oracle version-pinning note records cross-version FITPACK and pseudo-inverse checks and the fixture-regeneration rules they establish.
License
MIT
Related MCP servers

CCRider
Search, browse, and resume your coding agent sessions across Claude Code, Codex, Copilot, and more.

Clippy
Copy AI-generated content to macOS clipboard instantly—emails, code, text, and files.

Apple Health
Query your Apple Health data locally with SQL—sleep, workouts, heart metrics.

io.github.nelsonjordanme/clypt
Model Context Protocol server for Clypt — submit podcast URLs, receive clips and trailer.

Terrarium
Human visual review for agent-built HTML: publish artifacts, pull anchored comments, push fixes.

Neo4j GDS Agent
Run Neo4j Graph Data Science algorithms through Claude, Cursor, and other LLMs via MCP.