Skip to content

Releases: astro-tools/astrodynamics-mcp

v0.4.0

07 Jun 01:49
5ef20e7

Choose a tag to compare

The visualisation release. Adds four visualisation tools behind an
optional [viz] extra — three matplotlib static-plot tools
(plot_ground_track, plot_trajectory, plot_porkchop) returning PNG
images, and czml_trajectory, which exports a CZML document for a Cesium
3D client via the gmat-czml sibling. Every viz tool returns its picture
alongside the numeric summary — a PNG ImageContent or a CZML
EmbeddedResource added to, never replacing, the structured / ASCII
output — so a text-only client still gets the answer. The tools register
only when the extra is importable (pip install astrodynamics-mcp[viz]),
so the base install stays viz-free.

Added

  • Visualisation tools behind an optional [viz] extra — three matplotlib
    static-plot tools and one CZML export tool, plus the additive attachment
    output channel they share. plot_ground_track renders a sub-satellite
    ground track over a lon / lat graticule; plot_trajectory renders a 2D
    or 3D orbit / transfer arc about a central body; plot_porkchop renders
    a C3 contour from an existing porkchop grid with no recompute; and
    czml_trajectory exports a trajectory as a CZML document for a Cesium
    client. PNGs come back as ImageContent, CZML as an EmbeddedResource,
    each beside the inline numeric summary that stays the default. PNG
    rendering is deterministic — the headless Agg backend, a fixed DPI, and
    stripped version / timestamp metadata chunks make repeated renders
    byte-identical within a matplotlib version, so the same call returns an
    identical image over stdio and Streamable HTTP. The slots register only
    under the [viz] install, the same gate the [gmat] and [spice]
    extras use (#131, #132, #133).
  • Eval-suite visualisation coverage — a single-tool prompt for each of the
    four viz tools plus a sequential sgp4_propagateplot_ground_track
    prompt, scored by an attachment-aware hybrid scorer that asserts an
    attachment is produced and carries its declared type (ImageContent
    versus EmbeddedResource); a requires_viz gate skips these prompts
    when the extra is absent, mirroring requires_spice / requires_gmat.
    Plus two runnable example sessions — a static-plot session and a
    CZML-export session — each shipping a markdown transcript and a Python
    script that drives the same sequence against an in-process MCP server
    (#134).
  • Documentation for the v0.4 surface: a Visualisation page covering the
    plot tools, czml_trajectory, the additive attachment model
    (ImageContent / EmbeddedResource), and which clients render images
    versus CZML; tool-reference entries for all four tools; output-shaping
    and supported-clients updates; the [viz] install line; and the viz
    tools table in the README (#136).

v0.3.0

06 Jun 18:55
85c3b70

Choose a tag to compare

The SPICE / NAIF release. Adds seven SPICE tools behind an optional
[spice] extra — kernel furnishing, SPK ephemeris state, frame
rotations, body parameters, and kernel-defined time conversions — backed
by NASA NAIF's CSPICE through spiceypy. The tools register only when
spiceypy is importable (pip install astrodynamics-mcp[spice]), so the
base install stays SPICE-free.

Added

  • SPICE tools behind an optional [spice] extra — the kernel-management
    trio (spice_load_kernel, spice_list_kernels, spice_unload_kernel)
    plus four query tools: spice_state (SPK position / velocity with
    light-time), spice_frame_transform (FK / PCK / TF frame rotations),
    spice_body_parameters (PCK radii / GM / pole and prime-meridian
    constants), and spice_time_convert (ET / UTC / SCLK via LSK / SCLK
    kernels). The tools furnish kernels into a process-global pool and
    query whatever the pool holds; every CSPICE call is serialised onto one
    dedicated worker thread, and https loads route through a NAIF-host
    allowlist and the XDG kernel cache. The slots register identically on
    stdio and Streamable HTTP (#120, #121, #122, #123, #124, #125, #126).
  • Eval-suite SPICE coverage plus a fourth runnable example session — a
    Mars-state query that furnishes NAIF kernels and reads an SPK state —
    shipping a markdown transcript and a Python script that drives the same
    sequence against an in-process MCP server and asserts numerical
    tolerance (#127).
  • Documentation for the v0.3 surface: a SPICE-integration design page
    covering the kernel model, the NAIF furnish-from-URL allowlist, and the
    process-global pool's trust boundary; tool-reference entries for all
    seven tools; and the [spice] install line and tools table in the
    README (#120, #129).

v0.2.2

29 May 16:34
511aeb4

Choose a tag to compare

Repository packaging only; no change to the installed package, tool
behaviour, or numerical output.

Added

  • A root .mcp.json and a .plugin/plugin.json manifest, following the
    Open Plugin Specification, so the repository
    is auto-detectable — with real plugin metadata (name, description,
    author, homepage, license, keywords) instead of placeholders — by
    directory scanners such as the Cursor Directory. The .mcp.json runs
    the server zero-install via uvx with the [gmat] extra (so the GMAT
    tools are available when a local GMAT install is present) and doubles as
    a copy-paste client config.

Changed

  • Standardised the client-config alias to astrodynamics-mcp (from
    astrodynamics) across the README, docs, and example transcripts, so
    the alias the client groups the tools under matches the package and
    plugin name.

v0.2.1

29 May 15:33
2b80fb2

Choose a tag to compare

Packaging and metadata polish for directory submission; no change to tool
behaviour or numerical output.

Added

  • A human-readable title on every tool's annotations (e.g. "TLE
    Lookup", "GMAT Run Mission"), so MCP clients and directories can show a
    display name alongside the tool id.
  • A Privacy page
    and a README Privacy section documenting that the server runs locally
    and collects nothing; the MCPB manifest now declares a
    privacy_policies URL.
  • Project logo committed to the repository.

Changed

  • Refreshed the MCPB bundle's long_description to cover the full v0.2
    tool surface (satellite_metadata, the GMAT tools, the Space-Track
    source); it previously described only the eight v0.1 tools.

v0.2.0

29 May 14:46
3a146c3

Choose a tag to compare

The GMAT integration release. Adds GMAT mission execution, parameter
sweeps, and script validation behind an optional [gmat] extra;
credential passthrough for Space-Track and ESA DISCOSweb; a
satellite_metadata tool; and a wider eval suite and CI matrix. Drops
the Smithery publishing path.

Added

  • GMAT integration tools behind an optional [gmat] extra —
    gmat_run_mission, gmat_sweep, gmat_execute_script,
    gmat_validate_script, and gmat_read_run_artefact, wrapping
    gmat-run and gmat-sweep. The tools register only when gmat-run
    is importable (pip install astrodynamics-mcp[gmat]), so the base
    install stays GMAT-free. Each call runs gmatpy in an isolated
    subprocess: gmatpy bootstraps a single global Moderator that
    successive runs in one interpreter would corrupt, and its C++ run loop
    holds the GIL, so isolation keeps runs from leaking state into each
    other or blocking the server's event loop (#70, #71, #72, #73, #82,
    #91).
  • GMAT script skeletons shipped as MCP resources under
    gmat-skeleton:// URIs — 20 vetted mission archetypes (LEO / GEO /
    lunar transfers, Hohmann, B-plane targeting, finite- and
    electric-propulsion burns, LEO and lunar station-keeping, contact and
    eclipse location, attitude pointing, constellations, control flow) to
    seed LLM-assisted script authoring (#83).
  • Credential passthrough for credentialed data sources — environment
    variables for the stdio transport, session-init _meta metadata for
    HTTP. A tool that needs a credential it cannot find raises a typed
    CredentialRequiredError (stable credential_required.<source> code,
    naming the missing fields) rather than failing silently (#67).
  • Space-Track as an alternate source for tle_lookup via
    source="space-track", for recent launches and as a CelesTrak
    fallback. Requires Space-Track credentials; CelesTrak stays the
    no-auth default (#74).
  • satellite_metadata — physical and provenance metadata (mass,
    bounding-box dimensions, COSPAR ID, launch date and site, operator,
    mission type, decay status) for a NORAD ID, backed by ESA DISCOSweb.
    Requires a DISCOSweb bearer token (#75).
  • Eval suite expanded to 40 prompts with GMAT-tool and credentialed-tool
    coverage. GMAT and credentialed prompts skip — rather than fail — when
    their prerequisites are absent, so the suite runs without secrets or a
    GMAT install (#76).
  • Multi-model offline eval workflow for release-cut comparison across
    the GitHub Models catalogue, separate from the per-PR gate (#69).
  • macOS added to the CI test matrix — now Ubuntu, Windows, and macOS ×
    Python 3.10 / 3.11 / 3.12 (#68).
  • Documentation for the v0.2 surface: a GMAT-integration design page
    recording the tool-granularity, HTTP-transport, and [gmat]-extra
    decisions, plus tool-reference and recipe updates (#66, #77).

Changed

  • Typed AstroMCPError envelopes now reach the wire on every tool — the
    code, message, and data fields serialise into the MCP error
    response so the LLM consumer can branch on a stable code, and
    non-finite (NaN / Inf) values are rejected at the Quantity
    boundary instead of leaking into a response (#108).
  • Data-layer hardening across the adapters: per-event-loop client
    lifecycle with clean shutdown, stale-cache fallback on upstream
    outage, correct Space-Track query encoding, and caching of Horizons
    in-band errors (#110).

Fixed

  • Contained the basename fallback in gmat_read_run_artefact so a
    crafted name cannot escape the run's output directory — artefact
    reads are confined to direct children of the run workspace (#109).

Removed

  • Smithery publishing infrastructure. The canonical MCPB bundle ships
    with an empty tools[] (clients discover tools over the MCP protocol
    at runtime), but Smithery requires a populated tools[] to List a
    server — an irreconcilable conflict — so the Smithery-specific bundle
    and its publish job are removed. PyPI, the Official MCP Registry, and
    the GitHub Release MCPB asset remain the distribution path (#64).

v0.1.5

27 May 03:45
ef25bf2

Choose a tag to compare

What's Changed

  • Cut v0.1.5: claim Output Schemas + Annotations + Parameter Descriptions on Smithery by @djankov in #63

Full Changelog: v0.1.4...v0.1.5

v0.1.4

27 May 03:13
90df2ec

Choose a tag to compare

What's Changed

  • Cut v0.1.4: generate Smithery tools[] with real inputSchema at pack time by @djankov in #60

Full Changelog: v0.1.3...v0.1.4

v0.1.3

27 May 02:52
765db34

Choose a tag to compare

What's Changed

  • Cut v0.1.3: declare tools[] in MCPB manifests so Smithery publish succeeds by @djankov in #58

Full Changelog: v0.1.2...v0.1.3

v0.1.2

27 May 02:40
93e1856

Choose a tag to compare

What's Changed

  • Cut v0.1.2: fix Smithery + Official MCP Registry publish by @djankov in #56

Full Changelog: v0.1.1...v0.1.2

v0.1.1

27 May 02:12
40f76a9

Choose a tag to compare

What's Changed

  • Cut v0.1.1: MCPB bundle + Smithery + Official MCP Registry auto-publish by @djankov in #54

Full Changelog: v0.1.0...v0.1.1