Model Context Protocol server giving any LLM client authoritative astrodynamics tools — TLE/SGP4, Lambert, ground-station access, time/frame conversions, porkchop, B-plane.
Project description
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.
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
| Tool | What it does | Backed by |
|---|---|---|
tle_lookup |
Fetch current TLEs from CelesTrak by NORAD ID, name, or group. | CelesTrak gp.php API |
sgp4_propagate |
Propagate TLEs across UTC ISO 8601 epochs in TEME / ICRF / GCRS / ITRS / CIRS. | sgp4 |
lambert_solve |
Solve Lambert's problem; multi-rev solutions enumerated; two-impulse Δv on demand. | lamberthub |
access_windows |
Ground-station / observer access intervals over a window, with AOS / LOS / peak elevation. | skyfield |
time_convert |
UTC / TAI / TT / TDB / UT1 / GPS / TCB / TCG conversions across ISO / JD / MJD / J2000-seconds / Unix. | astropy.time |
frame_transform |
State-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_target |
B-plane element calculation and impulsive targeting for hyperbolic flybys. | in-house, JPL Horizons fed |
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
Claude Code
Add to your Claude Code MCP settings:
{
"mcpServers": {
"astrodynamics": {
"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_solvewith 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": {
"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
| Client | Transport | Verified |
|---|---|---|
| Claude Code | stdio | ✅ Yes |
| Cursor | stdio | ✅ Yes |
| ChatGPT desktop | stdio | ⏳ Expected to work |
Raw Python (mcp SDK) |
stdio | ✅ Yes |
| Remote agents | Streamable HTTP | ⏳ Expected to work |
| LangGraph / AutoGen / CrewAI | any | ⏳ 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
- Docs site: astro-tools.github.io/astrodynamics-mcp — getting started, per-client setup, tool reference, recipes, data sources, eval suite, FAQ.
- Issue tracker: astro-tools/astrodynamics-mcp/issues
- Discussions: orgs/astro-tools/discussions — usage help and open-ended questions.
- Eval suite: eval/README.md — the regression contract on tool-description quality.
License
MIT — see LICENSE.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file astrodynamics_mcp-0.1.1.tar.gz.
File metadata
- Download URL: astrodynamics_mcp-0.1.1.tar.gz
- Upload date:
- Size: 503.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
79873ae9fbc6d76c62c173cf0a873ee60c2d04bf08896deea7ba02bca351a74b
|
|
| MD5 |
cf9a0afeb381f11118c2dba364339c8c
|
|
| BLAKE2b-256 |
44729879d08ba0d343a14af95908fac4f0dd2174e8c534e633c37cbfbde0f704
|
Provenance
The following attestation bundles were made for astrodynamics_mcp-0.1.1.tar.gz:
Publisher:
release.yml on astro-tools/astrodynamics-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
astrodynamics_mcp-0.1.1.tar.gz -
Subject digest:
79873ae9fbc6d76c62c173cf0a873ee60c2d04bf08896deea7ba02bca351a74b - Sigstore transparency entry: 1637076123
- Sigstore integration time:
-
Permalink:
astro-tools/astrodynamics-mcp@40f76a965803627355f951d22595f87515362619 -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/astro-tools
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@40f76a965803627355f951d22595f87515362619 -
Trigger Event:
push
-
Statement type:
File details
Details for the file astrodynamics_mcp-0.1.1-py3-none-any.whl.
File metadata
- Download URL: astrodynamics_mcp-0.1.1-py3-none-any.whl
- Upload date:
- Size: 73.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e8592b766604cd8db8560e8146aa804aa3de7665a90aeac0b78b2c62fadc9166
|
|
| MD5 |
749a929a2aa6a7bb90f536f88c581328
|
|
| BLAKE2b-256 |
0575d111433e3d18ec6a73b9d086e484d93a05d574ec4d21fba2788cff4d985f
|
Provenance
The following attestation bundles were made for astrodynamics_mcp-0.1.1-py3-none-any.whl:
Publisher:
release.yml on astro-tools/astrodynamics-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
astrodynamics_mcp-0.1.1-py3-none-any.whl -
Subject digest:
e8592b766604cd8db8560e8146aa804aa3de7665a90aeac0b78b2c62fadc9166 - Sigstore transparency entry: 1637076479
- Sigstore integration time:
-
Permalink:
astro-tools/astrodynamics-mcp@40f76a965803627355f951d22595f87515362619 -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/astro-tools
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@40f76a965803627355f951d22595f87515362619 -
Trigger Event:
push
-
Statement type: