Astro MCP

Un servidor modular que proporciona acceso unificado a múltiples conjuntos de datos astronómicos, incluyendo servicios de astroquery y fuentes de datos de DESI.

Documentación

Astro MCP - Acceso Agéntico a Datos Astronómicos

Un servidor modular de Protocolo de Contexto de Modelos (MCP) que proporciona acceso unificado a múltiples conjuntos de datos astronómicos mediante una arquitectura limpia y extensible.

Visión

Este servidor MCP tiene como objetivo transformar la astronomía de grandes datos de un problema de ingeniería de software a una conversación en lenguaje natural. En lugar de pasar meses aprendiendo las APIs de astroquery, los investigadores simplemente piden lo que necesitan y obtienen productos de datos limpios y procesados listos para análisis.

Un experto resuelve la complejidad una vez; miles de científicos se benefician para siempre. Un estudiante con poca experiencia en programación ahora puede realizar el mismo análisis multi-encuesta que un astrónomo experto usando únicamente lenguaje natural y un asistente de IA.

Esto no se trata solo de astronomía—es una plantilla para democratizar toda la ciencia. Cada campo tiene investigadores brillantes que pasan el 80% de su tiempo en la manipulación de datos en lugar del descubrimiento. Al eliminar ese cuello de botella, aceleramos el ritmo del progreso científico en sí mismo.

El resultado: científicos de IA que pueden acceder y cruzar datos de docenas de encuestas astronómicas sin problemas, permitiendo descubrimientos que habrían requerido meses de preparación hace solo unos años.

Configuración Rápida para Cursor y Claude Desktop

1. Clonar y Configurar el Entorno

# Clone the repository
git clone https://github.com/SandyYuan/astro_mcp.git
cd astro_mcp

# Create a dedicated conda environment with Python 3.11+
conda create -n mcp python=3.11
conda activate mcp

# Install dependencies
pip install -r requirements.txt

# Install astronomical libraries for full functionality
pip install sparclclient datalab astropy astroquery

2. Probar el Servidor

# Test basic functionality
python test_server.py

# Test with a simple query (optional)
python -c "
import asyncio
from server import astro_server
async def test():
    result = astro_server.get_global_statistics()
    print('✅ Server working:', result['total_files'], 'files in registry')
    services = astro_server.list_astroquery_services()
    print(f'✅ Astroquery: {len(services)} services discovered')
asyncio.run(test())
"

3. Configurar para Cursor

Agrega esta configuración a los ajustes de MCP de tu Cursor:

{
  "mcpServers": {
    "astro-mcp": {
      "command": "/path/to/conda/envs/mcp/bin/python",
      "args": ["/path/to/astro_mcp/server.py"],
      "cwd": "/path/to/astro_mcp",
      "env": {}
    }
  }
}

Para encontrar tu ruta de Python de conda:

conda activate mcp
which python
# Copy this path for the "command" field above

4. Configurar para Claude Desktop

Edita 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": {
    "astro-mcp": {
      "command": "/path/to/conda/envs/mcp/bin/python",
      "args": ["/path/to/astro_mcp/server.py"],
      "cwd": "/path/to/astro_mcp",
      "env": {}
    }
  }
}

5. Reiniciar y Probar

  1. Reinicia Cursor/Claude Desktop para cargar el nuevo servidor MCP
  2. Prueba con una consulta como:
    • "Busca galaxias cerca de RA=10.68, Dec=41.27"
    • "Obtén las coordenadas de Betelgeuse desde SIMBAD"
    • "Encuentra 10 galaxias BOSS alrededor de z=0.5 y guárdalas como FITS"
    • "Lista los servicios de astroquery disponibles"

6. Solución de Problemas

El servidor no inicia:

# Check Python environment
conda activate mcp
python --version  # Should be 3.11+

# Test server manually
python server.py
# Should start without errors

Problemas de conexión MCP:

  • Verifica que la ruta de Python en tu configuración apunte al entorno de conda
  • Asegúrate de que el directorio de trabajo (cwd) apunte a la carpeta astro_mcp
  • Comprueba que todas las dependencias estén instaladas en el entorno correcto

Datos astronómicos faltantes:

# Install optional dependencies for full functionality
conda activate mcp
pip install sparclclient datalab astropy astroquery h5py

Ejemplos de Uso con Cursor/Claude Desktop

Una vez configurado, puedes hacer preguntas en lenguaje natural sobre datos astronómicos:

