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:
- Analizar elementos orbitales:
{
"tool": "parse_orbital_elements",
"arguments": {
"orbital_text": "sun-synchronous satellite at 700km altitude"
}
}
- 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
calculate_access_windows- Cálculos básicos de visibilidad de satélitescalculate_access_windows_by_city- Pasos de satélites basados en ciudadescalculate_bulk_access_windows- Análisis de múltiples satélites/ubicacionesparse_orbital_elements- Análisis de parámetros orbitales con lenguaje naturalcalculate_access_windows_from_orbital_elements- Ventanas de acceso a partir de texto orbitalcalculate_access_windows_from_orbital_elements_by_city- Elementos orbitales combinados + búsqueda de ciudadessearch_cities- Buscar ciudades en la base de datos mundialvalidate_tle- Validar datos de elementos de dos líneasget_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]