IO Aerospace MCP Server

平台与服务

by io-aerospace-software-engineering

面向航天计算的 MCP server,提供 orbital mechanics、ephemeris、DSN 操作等能力。

什么是 IO Aerospace MCP Server

面向航天计算的 MCP server,提供 orbital mechanics、ephemeris、DSN 操作等能力。

README

IO Aerospace MCP Server

Use it now

Hosted in production (no setup needed): https://mcp.io-aerospace.org/

Transport Protocols:

Note: Use the base URL with modern MCP clients - they will automatically use the streamable-HTTP transport. Only use the /sse endpoint 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.

Overview

This MCP server provides two transport options:

  • STDIO Transport: Standard input/output communication (recommended for local MCP clients)
  • HTTP Transport: Supports both modern streamable-HTTP and legacy SSE protocols for web-based integrations
    • Streamable-HTTP (default, recommended): Modern MCP protocol at the base URL
    • SSE (legacy): Available at /sse endpoint for backward compatibility only

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:

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):

javascript
// 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.

Project Structure

code
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 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

bash
git clone https://github.com/IO-Aerospace-software-engineering/mcp-server
cd mcp-server
docker-compose up

The HTTP server will be available at http://localhost:8080.

Production

  1. Copy docker-compose.prod.example.yml to docker-compose.prod.yml
  2. Update the domain names in the production file
  3. Ensure kernel data exists at ./data/solarsystem/
  4. Deploy using the automated script:
bash
./deploy-production.sh

Native .NET Deployment

1. Clone and Build

bash
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:

bash
# 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
  • HTTP server configuration: may use appsettings.json as before.

Required Kernel Files:

code
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-<tag>-linux-x64
    • mcp-server-stdio-<tag>-win-x64.exe
    • mcp-server-stdio-<tag>-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.
bash
# After publishing or downloading a release asset for your OS
./Server.Stdio -k /path/to/kernels
HTTP Transport (For Web/HTTP)
bash
cd 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:

json
{
  "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 by specifying the base URL only. Modern MCP clients will use streamable-HTTP:

json
{
  "mcpServers": {
    "astrodynamics": {
      "transport": {
        "type": "http",
        "url": "https://mcp.io-aerospace.org"
      }
    }
  }
}
  • The base URL uses the modern streamable-HTTP transport protocol
  • Do NOT append /sse - that's only for legacy SSE clients
  • 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 /sse unless 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 (streamable-HTTP)

Using the MCP SDK to connect to the hosted server with modern streamable-HTTP transport:

ts
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);

Sponsor

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.

Troubleshooting

Common Issues

  1. "Kernels directory does not exist": Verify the path passed with -k (or IO_DATA_DIR) exists and contains SPICE files
  2. "Failed to load kernel": Ensure all required kernel files are present and accessible
  3. Connection errors: Check firewall settings and port availability

Log Monitoring

bash
# Development
docker-compose logs -f

# Production
docker logs -f container-name

Contributing

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. 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:

常见问题

IO Aerospace MCP Server 是什么?

面向航天计算的 MCP server,提供 orbital mechanics、ephemeris、DSN 操作等能力。

相关 Skills

MCP构建

by anthropics

Universal
热门

聚焦高质量 MCP Server 开发,覆盖协议研究、工具设计、错误处理与传输选型,适合用 FastMCP 或 MCP SDK 对接外部 API、封装服务能力。

想让 LLM 稳定调用外部 API,就用 MCP构建:从 Python 到 Node 都有成熟指引,帮你更快做出高质量 MCP 服务器。

平台与服务
未扫描111.8k

Slack动图

by anthropics

Universal
热门

面向Slack的动图制作Skill,内置emoji/消息GIF的尺寸、帧率和色彩约束、校验与优化流程,适合把创意或上传图片快速做成可直接发送的Slack动画。

帮你快速做出适配 Slack 的动图,内置约束规则和校验工具,少踩上传与播放坑,做表情包和演示都更省心。

平台与服务
未扫描111.8k

MCP服务构建器

by alirezarezvani

Universal
热门

从 OpenAPI 一键生成 Python/TypeScript MCP server 脚手架,并校验 tool schema、命名规范与版本兼容性,适合把现有 REST API 快速发布成可生产演进的 MCP 服务。

帮你快速搭建 MCP 服务与后端 API,脚手架完善、扩展顺手,尤其适合想高效验证服务能力的开发者。

平台与服务
未扫描9.8k

相关 MCP Server

Slack 消息

编辑精选

by Anthropic

热门

Slack 是让 AI 助手直接读写你的 Slack 频道和消息的 MCP 服务器。

这个服务器解决了团队协作中需要 AI 实时获取 Slack 信息的痛点,特别适合开发团队让 Claude 帮忙汇总频道讨论或发送通知。不过,它目前只是参考实现,文档有限,不建议在生产环境直接使用——更适合开发者学习 MCP 如何集成第三方服务。

平台与服务
83.1k

by netdata

热门

io.github.netdata/mcp-server 是让 AI 助手实时监控服务器指标和日志的 MCP 服务器。

这个工具解决了运维人员需要手动检查系统状态的痛点,最适合 DevOps 团队让 Claude 自动分析性能数据。不过,它依赖 NetData 的现有部署,如果你没用过这个监控平台,得先花时间配置。

平台与服务
78.3k

by d4vinci

热门

Scrapling MCP Server 是专为现代网页设计的智能爬虫工具,支持绕过 Cloudflare 等反爬机制。

这个工具解决了爬取动态网页和反爬网站时的头疼问题,特别适合需要批量采集电商价格或新闻数据的开发者。不过,它依赖外部浏览器引擎,资源消耗较大,不适合轻量级任务。

平台与服务
34.9k

评论