Búsquedas Básicas

  • "Encuentra galaxias cerca de RA=150.5, Dec=2.2 dentro de 0.1 grados"
  • "Busca cuásares con corrimiento al rojo entre 2 y 3"
  • "Obtén las coordenadas exactas de Betelgeuse desde SIMBAD"
  • "Encuentra 10 galaxias BOSS alrededor del corrimiento al rojo 0.5"

Acceso Multi-Encuesta

  • "Consulta VizieR para catálogos estelares en la región de Orión"
  • "Busca galaxias en SDSS y guárdalas en formato FITS"
  • "Obtén información de objetos de múltiples bases de datos astronómicas"
  • "Lista todos los servicios de astroquery disponibles para estudios de galaxias"

Análisis de Datos Espectrales

  • "Obtén el espectro del objeto DESI con ID 1270d3c4-9d36-11ee-94ad-525400ad1336"
  • "Muéstrame información espectral detallada del cuásar más brillante que puedas encontrar"
  • "Encuentra un espectro de galaxia y analiza su corrimiento al rojo"

Gestión de Archivos y Conversión

  • "Lista todos los archivos de datos astronómicos guardados"
  • "Convierte mi catálogo de galaxias a formato FITS"
  • "Vista previa de la estructura de los últimos resultados de búsqueda"
  • "Muéstrame estadísticas de almacenamiento de los datos descargados"

Consultas Avanzadas

  • "Encuentra galaxias de alto corrimiento al rojo (z > 1.5) y guarda sus espectros"
  • "Busca objetos en el campo COSMOS y analiza sus tipos"
  • "Cruza datos de DESI y SDSS para la misma región del cielo"

El servidor automáticamente:

  • Ejecutará consultas apropiadas a la base de datos en múltiples encuestas
  • Guardará resultados con nombres de archivo descriptivos y metadatos
  • Manejará conversiones de coordenadas y cálculos astronómicos
  • Convertirá datos a formatos estándar (CSV, FITS) según sea necesario

Arquitectura

astro_mcp/
├── server.py                    # Main MCP server entry point
├── data_sources/               # Modular data source implementations
│   ├── __init__.py
│   ├── base.py                # Base class for all data sources
│   ├── desi.py                # DESI survey data access
│   ├── astroquery_universal.py # Universal astroquery wrapper
│   └── astroquery_metadata.py  # Service metadata and capabilities
├── data_io/                   # File handling and conversion
│   ├── __init__.py
│   ├── preview.py             # Data preview and structure analysis
│   └── fits_converter.py      # FITS format conversion
├── tests/                     # Test suite
├── examples/                  # Usage examples
└── requirements.txt           # Project dependencies

Características

🔭 Acceso Universal a Datos Astronómicos

  • DESI: Instrumento Espectroscópico de Energía Oscura vía SPARCL y Data Lab
  • Astroquery: Acceso automático a más de 40 servicios astronómicos (SIMBAD, VizieR, SDSS, Gaia, etc.)
  • Auto-descubrimiento: Detecta y configura automáticamente los servicios de astroquery disponibles
  • Interfaz unificada: Misma API para todas las fuentes de datos

📁 Gestión Inteligente de Archivos

  • Guardado automático de datos con nombres de archivo descriptivos
  • Registro y organización de archivos entre fuentes
  • Seguimiento integral de metadatos con procedencia
  • Vista previa inteligente de archivos con ejemplos de carga
  • Conversión a formato FITS para compatibilidad astronómica

🔍 Capacidades de Búsqueda Potentes

  • Búsquedas basadas en coordenadas (punto, cono, caja) en todas las encuestas
  • Filtrado por tipo de objeto y corrimiento al rojo
  • Consultas SQL con indexación espacial (Q3C)
  • Interpretación de consultas en lenguaje natural
  • Correlación de datos entre encuestas

📊 Herramientas de Análisis y Conversión de Datos

  • Recuperación y análisis de datos espectrales
  • Conversión automática a FITS para catálogos, espectros e imágenes
  • Inspección y vista previa de estructura de archivos
  • Estadísticas y gestión de almacenamiento
  • Arquitectura de herramientas extensible para análisis personalizados

🤖 Interfaz Optimizada para IA

  • Preprocesamiento y validación de parámetros
  • Manejo inteligente de errores con sugerencias útiles
  • Detección y conversión automática de formatos
  • Metadatos consistentes en todas las fuentes de datos

Instalación

Inicio Rápido: Para integración con Cursor y Claude Desktop, consulta la sección Configuración Rápida arriba.

