Model Context Protocol server
Aerospace engineering tools, wired into your AI agent
An open-source MCP server exposing 47 tools across flight planning, orbital mechanics, rocket trajectories, aerodynamics, and trajectory optimization — callable from Claude and any MCP-compatible client.
$ uvx aerospace-mcp · no Rust needed ·
PyPI ↗
aerospace tools
engineering domains
airports (IATA)
aircraft models
Capabilities
Eleven domains, one protocol
Every tool is a typed Python function with an auto-generated MCP schema — discoverable at runtime through the built-in tool search, and callable from the CLI without an MCP client. Trajectory and orbit math runs in a compiled Rust core, shipped prebuilt so installs need no toolchain.
Flight planning
Great-circle routes on WGS-84, multi-leg journeys, wind-aware ETA and fuel from OpenAP performance models.
plan_flight · plan_multi_leg_flight · search_airportsOrbital mechanics
Kepler element conversions, J2 propagation, ground tracks, Hohmann transfers, rendezvous, and an Izzo Lambert solver, in native Rust.
propagate_orbit_j2 · hohmann_transfer · lambert_problem_solverRockets
3-DOF trajectory simulation with ISA atmosphere, vehicle sizing estimates, and launch-angle and thrust-profile optimization, in native Rust.
rocket_3dof_trajectory · optimize_launch_angle · optimize_thrust_profileAerodynamics
Wing VLM analysis, airfoil polars, stability derivatives, and propeller BEMT with UAV energy estimates.
wing_vlm_analysis · airfoil_polar_analysis · propeller_bemt_analysisAtmosphere & frames
US Standard Atmosphere 1976 profiles, wind models, and ECEF/ECI/geodetic transforms with precession and Earth rotation.
get_atmosphere_profile · transform_frames · geodetic_to_ecefAircraft performance
Density altitude, V-speeds, weight & balance, takeoff and landing distances, fuel reserves, and unit conversion.
takeoff_performance · weight_and_balance · convert_unitsOptimization & GNC
Genetic algorithms, particle swarm, Monte Carlo uncertainty, porkchop plots, Kalman filtering, and LQR design.
porkchop_plot_analysis · kalman_filter_state_estimationTool discovery
Search tools by name, keyword, or safe regex — built for Anthropic's deferred tool loading so agents keep context lean.
search_aerospace_tools · list_tool_categoriesIntegration
Call it your way
The same core logic is exposed three ways: an MCP server for AI agents, a FastAPI HTTP service, and a direct CLI.
{
"mcpServers": {
"aerospace": {
"command": "uvx",
"args": ["aerospace-mcp"]
}
}
}
# Search airports by city
curl "http://localhost:8080/airports/by_city?city=San%20Jose&country=US"
# Plan a flight with performance estimates
curl -X POST "http://localhost:8080/plan" \
-H "Content-Type: application/json" \
-d '{
"depart_city": "San Jose",
"arrive_city": "Tokyo",
"ac_type": "A359",
"cruise_alt_ft": 35000
}'
import requests
plan = requests.post("http://localhost:8080/plan", json={
"depart_city": "San Jose",
"arrive_city": "Tokyo",
"ac_type": "A359",
}).json()
est = plan["estimates"]["block"]
print(f"{plan['distance_km']:.0f} km, "
f"{est['time_min']/60:.1f} h, {est['fuel_kg']:.0f} kg fuel")
# Discover tools
aerospace-mcp-cli search "orbit transfer"
# Convert units
aerospace-mcp-cli run convert_units --value 100 --from_unit kts --to_unit mps
# Plan a multi-leg journey
aerospace-mcp-cli run plan_multi_leg_flight \
--waypoints '[{"iata":"SJC"},{"iata":"NRT"},{"iata":"SIN"}]' \
--aircraft '{"ac_type":"A359"}'
On the wire
What an agent sees
Real tool calls and their responses, as the MCP server returns them.
▸ search_airports {"query": "SJC"} Found 1 airport(s): • SJC (KSJC) - Norman Y Mineta San Jose International Airport City: San Jose, US Coordinates: 37.3630, -121.9286 Timezone: America/Los_Angeles
▸ rocket_3dof_trajectory { "rocket_geometry": {"length_m": 2.0, "diameter_m": 0.15, "dry_mass_kg": 10, "propellant_mass_kg": 5, "cd": 0.4, "thrust_curve": [[0, 500], [10, 500], [10.1, 0]]}, "launch_conditions": {"launch_angle_deg": 85} } 3DOF Rocket Trajectory Analysis ================================================== Rocket: 2.0m long, 0.15m dia Mass: 10.0 kg dry + 5.0 kg prop Launch Angle: 85.0° Performance Summary: Max Altitude: 2766 m (2.77 km) Max Velocity: 235.8 m/s (Mach 0.70) Apogee Time: 26.1 s Burnout Time: 10.1 s Max Q: 30.2 kPa Total Impulse: 5025 N⋅s Specific Impulse: 102.5 s Key Trajectory Points: Time (s) Alt (m) Vel (m/s) Accel (m/s²) --------------------------------------------- 0.0 0 0.0 23.6 6.5 529 161.3 23.6 13.1 1837 161.9 19.3 19.7 2558 67.1 11.3 26.2 2766 6.3 9.8 …
▸ hohmann_transfer {"r1_m": 6778000, "r2_m": 42164000} { "delta_v1_ms": 2397.5085699579868, "delta_v2_ms": 1456.5008896284685, "total_delta_v_ms": 3854.0094595864553, "transfer_time_s": 19048.402546893998, "transfer_time_h": 5.291222929692777, "transfer_semi_major_axis_m": 24471000.0 }
Quick start
Running in under a minute
The only prerequisite is uv, which fetches Python if you need it. Prebuilt packages cover Linux, macOS and Windows, so there is no Rust toolchain or compiler to install.
Claude Code
# MCP server + skills, one line
claude plugin marketplace add cheesejaguar/aerospace-mcp \
&& claude plugin install aerospace-mcp@aerospace-mcp
# or just the MCP server
claude mcp add aerospace -- uvx aerospace-mcp
Any agent (skills)
# Cursor, Codex, OpenCode, Claude Code, ...
npx skills add cheesejaguar/aerospace-mcp
# skills call the CLI through uv
curl -LsSf https://astral.sh/uv/install.sh | sh
uv (no Rust needed)
# prebuilt wheels: Linux, macOS, Windows
uv tool install aerospace-mcp
aerospace-mcp-cli search "orbit transfer"
# or run in place, nothing installed
uvx --from aerospace-mcp aerospace-mcp-http
Docker
git clone https://github.com/cheesejaguar/aerospace-mcp
cd aerospace-mcp
docker build -t aerospace-mcp .
docker run -p 8080:8080 aerospace-mcp
# verify
curl http://localhost:8080/health
Outputs are simplified engineering estimates with no certification, no weather data, and no airspace awareness. Never use this software for real navigation, flight planning, or aircraft and spacecraft operations.