Satellite MCP Server

Realiza cálculos de mecânica orbital de satélites usando linguagem natural, com um banco de dados integrado de cidades mundiais para consulta de localização.

Documentação

Satellite MCP Server

Um servidor abrangente de Model Context Protocol (MCP) para cálculos de mecânica orbital de satélites com capacidades de processamento de linguagem natural.

✨ Principais Recursos

  • 🛰️ Cálculo de Janelas de Acesso de Satélites - Calcule quando satélites estão visíveis a partir de locais terrestres
  • 🌍 Banco de Dados de Cidades Mundiais - Banco de dados integrado com mais de 200 cidades em todo o mundo para fácil consulta de locais
  • 🗣️ Processamento de Linguagem Natural - Analise parâmetros orbitais a partir de textos como "satélite a 700km em SSO sobre Londres"
  • 📡 Geração de TLE - Gere Elementos de Duas Linhas a partir de descrições orbitais
  • 🌅 Análise de Iluminação - Condições de iluminação terrestre e de satélite (crepúsculo civil, náutico e astronômico)
  • 📊 Processamento em Lote - Processe múltiplos satélites e locais a partir de dados CSV
  • 🚀 6 Tipos de Órbita - Suporte para órbitas LEO, MEO, GEO, SSO, Molniya e Polar

🚀 Início 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

Instalação Local

# Install dependencies
make install

# Run the MCP server
make run

🔌 Conectando ao Servidor MCP

O servidor se comunica via JSON-RPC 2.0 sobre stdio. Aqui estão os métodos de conexão:

Integração com Claude Desktop

Adicione ao seu arquivo de configuração MCP do 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"]
    }
  }
}

Conexão Direta com 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

Conexão Local com Python

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

💬 Exemplos de Uso em LLMs

Exemplo 1: Previsão Básica de Passagem de Satélite

Prompt do Usuário:

"Quando a ISS estará visível de Londres amanhã?"

Chamada de Ferramenta 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"
  }
}

Resposta: A ISS estará visível de Londres 4 vezes amanhã, com a melhor passagem às 19:45 UTC atingindo 78° de elevação no céu sudoeste durante o crepúsculo civil.

Exemplo 2: Design Orbital em Linguagem Natural

Prompt do Usuário:

"Crie um satélite heliossíncrono a 700km de altitude e mostre quando ele passa sobre Tóquio."

Chamadas de Ferramenta MCP:

  1. Analisar elementos orbitais:
{
  "tool": "parse_orbital_elements",
  "arguments": {
    "orbital_text": "sun-synchronous satellite at 700km altitude"
  }
}
  1. Calcular janelas de acesso:
{
  "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"
  }
}

Resposta: Satélite SSO gerado (98,16° de inclinação, período de 98,6 min) com 14 passagens sobre Tóquio em 24 horas, incluindo 6 passagens diurnas e 8 durante várias condições de crepúsculo.

Exemplo 3: Análise de Satélites em Lote

Prompt do Usuário:

"Tenho um arquivo CSV com estações terrestres e quero analisar a cobertura para múltiplos satélites."

Chamada de Ferramenta 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"
  }
}

🛠️ Ferramentas Disponíveis

  1. calculate_access_windows - Cálculos básicos de visibilidade de satélites
  2. calculate_access_windows_by_city - Passagens de satélites baseadas em cidades
  3. calculate_bulk_access_windows - Análise multi-satélite/local
  4. parse_orbital_elements - Análise de parâmetros orbitais em linguagem natural
  5. calculate_access_windows_from_orbital_elements - Janelas de acesso a partir de texto orbital
  6. calculate_access_windows_from_orbital_elements_by_city - Elementos orbitais combinados + consulta de cidades
  7. search_cities - Encontre cidades no banco de dados mundial
  8. validate_tle - Valide dados de Elementos de Duas Linhas
  9. get_orbit_types - Definições de tipos de órbita disponíveis

🗂️ Estrutura do Projeto

/
├── 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

📚 Dependências

  • Skyfield - Cálculos de posição de satélites
  • NumPy - Computações numéricas
  • MCP - Implementação do Model Context Protocol
  • Python 3.8+ - Ambiente de execução

🤝 Contribuição

Este é um servidor MCP especializado em mecânica orbital de satélites. Para problemas ou melhorias, consulte a documentação no diretório docs/.

📄 Licença

[Adicione suas informações de licença aqui]