Instalación Manual

# Clone the repository
git clone https://github.com/SandyYuan/astro_mcp.git
cd astro_mcp

# Create and activate environment
conda create -n mcp python=3.11
conda activate mcp

# Install core dependencies
pip install -r requirements.txt

# Install astronomical libraries
pip install sparclclient datalab astropy astroquery

# Optional: Install development dependencies
pip install pytest coverage

Verificar Instalación

# Test the server components
python test_server.py

# Check available astroquery services
python -c "
import asyncio
from server import astro_server

async def show_services():
    services = astro_server.list_astroquery_services()
    print(f'✅ Discovered {len(services)} astroquery services')
    for service in services[:5]:  # Show first 5
        print(f'  - {service["full_name"]} ({service["service"]})')

asyncio.run(show_services())
"

Inicio Rápido

1. Iniciar el Servidor MCP

python server.py

2. Herramientas Disponibles

El servidor proporciona estas herramientas principales:

Acceso a Datos:

  • search_objects - Encuentra objetos astronómicos (DESI)
  • astroquery_query - Consultas universales en más de 40 servicios astronómicos
  • get_spectrum_by_id - Recupera datos espectrales detallados (DESI)

Descubrimiento de Servicios:

  • list_astroquery_services - Muestra todas las bases de datos astronómicas disponibles
  • get_astroquery_service_details - Información detallada de servicios
  • search_astroquery_services - Encuentra servicios por criterios

Gestión de Archivos:

  • preview_data - Inspecciona archivos guardados con análisis de estructura
  • list_files - Gestiona datos guardados de todas las fuentes
  • file_statistics - Información de uso de almacenamiento y organización
  • convert_to_fits - Convierte datos a formato FITS

3. Ejemplo de Uso

# Get object coordinates from SIMBAD
astroquery_query(
    service_name="simbad",
    object_name="Betelgeuse"
)

# Search SDSS for galaxies with SQL
astroquery_query(
    service_name="sdss",
    query_type="query_sql",
    sql="SELECT TOP 10 ra, dec, z FROM SpecObj WHERE class='GALAXY' AND z BETWEEN 0.1 AND 0.3"
)

# Search VizieR catalogs
astroquery_query(
    service_name="vizier",
    ra=10.68,
    dec=41.27,
    radius=0.1
)

# Convert results to FITS
convert_to_fits(
    identifier="search_results.csv",
    data_type="catalog"
)

Fuentes de Datos

DESI (Instrumento Espectroscópico de Energía Oscura)

Estado: ✅ Totalmente Implementado

  • Acceso SPARCL: Recuperación completa de datos espectrales
  • SQL de Data Lab: Consultas rápidas de catálogo (tabla sparcl.main)
  • Cobertura: DESI EDR (~1.8M) y DR1 (~18M+ espectros)
  • Longitud de onda: 360-980 nm, Resolución: R ~ 2000-5500

Acceso Universal Astroquery

Estado: ✅ Totalmente Implementado

Principales Servicios Disponibles:

  • SIMBAD: Identificación de objetos y datos básicos
  • VizieR: Catálogos astronómicos y encuestas
  • SDSS: Datos y espectros del Sloan Digital Sky Survey
  • Gaia: Datos astrométricos y fotométricos
  • MAST: Archivos de Hubble, JWST y otros telescopios espaciales
  • IRSA: Archivos infrarrojos y submilimétricos
  • ESASky: Datos astronómicos multi-misión
  • Y más de 30 servicios adicionales...

Capacidades:

  • Descubrimiento y configuración automática de servicios
  • Detección inteligente de tipos de consulta
  • Preprocesamiento y validación de parámetros
  • Manejo unificado de errores y generación de ayuda

Dependencias Requeridas:

pip install astroquery astropy

Extendiendo la Arquitectura

Agregar una Nueva Fuente de Datos

  1. Crea la clase de fuente de datos:
# data_sources/my_survey.py
from .base import BaseDataSource

class MySurveyDataSource(BaseDataSource):
    def __init__(self, base_dir=None):
        super().__init__(base_dir=base_dir, source_name="my_survey")
        # Initialize survey-specific clients
    
    def search_objects(self, **kwargs):
        # Implement survey-specific search
        pass
  1. Actualiza el servidor principal:
# server.py
from data_sources import MySurveyDataSource

class AstroMCPServer:
    def __init__(self, base_dir=None):
        # ... existing code ...
        self.my_survey = MySurveyDataSource(base_dir=base_dir)

