mcpField
A
astrodynamics-mcp

astrodynamics-mcp

Local
github.com/astro-toolsScience & Education2Updated 21w ago

About astrodynamics-mcp

astrodynamics-mcp provides orbital-mechanics tools to MCP clients for satellite, trajectory, and mission analysis. It wraps upstream numerical libraries, returns explicit units, and can add GMAT execution, SPICE queries, and trajectory visualization through optional extras.

Key features

  1. 01TLE lookup and SGP4 propagation
  2. 02Lambert solving and porkchop scans
  3. 03Ground-station access windows
  4. 04Time-scale and coordinate-frame conversions
  5. 05Optional GMAT, SPICE, and visualization tools

Use cases

  1. 01Propagate satellite orbits and inspect metadata
  2. 02Calculate ground-station access intervals
  3. 03Analyze interplanetary transfers and flyby targeting

MCP support

This MCP server exposes orbit propagation, transfer calculations, and coordinate conversions to clients; optional extras add GMAT, SPICE, and visualization tools. It supports stdio and Streamable HTTP transports.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"astro-tools-astrodynamics": {
"command": "uvx",
"args": [
"astrodynamics-mcp"
]
}
}
}
Run commanduvx astrodynamics-mcp

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
pypiastrodynamics-mcp0.4.0

Tools

No tool list yet

Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.

Details

From the project README

astrodynamics-mcp

A Model Context Protocol server that gives any MCP-capable LLM client (Claude Code, Cursor, ChatGPT desktop, custom agents) authoritative astrodynamics tools: TLE/SGP4 propagation, Lambert solving, ground-station access, time-scale and coordinate-frame conversions, porkchop scans, B-plane targeting, satellite metadata, and — with optional extras — full NASA GMAT mission execution ([gmat]), NASA SPICE / NAIF kernel queries ([spice]), and trajectory visualisation ([viz]).

Why

LLMs reason well about astrodynamics concepts but cannot do the numerical work — they cannot propagate orbits, solve Lambert problems, or query SPICE ephemerides. astrodynamics-mcp lets you plug authoritative tools into any MCP-capable client so the LLM calls vetted upstream libraries instead of fabricating numbers. Every result carries explicit units; every tool description tunes against an Inspect AI eval suite that measures whether the LLM picks the right tool and binds the right arguments.

Tools

ToolWhat it doesBacked by
tle_lookupFetch current TLEs by NORAD ID, name, or group — from CelesTrak (default) or Space-Track.CelesTrak gp.php API · Space-Track †
sgp4_propagatePropagate TLEs across UTC ISO 8601 epochs in TEME / ICRF / GCRS / ITRS / CIRS.sgp4
lambert_solveSolve Lambert's problem; multi-rev solutions enumerated; two-impulse Δv on demand.lamberthub
access_windowsGround-station / observer access intervals over a window, with AOS / LOS / peak elevation.skyfield
time_convertUTC / TAI / TT / TDB / UT1 / GPS / TCB / TCG conversions across ISO / JD / MJD / J2000-seconds / Unix.astropy.time
frame_transformState-vector transforms across ICRF / ITRS / GCRS / TEME / CIRS / TIRS / IAU body-fixed frames.astropy.coordinates
porkchop(depart × arrive) Δv / C3 grid for interplanetary transfers, ASCII contour, summary or full output.lamberthub + JPL Horizons
bplane_targetB-plane element calculation and impulsive targeting for hyperbolic flybys.in-house, JPL Horizons fed
satellite_metadataPhysical & provenance metadata (mass, dimensions, COSPAR ID, launch, operator, decay status) for a NORAD ID.ESA DISCOSweb †

† Credentialed source. Pass credentials as environment variables for the stdio transport, or in the session-init _meta block for HTTP — see Credentials. A tool called without its credential returns a typed CredentialRequiredError, never a silent failure.

GMAT tools (optional [gmat] extra)

Install the [gmat] extra and have a local NASA GMAT install, and five more tools register for driving real GMAT missions (they stay hidden otherwise):

ToolWhat it doesBacked by
gmat_run_missionRun a complete GMAT mission; returns a parsed summary, report data, and pointers to large outputs.gmat-run
gmat_sweepParameter sweeps and Monte Carlo (grid / samples / Monte Carlo / Latin hypercube) over a mission.gmat-sweep
gmat_execute_scriptEscape hatch — run raw GMAT script text and return its reports verbatim; engine errors come back as data.gmat-run
gmat_validate_scriptParse-validate a script without running it; returns errors, warnings, and the resource/command structure.gmat-run
gmat_read_run_artefactRead the raw text of a file produced by a prior run (ephemerides, reports too large to inline).run registry
SPICE tools (optional [spice] extra)

Install the [spice] extra and seven more tools register, backed by NASA NAIF's CSPICE through spiceypy (they stay hidden otherwise). They furnish kernels into a process-global pool and query whatever the pool holds:

