Satellite MCP Server

Realiza cálculos de mecánica orbital de satélites usando lenguaje natural, con una base de datos integrada de ciudades del mundo para la búsqueda de ubicaciones.

Documentación

Satellite MCP Server

Un servidor integral del Protocolo de Contexto de Modelos (MCP) para cálculos de mecánica orbital de satélites con capacidades de procesamiento de lenguaje natural.

✨ Características principales

  • 🛰️ Cálculo de ventanas de acceso a satélites - Calcula cuándo los satélites son visibles desde ubicaciones terrestres
  • 🌍 Base de datos de ciudades mundiales - Base de datos integrada de más de 200 ciudades en todo el mundo para una fácil búsqueda de ubicaciones
  • 🗣️ Procesamiento de lenguaje natural - Analiza parámetros orbitales a partir de texto como "satélite a 700 km en SSO sobre Londres"
  • 📡 Generación de TLE - Genera elementos de dos líneas a partir de descripciones orbitales
  • 🌅 Análisis de iluminación - Condiciones de iluminación terrestre y satelital (crepúsculo civil, náutico y astronómico)
  • 📊 Procesamiento por lotes - Procesa múltiples satélites y ubicaciones a partir de datos CSV
  • 🚀 6 tipos de órbita - Soporte para órbitas LEO, MEO, GEO, SSO, Molniya y polares

🚀 Inicio rápido

# Clone the repository
git clone <repository-url>
cd mcp-orbit

# Build the Docker image
make docker-build

# Run the MCP server
make docker-run

Instalación local

# Install dependencies
make install

# Run the MCP server
make run

🔌 Conexión al servidor MCP

El servidor se comunica mediante JSON-RPC 2.0 a través de stdio. Estos son los métodos de conexión:

Integración con Claude Desktop

Agrega a tu archivo de configuración MCP de Claude Desktop:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "satellite-mcp-server": {
      "command": "docker",
      "args": ["run", "--rm", "-i", "satellite-mcp-server:latest"]
    }
  }
}

Conexión directa con Docker

# Interactive mode
docker run -it --rm satellite-mcp-server:latest

# Pipe commands
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | \
  docker run --rm -i satellite-mcp-server:latest

Conexión local con Python

# If running locally without Docker
python -m src.mcp_server

💬 Ejemplos de uso en LLMs

Ejemplo 1: Predicción básica de pasos de satélite

Solicitud del usuario:

"¿Cuándo será visible la ISS desde Londres mañana?"

Llamada a la herramienta MCP:

{
  "tool": "calculate_access_windows_by_city",
  "arguments": {
    "city_name": "London",
    "tle_line1": "1 25544U 98067A   24001.50000000  .00001234  00000-0  12345-4 0  9999",
    "tle_line2": "2 25544  51.6400 123.4567 0001234  12.3456 347.6543 15.49011999123456",
    "start_time": "2024-01-02T00:00:00Z",
    "end_time": "2024-01-03T00:00:00Z"
  }
}

Respuesta: La ISS será visible desde Londres 4 veces mañana, con el mejor paso a las 19:45 UTC alcanzando una elevación de 78° en el cielo suroeste durante el crepúsculo civil.

Ejemplo 2: Diseño orbital con lenguaje natural

Solicitud del usuario:

"Crea un satélite heliosincrónico a 700 km de altitud y muéstrame cuándo pasa sobre Tokio."

Llamadas a las herramientas MCP:

  1. Analizar elementos orbitales:
{
  "tool": "parse_orbital_elements",
  "arguments": {
    "orbital_text": "sun-synchronous satellite at 700km altitude"
  }
}
  1. Calcular ventanas de acceso:
{
  "tool": "calculate_access_windows_from_orbital_elements_by_city",
  "arguments": {
    "orbital_text": "sun-synchronous satellite at 700km altitude",
    "city_name": "Tokyo",
    "start_time": "2024-01-01T00:00:00Z",
    "end_time": "2024-01-02T00:00:00Z"
  }
}

Respuesta: Satélite SSO generado (inclinación de 98.16°, período de 98.6 min) con 14 pasos sobre Tokio en 24 horas, incluyendo 6 pasos diurnos y 8 durante diversas condiciones de crepúsculo.

Ejemplo 3: Análisis satelital por lotes

Solicitud del usuario:

"Tengo un archivo CSV con estaciones terrestres y quiero analizar la cobertura de múltiples satélites."

Llamada a la herramienta MCP:

{
  "tool": "calculate_bulk_access_windows",
  "arguments": {
    "locations_csv": "name,latitude,longitude,altitude\nMIT,42.3601,-71.0589,43\nCaltechm,34.1377,-118.1253,237",
    "satellites_csv": "name,tle_line1,tle_line2\nISS,1 25544U...,2 25544...\nHubble,1 20580U...,2 20580...",
    "start_time": "2024-01-01T00:00:00Z",
    "end_time": "2024-01-02T00:00:00Z"
  }
}

🛠️ Herramientas disponibles

  1. calculate_access_windows - Cálculos básicos de visibilidad de satélites
  2. calculate_access_windows_by_city - Pasos de satélites basados en ciudades
  3. calculate_bulk_access_windows - Análisis de múltiples satélites/ubicaciones
  4. parse_orbital_elements - Análisis de parámetros orbitales con lenguaje natural
  5. calculate_access_windows_from_orbital_elements - Ventanas de acceso a partir de texto orbital
  6. calculate_access_windows_from_orbital_elements_by_city - Elementos orbitales combinados + búsqueda de ciudades
  7. search_cities - Buscar ciudades en la base de datos mundial
  8. validate_tle - Validar datos de elementos de dos líneas
  9. get_orbit_types - Definiciones de tipos de órbita disponibles

🗂️ Estructura del proyecto

/
├── src/
│   ├── mcp_server.py          # MCP server implementation
│   ├── satellite_calc.py      # Core orbital mechanics calculations
│   └── world_cities.py        # World cities database
├── docs/                      # Documentation
├── Dockerfile                 # Container definition
├── docker-compose.yml         # Multi-container setup
└── Makefile                   # Build automation

📚 Dependencias

  • Skyfield - Cálculos de posición de satélites
  • NumPy - Cálculos numéricos
  • MCP - Implementación del Protocolo de Contexto de Modelos
  • Python 3.8+ - Entorno de ejecución

🤝 Contribuciones

Este es un servidor MCP especializado en mecánica orbital de satélites. Para problemas o mejoras, consulta la documentación en el directorio docs/.

📄 Licencia

[Agrega aquí la información de tu licencia]