CelestialMCP

Proporciona datos astronómicos como posiciones de objetos celestes, horas de salida/puesta e información de

Documentación

CelestialMCP

Un servidor de Model Context Protocol (MCP) diseñado para asistentes de IA como Claude. Proporciona herramientas para acceder a datos astronómicos, como posiciones de objetos celestes, horas de salida/puesta, visibilidad e información de catálogos.

Descripción general

CelestialMCP está construido con mcp-framework y utiliza la librería astronomy-engine para proporcionar cálculos astronómicos precisos. Ofrece varias herramientas para determinar posiciones de objetos celestes, calcular sus horas de salida y puesta, y listar objetos disponibles de catálogos de estrellas y objetos de cielo profundo.

Características

  • Datos celestes en tiempo real: Accede a datos astronómicos actuales para una variedad de objetos.
  • Detalles completos de objetos: Recupera coordenadas ecuatoriales y horizontales (altitud/azimut), estado de visibilidad, horas de salida/tránsito/puesta.
  • Datos especializados: Para objetos relevantes, obtén distancia (objetos del sistema solar), iluminación de fase (Luna y planetas) y próximas fases lunares (Luna).
  • Catálogos extensos: Utiliza catálogos locales para:
    • Objetos del sistema solar (Sol, Luna, planetas).
    • Estrellas (p. ej., de la base de datos HYG).
    • Objetos de cielo profundo (DSO) incluyendo objetos Messier, NGC e IC.
  • Observador configurable: Todos los cálculos se basan en una ubicación de observador preconfigurada (por defecto: Vancouver, Canadá) y la hora actual del sistema.
  • Actualización fácil de catálogos: Incluye un script para descargar y actualizar catálogos astronómicos completos.

Herramientas

El servidor proporciona tres herramientas principales para que la IA las utilice:

  1. getCelestialDetails: Recupera información astronómica detallada para un objeto celeste específico.
  2. listCelestialObjects: Lista los objetos celestes disponibles conocidos por el sistema, filtrables por categoría.
  3. getStarHoppingPath: Calcula una ruta de salto de estrellas (star hopping) desde una estrella inicial brillante hasta un objeto celeste objetivo.

Configuración e instalación

Requisitos previos

  • Node.js (versión >=18.19.0, como se especifica en package.json)
  • npm (normalmente viene con Node.js)

Pasos

  1. Clonar el repositorio (si aún no lo has hecho):

    git clone https://github.com/Rkm1999/CelestialMCP
    cd CelestialMCP
    
  2. Instalar dependencias:

    npm install
    
  3. Descargar catálogos astronómicos: Este paso es crucial para acceder a una amplia gama de estrellas y objetos de cielo profundo.

    npm run fetch-catalogs
    

    Este script descarga la base de datos de estrellas HYG y el catálogo de objetos de cielo profundo OpenNGC (New General Catalogue) en el directorio data/. Si estos archivos no se descargan, la aplicación intentará usar sample_stars.csv y sample_dso.csv del directorio data/ si están presentes. Si no se encuentran archivos de catálogo, los catálogos respectivos estarán vacíos.

  4. Compilar el proyecto: Esto compila el código TypeScript a JavaScript.

    npm run build
    
  5. Iniciar el servidor:

    npm start
    

    El servidor MCP se iniciará y las herramientas estarán disponibles para un asistente de IA conectado.

Uso con Claude Desktop

Para usar CelestialMCP con Claude Desktop para desarrollo local, añade la siguiente configuración a tu archivo de configuración de Claude Desktop:

# Install dependencies
npm install

# Fetch star and deep sky object catalogs (IMPORTANT!)
npm run fetch-catalogs

# Build the project
npm run build

# Start the server
npm start

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