ToolWhat it doesBacked by
spice_load_kernelFurnish a kernel into the pool from a local path or a NAIF https URL (allowlisted, cached); a meta-kernel furnishes all it lists.spiceypy · NAIF
spice_list_kernelsList the kernels currently furnished in the pool, optionally filtered by category.spiceypy
spice_unload_kernelDrop a furnished kernel by the name spice_load_kernel returned.spiceypy
spice_statePosition / velocity of a target relative to an observer at one or more epochs, from furnished SPK kernels.spiceypy (SPK)
spice_frame_transformRotate a vector between kernel-defined frames — in particular non-Earth body-fixed frames — or return the rotation matrix.spiceypy (FK / PCK)
spice_body_parametersRead a body's radii, GM, and pole / prime-meridian orientation constants from furnished PCK kernels.spiceypy (PCK)
spice_time_convertConvert between the kernel-defined time systems ET / UTC / SCLK using furnished LSK / SCLK kernels.spiceypy (LSK / SCLK)

The kernel model, the NAIF furnish-from-URL allowlist, and the process-global pool's trust boundary are covered on the SPICE integration page.

Visualisation tools (optional [viz] extra)

Install the [viz] extra and four more tools register, backed by matplotlib (static PNG plots) and the gmat-czml sibling (CZML export) — they stay hidden otherwise. Each returns its picture as an attachment alongside a numeric summary, so a text-only client still gets the answer:

ToolWhat it doesBacked by
plot_ground_trackRender a satellite's sub-satellite ground track as a PNG over a lon/lat graticule, with the latitude / longitude extent inline.matplotlib
plot_trajectoryRender an orbit or transfer arc as a 2D or 3D PNG about a central body, with arc length and apsides inline.matplotlib
plot_porkchopRender a porkchop C3 contour as a PNG from a full porkchop grid result — no recompute — with the best cell marked.matplotlib
czml_trajectoryExport a trajectory as a CZML document for a Cesium 3D client, returned as an embedded resource.gmat-czml

The attachment model — additive PNG ImageContent / CZML EmbeddedResource beside the structured summary — and which clients render each kind are covered on the Visualisation page.

Full input / output JSON schemas live on the Tool reference page of the docs site.

Quick start

Install:

uv tool install astrodynamics-mcp            # or: pipx install astrodynamics-mcp
uv tool install "astrodynamics-mcp[gmat]"    # adds the GMAT mission tools (needs a local GMAT install)
uv tool install "astrodynamics-mcp[spice]"   # adds the SPICE tools (pulls spiceypy / bundled CSPICE)
uv tool install "astrodynamics-mcp[viz]"     # adds the visualisation tools (pulls matplotlib / gmat-czml)
Claude Code

Add to your Claude Code MCP settings:

{
  "mcpServers": {
    "astrodynamics-mcp": {
      "command": "astrodynamics-mcp",
      "args": ["stdio"]
    }
  }
}

Restart Claude Code. In a chat:

You: Compute the Hohmann Δv from a 250 km circular LEO to GEO.

(The model calls lambert_solve with the Hohmann geometry and answers ≈ 3.91 km/s, citing the tool output — not the LLM's own weights.)

Cursor

~/.cursor/mcp.json (or workspace-level .cursor/mcp.json):

{
  "mcpServers": {
    "astrodynamics-mcp": {
      "command": "astrodynamics-mcp",
      "args": ["stdio"]
    }
  }
}

Restart Cursor. The tools appear under the astrodynamics server group.

See Pick a client in the docs for ChatGPT desktop, a raw Python MCP smoke client, and the Streamable HTTP transport for remote agents.

Supported clients

ClientTransportVerified
Claude Codestdio✅ Yes
Cursorstdio✅ Yes
ChatGPT desktopstdio⏳ Expected to work
Raw Python (mcp SDK)stdio✅ Yes
Remote agentsStreamable HTTP⏳ Expected to work
LangGraph / AutoGen / CrewAIany⏳ Expected to work

What this is not

  • Not a general-purpose astrodynamics framework. Wraps vetted upstream libraries; does not re-implement propagators, integrators, or coordinate systems.
  • Not an agent framework. Exposes MCP tools; LangGraph, AutoGen, CrewAI, and the LLM clients themselves consume them.
  • Not an ML / inference server. Tools that need their own ML models (maneuver detection, neural propagators) belong in separate MCP servers — kept modular for dependency isolation.
  • Not a SaaS. Runs locally or in your own infrastructure. No hosted multi-tenant deployment.
  • Not a web UI. Tool consumption is via MCP clients; no browser frontend, no desktop app, no notebook widget.

For direct (non-MCP) Python use of the same surfaces, reach for the upstream libraries: sgp4, lamberthub, skyfield, astropy, interplanetary-porkchop, spiceypy.

Built on

The official Anthropic modelcontextprotocol/python-sdk (MIT). The bundled FastMCP server class is the server primitive; stdio + Streamable HTTP transports are first-class.

Docs and links

Privacy

astrodynamics-mcp runs entirely on your own machine and collects nothing — no telemetry, no analytics, no accounts. The only data that leaves your machine is the query parameters a tool sends to the data source it wraps (CelesTrak / JPL Horizons / IERS with no auth, and — only if you configure their credentials — Space-Track and ESA DISCOSweb). Credentials are read from local environment variables or the session _meta block and are sent only to their own service over HTTPS. See the Privacy page for the full breakdown.

License

MIT — see LICENSE.

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.