Astro MCP
Um servidor modular que fornece acesso unificado a múltiplos conjuntos de dados astronômicos, incluindo serviços astroquery e fontes de dados do DESI.
Documentação
Astro MCP - Acesso Agêntico a Dados Astronômicos
Um servidor modular de Model Context Protocol (MCP) que fornece acesso unificado a múltiplos conjuntos de dados astronômicos através de uma arquitetura limpa e extensível.
Visão
Este servidor MCP visa transformar a astronomia de big data de um problema de engenharia de software em uma conversa em linguagem natural. Em vez de passar meses aprendendo APIs do astroquery, pesquisadores simplesmente pedem o que precisam e recebem produtos de dados limpos e processados, prontos para análise.
Um especialista resolve a complexidade uma vez; milhares de cientistas se beneficiam para sempre. Um estudante com pouca experiência em programação agora pode realizar a mesma análise multi-levantamento que um astrônomo especialista usando apenas linguagem natural e um assistente de IA.
Isto não é apenas sobre astronomia—é um modelo para democratizar toda a ciência. Todo campo tem pesquisadores brilhantes gastando 80% do seu tempo com manipulação de dados em vez de descoberta. Ao remover esse gargalo, aceleramos o ritmo do progresso científico em si.
O resultado: cientistas de IA que podem acessar e cruzar dados de dezenas de levantamentos astronômicos sem esforço, permitindo descobertas que teriam exigido meses de preparação há apenas alguns anos.
Configuração Rápida para Cursor & Claude Desktop
1. Clone e Configure o Ambiente
# 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. Teste o 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. Configure para o Cursor
Adicione esta configuração às configurações MCP do seu 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 o caminho do Python do conda:
conda activate mcp
which python
# Copy this path for the "command" field above
4. Configure para o Claude Desktop
Edite o arquivo de configuração MCP do seu 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. Reinicie e Teste
- Reinicie o Cursor/Claude Desktop para carregar o novo servidor MCP
- Teste com uma consulta como:
- "Busque galáxias próximas a RA=10.68, Dec=41.27"
- "Obtenha as coordenadas de Betelgeuse no SIMBAD"
- "Encontre 10 galáxias BOSS em torno de z=0.5 e salve como FITS"
- "Liste os serviços astroquery disponíveis"
6. Solução de Problemas
O servidor não 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 conexão MCP:
- Verifique se o caminho do Python na sua configuração aponta para o ambiente conda
- Certifique-se de que o diretório de trabalho (
cwd) aponta para a pasta astro_mcp - Verifique se todas as dependências estão instaladas no ambiente correto
Dados astronômicos ausentes:
# Install optional dependencies for full functionality
conda activate mcp
pip install sparclclient datalab astropy astroquery h5py
Exemplos de Uso com Cursor/Claude Desktop
Uma vez configurado, você pode fazer perguntas em linguagem natural sobre dados astronômicos:
Buscas Básicas
- "Encontre galáxias próximas a RA=150.5, Dec=2.2 dentro de 0.1 graus"
- "Busque quasares com redshift entre 2 e 3"
- "Obtenha as coordenadas exatas de Betelgeuse no SIMBAD"
- "Encontre 10 galáxias BOSS em torno de redshift 0.5"
Acesso Multi-Levantamento
- "Consulte o VizieR para catálogos estelares na região de Orion"
- "Busque galáxias no SDSS e salve em formato FITS"
- "Obtenha informações de objetos em múltiplos bancos de dados astronômicos"
- "Liste todos os serviços astroquery disponíveis para estudos de galáxias"
Análise de Dados Espectrais
- "Obtenha o espectro do objeto DESI com ID 1270d3c4-9d36-11ee-94ad-525400ad1336"
- "Mostre-me informações espectrais detalhadas do quasar mais brilhante que você encontrar"
- "Encontre um espectro de galáxia e analise seu redshift"
Gerenciamento e Conversão de Arquivos
- "Liste todos os arquivos de dados astronômicos salvos"
- "Converta meu catálogo de galáxias para formato FITS"
- "Pré-visualize a estrutura dos resultados de busca mais recentes"
- "Mostre estatísticas de armazenamento dos dados baixados"
Consultas Avançadas
- "Encontre galáxias de alto redshift (z > 1.5) e salve seus espectros"
- "Busque objetos no campo COSMOS e analise seus tipos"
- "Cruze dados DESI e SDSS para a mesma região do céu"
O servidor irá automaticamente:
- Executar consultas apropriadas em múltiplos levantamentos
- Salvar resultados com nomes de arquivo descritivos e metadados
- Lidar com conversões de coordenadas e cálculos astronômicos
- Converter dados para formatos padrão (CSV, FITS) conforme necessário
Arquitetura
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
Recursos
🔭 Acesso Universal a Dados Astronômicos
- DESI: Instrumento Espectroscópico de Energia Escura via SPARCL e Data Lab
- Astroquery: Acesso automático a mais de 40 serviços astronômicos (SIMBAD, VizieR, SDSS, Gaia, etc.)
- Auto-descoberta: Detecta e configura automaticamente os serviços astroquery disponíveis
- Interface unificada: Mesma API para todas as fontes de dados
📁 Gerenciamento Inteligente de Arquivos
- Salvamento automático de dados com nomes de arquivo descritivos
- Registro e organização de arquivos entre fontes
- Rastreamento abrangente de metadados com proveniência
- Pré-visualização inteligente de arquivos com exemplos de carregamento
- Conversão para formato FITS para compatibilidade astronômica
🔍 Recursos Poderosos de Busca
- Buscas baseadas em coordenadas (ponto, cone, caixa) em todos os levantamentos
- Filtragem por tipo de objeto e redshift
- Consultas SQL com indexação espacial (Q3C)
- Interpretação de consultas em linguagem natural
- Correlação de dados entre levantamentos
📊 Ferramentas de Análise e Conversão de Dados
- Recuperação e análise de dados espectrais
- Conversão automática para FITS de catálogos, espectros e imagens
- Inspeção e pré-visualização de estrutura de arquivos
- Estatísticas e gerenciamento de armazenamento
- Arquitetura de ferramentas extensível para análises personalizadas
🤖 Interface Otimizada para IA
- Pré-processamento e validação de parâmetros
- Tratamento inteligente de erros com sugestões úteis
- Detecção e conversão automática de formatos
- Metadados consistentes em todas as fontes de dados
Instalação
Início Rápido: Para integração com Cursor & Claude Desktop, veja a seção Configuração Rápida acima.
Instalação 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
Verifique a Instalação
# 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())
"
Início Rápido
1. Inicie o Servidor MCP
python server.py
2. Ferramentas Disponíveis
O servidor fornece estas ferramentas principais:
Acesso a Dados:
search_objects- Encontre objetos astronômicos (DESI)astroquery_query- Consultas universais em mais de 40 serviços astronômicosget_spectrum_by_id- Recupere dados espectrais detalhados (DESI)
Descoberta de Serviços:
list_astroquery_services- Mostre todos os bancos de dados astronômicos disponíveisget_astroquery_service_details- Informações detalhadas de serviçossearch_astroquery_services- Encontre serviços por critérios
Gerenciamento de Arquivos:
preview_data- Inspecione arquivos salvos com análise de estruturalist_files- Gerencie dados salvos de todas as fontesfile_statistics- Informações de uso de armazenamento e organizaçãoconvert_to_fits- Converta dados para formato FITS
3. Exemplo 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"
)
Fontes de Dados
DESI (Instrumento Espectroscópico de Energia Escura)
Status: ✅ Totalmente Implementado
- Acesso SPARCL: Recuperação completa de dados espectrais
- SQL do Data Lab: Consultas rápidas de catálogo (tabela sparcl.main)
- Cobertura: DESI EDR (~1.8M) e DR1 (~18M+ espectros)
- Comprimento de onda: 360-980 nm, Resolução: R ~ 2000-5500
Acesso Universal Astroquery
Status: ✅ Totalmente Implementado
Principais Serviços Disponíveis:
- SIMBAD: Identificação de objetos e dados básicos
- VizieR: Catálogos e levantamentos astronômicos
- SDSS: Dados e espectros do Sloan Digital Sky Survey
- Gaia: Dados astrométricos e fotométricos
- MAST: Arquivos do Hubble, JWST e outros telescópios espaciais
- IRSA: Arquivos infravermelhos e submilimétricos
- ESASky: Dados astronômicos de múltiplas missões
- E mais de 30 serviços...
Capacidades:
- Descoberta e configuração automática de serviços
- Detecção inteligente de tipo de consulta
- Pré-processamento e validação de parâmetros
- Tratamento unificado de erros e geração de ajuda
Dependências Necessárias:
pip install astroquery astropy
Estendendo a Arquitetura
Adicionando uma Nova Fonte de Dados
- Crie a classe da fonte de dados:
# 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
- Atualize o 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)
Adicionando Novos Serviços Astroquery
A integração astroquery descobre automaticamente novos serviços. Para adicionar metadados 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')"
}
]
}
}
Organização de Arquivos
Os arquivos são organizados automaticamente por fonte de dados com metadados abrangentes:
~/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
Desenvolvimento
Benefícios da Estrutura do Projeto
- Modularidade: Fácil adicionar novos levantamentos e ferramentas de análise
- Acesso Universal: Interface única para mais de 40 bancos de dados astronômicos
- Separação de Preocupações: Acesso a dados, E/S e análise são separados
- Testabilidade: Cada módulo pode ser testado independentemente
- Escalabilidade: Arquitetura limpa suporta crescimento ilimitado
Testes
# 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/
Contribuindo
- Faça um fork do repositório
- Crie um branch de funcionalidade (
git checkout -b feature/new-capability) - Adicione sua fonte de dados ou ferramenta seguindo os padrões existentes
- Escreva testes para a nova funcionalidade
- Atualize a documentação e os exemplos
- Envie um pull request
Dependências
Requisitos Principais
mcp>=1.0.0- Estrutura do Model Context Protocolpandas>=2.0.0- Manipulação de dadosnumpy>=1.24.0- Computação numérica
Bibliotecas Astronômicas
astroquery>=0.4.6- Acesso universal a bancos de dados astronômicosastropy>=5.0.0- Arquivos FITS e cálculos astronômicossparclclient>=1.0.0- Acesso DESI SPARCLdatalab>=2.20.0- Consultas NOAO Data Lab
Recursos Opcionais
h5py>=3.8.0- Suporte a arquivos HDF5pytest>=7.0.0- Estrutura de testes
Licença
[Especifique sua licença aqui]
Citação
Se você usar este software em sua pesquisa, por favor cite:
@software{astro_mcp,
title={Astro MCP: Universal Astronomical Data Access for AI Agents},
author={[Your Name]},
year={2024},
url={[Repository URL]}
}
Suporte
- Problemas: GitHub Issues
- Documentação: Documentação Completa
- Discussões: GitHub Discussions
Roteiro
Atual (v0.1.0)
- ✅ Acesso a dados DESI via SPARCL e Data Lab
- ✅ Integração universal astroquery (mais de 40 serviços)
- ✅ Conversão automática para FITS de todos os tipos de dados
- ✅ Gerenciamento inteligente de arquivos com metadados abrangentes
- ✅ Interface de consulta em linguagem natural
Planejado (v0.2.0)
- 🚧 Correspondência e correlação de objetos entre levantamentos
- 🚧 Cálculos astronômicos avançados (distâncias, magnitudes)
- 🚧 Análise de séries temporais para objetos variáveis
- 🚧 Integração de ferramentas de visualização
Futuro (v0.3.0+)
- 🔮 Integração de aprendizado de máquina para classificação de objetos
- 🔮 Streaming de dados em tempo real de levantamentos
- 🔮 Criação de pipelines de análise personalizados
- 🔮 Ferramentas de correlação de dados multi-comprimento de onda