{ "mcpServers": { "CelestialMCP": { "command": "node", // Or your node executable path "args":["/absolute/path/to/your/CelestialMCP/project/dist/index.js"] // Replace with the actual absolute path } } }

Datos de catálogo

El script npm run fetch-catalogs descarga:

  • hygdata_v41.csv: La base de datos de estrellas HYG (aprox. 120,000 estrellas).
  • ngc.csv: El catálogo OpenNGC (aprox. 14,000 objetos de cielo profundo).

Estos archivos se almacenan en el directorio data/. Si estos archivos de catálogo principales no se encuentran, la aplicación intentará cargar sample_stars.csv y sample_dso.csv si existen en el directorio data/. Para obtener datos completos, se recomienda encarecidamente ejecutar npm run fetch-catalogs.

Uso de las herramientas

Todos los cálculos astronómicos realizados por estas herramientas utilizan la ubicación de observador preconfigurada (ver src/config.ts) y la hora actual del sistema cuando se realiza la solicitud.

1. getCelestialDetails

Propósito: Recupera datos astronómicos completos para un objeto celeste específico. Esto incluye su posición actual (coordenadas ecuatoriales y horizontales), visibilidad (p. ej., por encima/por debajo del horizonte, calidad de visibilidad), horas de salida/tránsito/puesta para el día actual y, para objetos relevantes, distancia desde la Tierra, fase de iluminación y próximas fases lunares (para la Luna).

Parámetros:

  • objectName (cadena): El nombre o identificador de catálogo del objeto celeste. La herramienta puede resolver nombres comunes (p. ej., "Andromeda Galaxy") a sus identificadores de catálogo (p. ej., "M31"). Ejemplos: "Mars", "Sirius", "M42", "NGC 253", "Orion Nebula", "Moon", "Sun"

Ejemplos de prompts para Claude:

  • "Obtén detalles de Júpiter desde la ubicación configurada."
  • "¿Cuáles son las coordenadas actuales de la Luna?"
  • "Cuéntame sobre la estrella Vega, incluyendo sus horas de salida y puesta para hoy."
  • "¿Es visible la Galaxia del Remolino (M51) esta noche?"
  • "Muéstrame información sobre la posición actual del Sol y sus horas de salida/puesta."

2. listCelestialObjects

Propósito: Lista los objetos celestes conocidos por el sistema, que luego pueden consultarse usando getCelestialDetails. Los objetos se pueden filtrar por categoría. Esto ayuda a descubrir qué objetos están disponibles para consulta.

Parámetros:

  • category (cadena, opcional): Filtra la lista de objetos por una categoría específica. Si se omite, el valor predeterminado es "all". Las categorías válidas son:
    • planets: Objetos del sistema solar (Sol, Luna, Mercurio, Venus, Marte, Júpiter, Saturno, Urano, Neptuno, Plutón).
    • stars: Estrellas con nombre o catalogadas.
    • messier: Objetos del catálogo Messier (p. ej., M1, M31).
    • ic: Objetos del Index Catalogue (p. ej., IC 434).
    • ngc: Objetos del New General Catalogue (p. ej., NGC 7000).
    • dso: Todos los objetos de cielo profundo (combina Messier, IC, NGC y otros DSO como nebulosas o galaxias con nombre común que no estén en estos catálogos específicos si están disponibles).
    • all: Todos los objetos disponibles de todas las categorías (predeterminado).

Ejemplos de prompts para Claude:

  • "Lista todos los objetos Messier disponibles."
  • "¿Sobre qué planetas puedo obtener información?"
  • "Muéstrame algunas estrellas brillantes que pueda consultar usando la categoría stars."
  • "Lista todos los objetos NGC del catálogo."
  • "¿Qué objetos de cielo profundo (dso) están disponibles?"
  • "¿Puedes listar todos los objetos conocidos por el sistema?"

3. getStarHoppingPath

Propósito: Calcula una ruta de salto de estrellas (star hopping) desde una estrella inicial brillante hasta un objeto celeste objetivo. Cada salto está dentro del Campo de Visión (FOV) especificado. Esta herramienta ayuda a los observadores a localizar manualmente objetos más tenues "saltando" de una estrella reconocible a otra.

Parámetros:

  • targetObjectName (cadena): El nombre o identificador de catálogo del objeto celeste a encontrar. Ejemplos: "M13", "Andromeda Galaxy", "Mars", "NGC 7000"
  • fovDegrees (número, positivo): El Campo de Visión (FOV) del equipo del usuario en grados (p. ej., binoculares, ocular de telescopio). Ejemplo: 5.0
  • maxHopMagnitude (número, opcional, predeterminado: 8.0): La magnitud estelar máxima (más tenue) para que las estrellas se incluyan en la ruta de salto. Las estrellas más brillantes tienen valores de magnitud más bajos. Ejemplo: 7.5
  • initialSearchRadiusDegrees (número, positivo, opcional, predeterminado: 20.0): El radio angular (en grados) alrededor del objeto objetivo para buscar una estrella inicial brillante adecuada. Ejemplo: 25.0
  • startStarMagnitudeThreshold (número, opcional, predeterminado: 3.5): La magnitud máxima (más tenue) para que una estrella se considere una buena "estrella inicial" brillante para la secuencia de saltos. Ejemplo: 4.0

Ejemplos de prompts para Claude:

  • "Encuentra una ruta de salto de estrellas a M13 con un FOV de 5 grados."
  • "¿Puedes darme una secuencia de salto de estrellas a la Nebulosa del Anillo (M57) usando binoculares 8x50 (FOV de unos 6 grados) y estrellas no más tenues que la magnitud 7?"
  • "Necesito encontrar NGC 253. Mi telescopio tiene un campo de visión de 1 grado. Encuentra una ruta que comience desde una estrella más brillante que la magnitud 3, dentro de 20 grados del objetivo."
  • "Genera una guía de salto de estrellas a la Galaxia del Sombrero, asumiendo un FOV de 2 grados y una magnitud máxima de salto de 8.5."

Estructura del proyecto

CelestialMCP/
├── src/
│   ├── tools/                      # MCP Tools provided to the AI
│   │   ├── CelestialDetailsTool.ts   # Tool to get detailed info for an object
│   │   ├── ListCelestialObjectsTool.ts # Tool to list available objects
│   │   └── StarHoppingTool.ts        # Tool to calculate star hopping paths
│   ├── utils/                      # Utility functions
│   │   └── astronomy.ts            # Core astronomy calculations and catalog loading
│   ├── config.ts                   # Observer's location and atmospheric conditions configuration
│   └── index.ts                    # MCP Server entry point
├── scripts/
│   └── fetch-catalogs.js           # Script to download astronomical catalogs
├── data/                           # Directory for catalog data files (e.g., hygdata_v41.csv, ngc.csv)
│   ├── README.md                   # Information about data files
│   ├── sample_dso.csv            # Sample DSO data if full catalog isn't downloaded
│   └── sample_stars.csv          # Sample star data if full catalog isn't downloaded
├── package.json
└── tsconfig.json

Configuración predeterminada

Por defecto, la ubicación del observador está configurada en Vancouver, Canadá. Puedes cambiarla en src/config.ts: Esta configuración se utiliza para todos los cálculos a menos que una herramienta permita específicamente anularla (las herramientas actuales no lo permiten).

export const OBSERVER_CONFIG = {
  latitude: 49.2827,    // Observer latitude
  longitude: -123.1207, // Observer longitude
  altitude: 30,         // Observer altitude in meters
  temperature: 15,      // Default temperature in Celsius
  pressure: 1013.25     // Default pressure in hPa
};

Licencia

MIT

Agradecimientos

  • astronomy-engine para cálculos astronómicos principales
  • mcp-framework para la implementación del servidor MCP
  • HYG Database para datos de estrellas
  • OpenNGC para datos de objetos de cielo profundo