mcp-server
A production-ready Model Context Protocol server for advanced aerospace and astrodynamics calculations.
Key Features
Use Cases
README
IO Aerospace MCP Server
Use it now
Hosted in production (no setup needed): https://mcp.io-aerospace.org/
SSE endpoint: https://mcp.io-aerospace.org/sse
Note: Most MCP clients that support HTTP/SSE only need the base URL; they will connect to the SSE stream internally (commonly at
/sse). The explicit/sseURL is provided here for manual/web integrations.
A Model Context Protocol (MCP) server for aerospace and astrodynamics calculations, providing tools for celestial body ephemeris, orbital mechanics, and space mission analysis.
Overview
This MCP server provides two transport options:
- STDIO Transport: Standard input/output communication (recommended for MCP clients)
- SSE Transport: HTTP Server-Sent Events for web-based integrations
The server includes comprehensive tools for:
- Celestial body ephemeris and state vector calculations
- Orbital mechanics and geometry computations
- Deep Space Network (DSN) ground station operations
- Solar system object properties and characteristics
- Mathematical conversions for aerospace calculations
- Time system conversions and utilities
Astrodynamics Framework
This server is powered by the IO Aerospace Astrodynamics framework, which provides the core algorithms for ephemerides, orbital mechanics, geometry, and time systems.
Use the hosted server (recommended)
You can start integrating immediately against the production instance:
- Base URL: https://mcp.io-aerospace.org/
- SSE stream: https://mcp.io-aerospace.org/sse
Example (browser/Node):
const eventSource = new EventSource('https://mcp.io-aerospace.org/sse');
eventSource.onmessage = (event) => {
console.log('message', event.data);
};
eventSource.onerror = (err) => {
console.error('sse error', err);
};
Self-hosting is optional; see below for Docker and .NET instructions.
Project Structure
mcp-server/
├── AI/ # AI tools and models
│ ├── Tools/ # Core calculation tools
│ ├── Models/ # Data models and types
│ └── Converters/ # Type converters
├── Data/ # Data providers and solar system kernels
│ ├── SolarSystem/ # SPICE kernel files
│ └── SolarSystemObjects/ # Celestial body definitions
├── Server.Sse/ # HTTP/SSE transport server
├── Server.Stdio/ # STDIO transport server
├── docker-compose.yml # Development Docker configuration
├── docker-compose.prod.example.yml # Production template
└── deploy-production.sh # Production deployment script
Prerequisites
- .NET 9.0 SDK or runtime
- Docker (for containerized deployment)
- Solar system kernels data (SPICE kernels)
Available Tools
CelestialBodyTools
- GetEphemerisAsStateVectors: Calculate state vectors (position and velocity) of celestial bodies
- GetCelestialBodyProperties: Retrieve geophysical properties of planets and moons
OrbitalParametersTools
- ConvertStateVectorToKeplerianElements: Convert state vectors to Keplerian orbital elements
- ConvertStateVectorToEquinoctialElements: Convert state vectors to equinoctial elements
- ConvertStateVectorToEquatorialCoordinates: Convert state vectors to equatorial coordinates
- ConvertKeplerianElementsToStateVector: Convert Keplerian elements back to state vectors
- ConvertEquinoctialElementsToStateVector: Convert equinoctial elements back to state vectors
- ConvertStateVectorToTheGivenFrame: Transform state vectors between reference frames
GeometryFinderTools
- FindCoordinateConstraint: Find time windows when coordinate constraints are met
- FindDistanceConstraint: Find time windows when distance constraints are satisfied
- FindOccultingConstraint: Find occultation and eclipse events
SiteTools
- GetDeepSpaceStationPlanetodeticCoordinates: Get latitude, longitude, and altitude of DSS stations
- GetDeepSpaceStationStateVector: Calculate state vectors for ground stations
- GetHorizontalCoordinates: Get azimuth and elevation from ground stations
- GetDSSFrame: Retrieve reference frame information for DSS stations
TimeTools
- ConvertDateTime: Convert between different time systems (UTC, TDB, TAI, TDT, GPS)
- CurrentDateTime: Get current UTC date and time
MathTools
- DegreesToRadians / RadiansToDegrees: Angular unit conversions
- ConvertDegreesToHours / ConvertHoursToDegrees: Time-angle conversions
- DegreesToArcseconds / ArcsecondsToDegrees: Angular precision conversions
- RadiansToArcseconds / ArcsecondsToRadians: Angular unit conversions
- MetersToMiles / MilesToMeters: Distance unit conversions
- MetersToFeet / FeetToMeters: Distance unit conversions
- MetersToKilometers / KilometersToMeters: Metric distance conversions
- MetersToAstronomicalUnits / AstronomicalUnitsToMeters: Astronomical distance conversions
- MetersToParsec / ParsecToMeters: Stellar distance conversions
- MetersToLightYears / LightYearsToMeters: Cosmic distance conversions
Quick Start (self-hosting)
Docker Deployment
Development
git clone https://github.com/IO-Aerospace-software-engineering/mcp-server
cd mcp-server
docker-compose up
The SSE server will be available at http://localhost:8080.
Production
- Copy
docker-compose.prod.example.ymltodocker-compose.prod.yml - Update the domain names in the production file
- Ensure kernel data exists at
./data/solarsystem/ - Deploy using the automated script:
./deploy-production.sh
Native .NET Deployment
1. Clone and Build
git clone https://github.com/IO-Aerospace-software-engineering/mcp-server
cd mcp-server
dotnet build
2. Solar System Data Setup
The server requires SPICE kernels for solar system calculations.
- STDIO server configuration (no appsettings):
- Provide the kernels path via CLI or environment variable
- Priority: CLI flag > IO_DATA_DIR environment variable
- CLI flags:
-k <path>,--kernels <path>, or--kernels-path <path>
Examples:
# Using CLI flag
./Server.Stdio -k /path/to/your/spice/kernels
# Using environment variable (Linux/macOS)
export IO_DATA_DIR="/path/to/your/spice/kernels"
./Server.Stdio
# Windows (PowerShell)
$env:IO_DATA_DIR="C:\path\to\your\spice\kernels"
./Server.Stdio.exe
- SSE server configuration: may use appsettings.json as before.
Required Kernel Files:
kernels/
├── de440s.bsp # Planetary ephemeris
├── latest_leapseconds.tls # Leap seconds
├── pck00011.tpc # Planetary constants
├── earth_latest_high_prec.bpc # Earth orientation
└── ... # Additional kernel files
3. Choose Transport Method
STDIO Transport (For MCP Clients)
- Release assets are native executables per OS/RID (no ZIP). Filenames:
- mcp-server-stdio--linux-x64
- mcp-server-stdio--win-x64.exe
- mcp-server-stdio--osx-arm64
- On macOS, a sidecar native library may be provided (e.g., libIO.Astrodynamics.so). Place it in the same directory as the executable.
# After publishing or downloading a release asset for your OS
./Server.Stdio -k /path/to/kernels
SSE Transport (For Web/HTTP)
cd Server.Sse
dotnet run
# Server available at http://localhost:8080
Docker Configuration
Development Environment
- File:
docker-compose.yml - Ports: 8080 (HTTP), 8081 (HTTPS)
- Data: Mounted from
./Data/SolarSystem - Usage:
docker-compose up
Production Environment
- File:
docker-compose.prod.yml(create from example) - Features: Traefik reverse proxy, optimized images
- Data: Host-mounted from
./data/solarsystem - Deployment: Automated via
deploy-production.sh
MCP Client Integration
Note: Many MCP clients use JSON-based configuration files, but schemas differ per client. The JSON examples below use Claude Desktop’s schema; adapt keys to your client’s format.
Claude Desktop Configuration (STDIO)
Add to your Claude Desktop configuration:
{
"mcpServers": {
"astrodynamics": {
"command": "/path/to/Server.Stdio",
"args": ["-k", "/path/to/kernels"]
}
}
}
Alternatively, set an environment variable if your client supports it:
{
"mcpServers": {
"astrodynamics": {
"command": "/path/to/Server.Stdio",
"args": [],
"env": {
"IO_DATA_DIR": "/path/to/kernels"
}
}
}
}
Claude Desktop Configuration (HTTP transport to hosted server)
Use your production server over HTTP/SSE by specifying the base URL only:
{
"mcpServers": {
"astrodynamics": {
"transport": {
"type": "http",
"url": "https://mcp.io-aerospace.org"
}
}
}
}
- Only the base URL is required; the client will use the SSE stream internally (commonly at
/sse). - This schema is for Claude Desktop; other clients may use different keys.
Other MCP clients
- Provide the base URL: https://mcp.io-aerospace.org
- Add headers (e.g., Authorization) only if your deployment requires it
- Don’t append
/sseunless your client documentation requires it; most discover the SSE path - Refer to your client’s documentation for the exact JSON schema or settings UI
Node.js MCP client (HTTP/SSE)
Using the MCP SDK to connect to the hosted server and list tools:
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { HttpClientTransport } from "@modelcontextprotocol/sdk/client/transport/http.js";
const transport = new HttpClientTransport(new URL("https://mcp.io-aerospace.org"));
const client = new Client(
{ name: "example-client", version: "1.0.0" },
{ capabilities: { tools: {}, prompts: {}, resources: {} } },
transport
);
await client.connect();
const tools = await client.listTools();
console.log("Tools:", tools);
// Example: call a tool
// const result = await client.callTool({ name: "GetEphemerisAsStateVectors", arguments: { /* ... */ } });
// console.log(result);
Sponsor
If this project helps your work, please consider sponsoring ongoing development, hosting, and data updates.
- Sponsor page: https://github.com/sponsors/IO-Aerospace-software-engineering
- Businesses: open an issue to discuss invoices or custom arrangements
Your support helps keep the hosted server online and the SPICE data current.
Troubleshooting
Common Issues
- "Kernels directory does not exist": Verify the path passed with
-k(orIO_DATA_DIR) exists and contains SPICE files - "Failed to load kernel": Ensure all required kernel files are present and accessible
- Connection errors: Check firewall settings and port availability
Log Monitoring
# Development
docker-compose logs -f
# Production
docker logs -f container-name
Contributing
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
License
This project is licensed under the MIT License - see the LICENSE file for details.
Support
For support and questions:
- Create an issue on GitHub
- Check the troubleshooting section above
- Review the deployment guide in DEPLOYMENT_GUIDE.md
Sylvain
New: A step-by-step How To guide is available:
- Markdown: docs/HowTo.md
- HTML (full): docs/howto.html
- HTML (compact): docs/howto-mini.html
Star History
Repository Owner
Organization
Repository Details
Programming Languages
Join Our Newsletter
Stay updated with the latest AI tools, news, and offers by subscribing to our weekly newsletter.
Related MCPs
Discover similar Model Context Protocol servers
Weather MCP Server
A Model Context Protocol server delivering weather and air quality data via multiple transport modes.
Weather MCP Server is a Model Context Protocol (MCP) implementation that provides comprehensive weather and air quality information using the Open-Meteo API. It supports various transport modes including standard stdio for desktop clients, HTTP Server-Sent Events (SSE), and Streamable HTTP for modern web integration. The server offers both real-time and historical weather metrics, as well as timezone and time conversion functionalities. Installation and integration options are available for both MCP desktop clients and web applications.
- ⭐ 26
- MCP
- isdaniel/mcp_weather_server
mcp-time
A Model Context Protocol server for time and date operations
mcp-time is a Model Context Protocol (MCP) server that enables AI assistants and MCP clients to perform standardized time and date-related operations. It provides natural language parsing for relative time expressions, supports flexible formatting, and allows manipulation and comparison of times. The server offers multiple integration methods, including stdio, HTTP stream, Docker, and npx for compatibility with various clients. It is designed for robust time handling and easy integration with AI tools.
- ⭐ 8
- MCP
- TheoBrigitte/mcp-time
Aviationstack MCP Server
MCP server offering comprehensive endpoints for aviation and flight data.
Aviationstack MCP Server provides an MCP-compliant API that exposes tools to access real-time and scheduled flight data, aircraft details, random aircraft types, countries, and city information from the AviationStack API. It offers ready-to-use endpoints for airline-specific flight queries, airport schedules, and in-depth vehicle, country, and city data. The solution applies the Model Context Protocol by defining MCP tools as Python functions with standardized interfaces, designed for seamless integration into MCP-compatible environments. The server is built using Python, incorporates the FastMCP library, and is intended for easy deployment and use in application development.
- ⭐ 11
- MCP
- Pradumnasaraf/aviationstack-mcp
Stadia Maps MCP Server (TypeScript)
Bringing location services, geocoding, and mapping to AI assistants via Stadia Maps APIs.
Stadia Maps MCP Server (TypeScript) implements the Model Context Protocol to provide LLM-based assistants with structured access to Stadia Maps APIs. It enables AI tools to query for geocoding, routing, time zones, map generation, and isochrone calculations. Designed for integration with agentic tools and LLMs, the server enhances spatial intelligence and location-based features in AI workflows.
- ⭐ 18
- MCP
- stadiamaps/stadiamaps-mcp-server-ts
Calculator Server
A high-precision Go server implementing 13 advanced mathematical and financial tools via the Model Context Protocol.
Calculator Server is a Go-based implementation of the Model Context Protocol (MCP) designed to offer comprehensive mathematical computation services. It features 13 advanced tools including support for arithmetic, scientific, statistical, unit conversion, and financial calculations. The server provides high-precision operations, bulk processing for unit conversions, and sophisticated financial modeling capabilities, making it suitable for both scientific and financial applications.
- ⭐ 0
- MCP
- avisangle/calculator-server
Substrate MCP Server
A Rust-based MCP server for dynamic Substrate blockchain operations.
Substrate MCP Server provides a Model Context Protocol (MCP) compliant server enabling dynamic interaction with Substrate blockchains. It supports querying balances, pallets, and storage, as well as submitting transactions and accessing block and event data. The server is fully configurable via environment variables and designed for seamless integration with tools such as Cursor, Claude, and development dashboards. Built in Rust, it interfaces with Substrate nodes using the subxt crate.
- ⭐ 11
- MCP
- ThomasMarches/substrate-mcp-rs
Didn't find tool you were looking for?