brahe-mcp
The brahe-mcp server provides a comprehensive suite of astrodynamics and space situational awareness tools via the Model Context Protocol (MCP), enabling language models to perform orbital mechanics, satellite data queries, propagation, access analysis, and visualization.
Constants & Time
Retrieve astrodynamics constants (e.g., Earth's radius, gravitational parameter)
Get current time; convert between time systems (UTC, GPS, TAI, TT, UT1) and formats (ISO, MJD, JD, GPS)
Coordinate & Frame Transforms
Convert positions and states between ECEF, geodetic, geocentric, ECI, GCRF, ITRF, EME2000
Convert relative positions to topocentric frames (ENZ, SEZ, AZEL)
Convert RA/Dec to ECI/GCRF and topocentric coordinates with proper motion
Orbital Mechanics
Compute orbital properties (period, mean motion, etc.)
Convert between mean, eccentric, and true anomalies
Convert equinoctial and mean/osculating elements (Brouwer-Lyddane, numerical averaging)
Convert between RTN and ROE relative states
Attitude
Convert between quaternion, Euler axis/angle, and rotation matrix representations
Compose rotations and perform quaternion spherical interpolation
Orbit Propagation
SGP4/SDP4 from TLE data
Two-body Keplerian analytical propagation
High-fidelity numerical integration with configurable force models (gravity, drag, SRP, third-body, relativity)
Propagate directly from GP records fetched from CelesTrak or SpaceTrack
Satellite Catalog & Data
Query CelesTrak for GP records, supplemental GP data, and SATCAT
Query SpaceTrack for GP records, historical GP, SATCAT, conjunction data messages (CDMs), and decay predictions (requires
SPACETRACK_USER/SPACETRACK_PASScredentials)Query GCAT (Jonathan McDowell's catalog) for SATCAT and PSATCAT records with rich filtering
Look up small bodies (asteroids, comets) via JPL SBDB and ephemerides via JPL Horizons
Manage SPICE kernels and query planetary/small-body ephemerides
Ground Stations
List and query ground station locations by provider, geography, and frequency band
Access & Visibility Analysis
Compute satellite access windows to ground locations with configurable constraints (elevation, off-nadir, range, etc.)
Compute access directly from GP records for streamlined workflows
Plotting & Visualization
Orbital element history trends from GP records
Satellite altitude vs. time
Ground tracks on a world map (with optional ground station overlays)
Keplerian orbital element evolution over a propagation arc
Access geometry (polar, elevation, elevation-azimuth views)
Gabbard diagrams (apogee/perigee vs. orbital period)
Interactive 3D trajectory plots (Earth-centered or synodic frame); 3D plots return an inline PNG and save an interactive HTML file to disk
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@brahe-mcpGet the current Two-Line Element set for the ISS"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
brahe-mcp
This project provides a Model Context Protocol (MCP) server that exposes the astrodynamics capabilities of the Brahe library enabling language models to get smarter about astrodynamics and space situational awareness.

Capabilities
Recent additions expose more of brahe's 1.7.0 astrodynamics surface as MCP tools:
Group | Tools | Notes |
Frame transforms |
| Position/state/rotation transforms across GCRF, ITRF, EME2000, GSE, EMR, SER, EMBI, SSBI, lunar (LCI/LFME/LFPA), Mars (MCI/MCMF), the Synodic rotating frame, and generic body frames. |
SPICE & body ephemerides |
| Manage SPICE kernels and query planet/Moon/Sun/barycenter states via SPICE. |
Small bodies |
| Look up asteroids/comets via the JPL Small-Body Database (SBDB) and sample ephemerides generated on demand via JPL Horizons. Both make live JPL network calls. |
3D plots |
| Interactive 3D trajectory plots about Earth or in a synodic (rotating two-body) frame; each returns an inline PNG plus a saved interactive HTML file. |
RA/Dec coordinates |
| Right ascension/declination to inertial (ECI/GCRF) and topocentric (AZEL) frames, plus IAU SOFA proper-motion propagation. Proper motion is in mas/yr; |
Orbital elements |
| Equinoctial elements (with retrograde factor |
Relative motion |
| RTN and quasi-nonsingular ROE conversions between a chief and deputy satellite. |
Attitude |
| Quaternion, Euler axis, Euler angle, and rotation matrix representations, principal-axis rotations, composition, and spherical interpolation. |
Numerical propagation
propagate_numerical supports non-Earth central bodies via the body-specific force model presets (lunar_default, mars_default, cislunar_default), or by setting force_model="central_body" with central_body set to moon, mars, or emb; the bci/bcbf output frames report state relative to that body. (central_body is only consulted for the central_body preset — other presets bake in their own body.) Two optional structured config dicts also replace the previous per-force keyword arguments:
force_config:{gravity, drag, srp, third_body, tides, relativity, frame_transform}integrator:{preset, method, abs_tol, rel_tol, initial_step, max_step, store_accelerations}
Call list_propagation_options() to discover the valid keys and values for both dicts.
Mean and osculating elements
convert_mean_osculating handles a single state using the Brouwer-Lyddane
analytical theory. convert_mean_osculating_batch handles a time series and
additionally supports the numerical windowed-averaging method.
Two things to know about the numerical method:
It is batch-only. The single-state tool rejects it.
With
edge="truncate"(the default), osculating-to-mean returns fewer states than it receives, because the averaging window consumes the edges of the series. Readn_outputanddropped_by_edge_handlingfrom the response rather than assuming the length is preserved.
Numerical mean-to-osculating inverts the averaging by differential correction
and therefore requires a force_config; call list_propagation_options() for
the valid keys. Brouwer-Lyddane is a first-order theory, so mean-to-osculating
followed by osculating-to-mean does not return the input exactly.
Plotting output
Plotting depends on the brahe[plots] extra, which is installed automatically as a dependency of brahe-mcp. The 3D plot tools also write an interactive HTML file to disk; the directory is configurable via the BRAHE_MCP_OUTPUT_DIR environment variable (default <tempdir>/brahe-mcp-plots).
Related MCP server: Satellite MCP Server
Installation
uv tool install brahe-mcpor
pip install brahe-mcpThen configure your MCP client to use the installed tool:
{
"mcpServers": {
"brahe": {
"command": "brahe-mcp"
}
}
}The MCP configuration location depends on your client. For popular tools you can find it here:
Client | Config Location |
Claude Desktop (macOS) |
|
Claude Desktop (Windows) |
|
Claude Code |
|
Gemini CLI |
|
OpenAI Codex CLI |
|
ChatGPT Desktop does not support local stdio MCP servers — it requires remote HTTPS endpoints
OpenAI Codex CLI
Codex CLI stores MCP configuration in TOML format at ~/.codex/config.toml (or project-scoped .codex/config.toml):
[mcp_servers.brahe]
command = "brahe-mcp"
args = []You can also add it via the CLI:
codex mcp add brahe -- brahe-mcpTo include SpaceTrack credentials:
codex mcp add brahe --env SPACETRACK_USER=your@email.com --env SPACETRACK_PASS=your-password -- brahe-mcpSpaceTrack Configuration
The SpaceTrack tools require a Space-Track.org account. Add your credentials via the env key in the server config:
{
"mcpServers": {
"brahe": {
"command": "brahe-mcp",
"env": {
"SPACETRACK_USER": "your@email.com",
"SPACETRACK_PASS": "your-password"
}
}
}
}
Claude Desktop does not expand shell variables like ${SPACETRACK_USER} — you must put the actual values in the config. Claude Code inherits your shell environment, so you can alternatively set the variables in ~/.zshrc and omit the env block.
Without these variables, the CelesTrak tools will still work normally — only the SpaceTrack tools will return an error prompting you to set the credentials.
Local Setup
To run the server from a local clone (useful for development or testing before installing):
git clone https://github.com/duncaneddy/brahe-mcp.git
cd brahe-mcp
uv sync --group devThen configure your MCP client to launch the server via uv run. Add the following to your MCP settings file:
{
"mcpServers": {
"brahe": {
"command": "uv",
"args": ["run", "--directory", "/path/to/brahe-mcp", "brahe-mcp"]
}
}
}Replace /path/to/brahe-mcp with the absolute path to your local clone.
Development
uv sync --group dev
uv run pytest tests/Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseBqualityDmaintenanceProvides access to satellite tracking data from N2YO, allowing users to query satellite positions, predict passes, and access TLE data through natural language requests.Last updated13MIT
- Flicense-qualityDmaintenanceEnables satellite orbital mechanics calculations including visibility predictions, access window analysis, and TLE generation from natural language descriptions. Supports 200+ world cities and multiple orbit types (LEO, MEO, GEO, SSO, Molniya, Polar).Last updated
- Alicense-qualityBmaintenanceAggregated public space data — satellite orbits, catalogs and launches — as a single AI-friendly CLI.Last updated1MIT
- Alicense-qualityCmaintenanceAuto-managed SPICE kernels for heliophysics missions. Enables querying spacecraft positions, trajectories, and coordinate transforms via natural language.Last updatedMIT
Related MCP Connectors
Live space data for AI agents - rocket launches, ISS passes, launch news. Free, no auth.
60+ units, live FX, timezones, and date arithmetic for AI agents.
Gateway between LLM agents and world data through eight tools and a bundled endpoint catalog.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/duncaneddy/brahe-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server