MCP server for aerospace calculations: orbital mechanics, ephemeris, DSN operations, ...
Hosted in production (no setup needed): https://mcp.io-aerospace.org/
Transport Protocols:
- Streamable-HTTP (recommended): https://mcp.io-aerospace.org/ - Modern MCP transport protocol
- SSE (legacy): https://mcp.io-aerospace.org/sse - For backward compatibility with older MCP clients only
Note: Use the base URL with modern MCP clients - they will automatically use the streamable-HTTP transport. Only use the
/sseendpoint if you have an older client that specifically requires SSE protocol.
A Model Context Protocol (MCP) server for aerospace and astrodynamics calculations, providing tools for celestial body ephemeris, orbital mechanics, and space mission analysis.
This MCP server provides two transport options:
/sse endpoint for backward compatibility onlyThe server includes comprehensive tools for:
This server is powered by the IO Aerospace Astrodynamics framework, which provides the core algorithms for ephemerides, orbital mechanics, geometry, and time systems.
You can start integrating immediately against the production instance:
Important: Modern MCP clients (2024+) should use the base URL with streamable-HTTP transport. The SSE endpoint is maintained only for backward compatibility with older implementations.
Example (legacy SSE - browser/Node):
// Only use this if you have an old client that requires SSE
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.
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.Http/ # HTTP transport server (streamable-HTTP + legacy SSE)
├── Server.Stdio/ # STDIO transport server
├── docker-compose.yml # Development Docker configuration
├── docker-compose.prod.example.yml # Production template
└── deploy-production.sh # Production deployment scriptgit clone https://github.com/IO-Aerospace-software-engineering/mcp-server
cd mcp-server
docker-compose upThe HTTP server will be available at http://localhost:8080.
docker-compose.prod.example.yml to docker-compose.prod.yml./data/solarsystem/./deploy-production.shgit clone https://github.com/IO-Aerospace-software-engineering/mcp-server
cd mcp-server
dotnet buildThe server requires SPICE kernels for solar system calculations.
-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.exeRequired 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# After publishing or downloading a release asset for your OS
./Server.Stdio -k /path/to/kernelscd Server.Http
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:
```json
{
"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"
}
}
}
}Use your production server over HTTP by specifying the base URL only. Modern MCP clients will use streamable-HTTP:
{
"mcpServers": {
"astrodynamics": {
"transport": {
"type": "http",
"url": "https://mcp.io-aerospace.org"
}
}
}
}/sse - that's only for legacy SSE clients/sse unless your client documentation requires it; most discover the SSE pathUsing the MCP SDK to connect to the hosted server with modern streamable-HTTP transport:
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { HttpClientTransport } from "@modelcontextprotocol/sdk/client/transport/http.js";
// Modern streamable-HTTP transport (recommended)
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);If this project helps your work, please consider sponsoring ongoing development, hosting, and data updates.
Your support helps keep the hosted server online and the SPICE data current.
-k (or IO_DATA_DIR) exists and contains SPICE files# Development
docker-compose logs -f
# Production
docker logs -f container-namegit checkout -b feature/amazing-feature)git commit -m 'Add amazing feature')git push origin feature/amazing-feature)This project is licensed under the MIT License - see the LICENSE file for details.
For support and questions:
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