Agregar Nuevos Servicios de Astroquery

La integración de astroquery descubre automáticamente nuevos servicios. Para agregar metadatos personalizados:

# data_sources/astroquery_metadata.py
ASTROQUERY_SERVICE_INFO = {
    "my_service": {
        "full_name": "My Custom Service",
        "description": "Custom astronomical database",
        "data_types": ["catalogs", "images"],
        "wavelength_coverage": "optical",
        "object_types": ["stars", "galaxies"],
        "requires_auth": False,
        "example_queries": [
            {
                "description": "Search by object name",
                "query": "astroquery_query(service_name='my_service', object_name='M31')"
            }
        ]
    }
}

Organización de Archivos

Los archivos se organizan automáticamente por fuente de datos con metadatos completos:

~/astro_mcp_data/
├── file_registry.json           # Global file registry with metadata
├── desi/                        # DESI-specific files
│   ├── desi_search_*.json      # Search results
│   ├── spectrum_*.json         # Spectral data
│   └── *.fits                  # FITS conversions
└── astroquery/                 # Astroquery results
    ├── astroquery_simbad_*.csv # SIMBAD queries
    ├── astroquery_sdss_*.csv   # SDSS results
    ├── astroquery_vizier_*.csv # VizieR catalogs
    └── *.fits                  # FITS conversions

Desarrollo

Beneficios de la Estructura del Proyecto

  • Modularidad: Fácil agregar nuevas encuestas y herramientas de análisis
  • Acceso Universal: Interfaz única para más de 40 bases de datos astronómicas
  • Separación de Preocupaciones: Acceso a datos, E/S y análisis están separados
  • Capacidad de Pruebas: Cada módulo puede probarse de forma independiente
  • Escalabilidad: Arquitectura limpia que soporta crecimiento ilimitado

Pruebas

# Run all tests
pytest

# Test specific modules
pytest tests/test_desi.py
pytest tests/test_astroquery.py

# Test with coverage
pytest --cov=data_sources tests/

Contribuciones

  1. Haz un fork del repositorio
  2. Crea una rama de características (git checkout -b feature/new-capability)
  3. Agrega tu fuente de datos o herramienta siguiendo los patrones existentes
  4. Escribe pruebas para la nueva funcionalidad
  5. Actualiza la documentación y los ejemplos
  6. Envía una solicitud de extracción (pull request)

Dependencias

Requisitos Principales

  • mcp>=1.0.0 - Marco de Protocolo de Contexto de Modelos
  • pandas>=2.0.0 - Manipulación de datos
  • numpy>=1.24.0 - Computación numérica

Bibliotecas Astronómicas

  • astroquery>=0.4.6 - Acceso universal a bases de datos astronómicas
  • astropy>=5.0.0 - Archivos FITS y cálculos astronómicos
  • sparclclient>=1.0.0 - Acceso a DESI SPARCL
  • datalab>=2.20.0 - Consultas a NOAO Data Lab

Características Opcionales

  • h5py>=3.8.0 - Soporte para archivos HDF5
  • pytest>=7.0.0 - Marco de pruebas

Licencia

[Especifica tu licencia aquí]

Citación

Si usas este software en tu investigación, por favor cita:

@software{astro_mcp,
  title={Astro MCP: Universal Astronomical Data Access for AI Agents},
  author={[Your Name]},
  year={2024},
  url={[Repository URL]}
}

Soporte

Hoja de Ruta

Actual (v0.1.0)

  • ✅ Acceso a datos DESI vía SPARCL y Data Lab
  • ✅ Integración universal de astroquery (más de 40 servicios)
  • ✅ Conversión automática a FITS para todos los tipos de datos
  • ✅ Gestión inteligente de archivos con metadatos completos
  • ✅ Interfaz de consulta en lenguaje natural

Planificado (v0.2.0)

  • 🚧 Coincidencia y correlación de objetos entre encuestas
  • 🚧 Cálculos astronómicos avanzados (distancias, magnitudes)
  • 🚧 Análisis de series temporales para objetos variables
  • 🚧 Integración de herramientas de visualización

Futuro (v0.3.0+)

  • 🔮 Integración de aprendizaje automático para clasificación de objetos
  • 🔮 Transmisión de datos en tiempo real desde encuestas
  • 🔮 Creación de pipelines de análisis personalizados
  • 🔮 Herramientas de correlación de datos multi-longitud de onda