Servidor MCP de la NASA
Un servidor del Protocolo de Contexto de Modelos (MCP) para las APIs de la NASA, que proporciona una interfaz estandarizada para que los modelos de IA interactúen con la amplia gama de fuentes de datos de la NASA. Este servidor implementa la especificación oficial del Protocolo de Contexto de Modelo.
Muchas gracias a la comunidad MCP por su apoyo y orientación
Características
- Acceso a más de 20 fuentes de datos de la NASA a través de una interfaz única y coherente
- Formatos de datos estandarizados optimizados para el consumo de IA
- Validación automática de parámetros y gestión de errores
- Gestión del límite de velocidad para las claves API de la NASA
- Documentación completa y ejemplos
- Compatibilidad con varios formatos de imágenes de la NASA
- Conversión y formateo de datos para compatibilidad con LLM
- Compatibilidad multiplataforma (Windows, macOS, Linux)
Descargo de responsabilidad
Este proyecto no está afiliado, respaldado ni relacionado con la NASA (National Aeronautics and Space Administration) ni con ninguna de sus subsidiarias o filiales. Se trata de una implementación independiente que accede a las API de acceso público de la NASA. Todos los datos de la NASA utilizados están a disposición del público y sujetos a las políticas de uso de datos de la NASA.
Instalación
Ejecución con npx
env NASA_API_KEY=TU_API_KEY npx -y @programcomputer/nasa-mcp-server@latest
También puede pasar la clave API como argumento de línea de comandos:
npx -y @programcomputer/nasa-mcp-server@latest --nasa-api-key=SU_CLAVE_API
Uso de SuperGateway para eventos enviados por el servidor (SSE)
Puede utilizar SuperGateway para eventos enviados por el servidor (SSE).
Los desarrolladores de NASA-MCP-server NO APOYAN el repositorio SuperGateway. Esta información se proporciona para aquellos que deseen implementar la funcionalidad SSE según su propio criterio.
Instalación manual
# Clonar el repositorio git clone https://github.com/ProgramComputer/NASA-MCP-server.git # Instalar dependencias cd NASA-MCP-server npm install # Ejecutar con tu clave API NASA_API_KEY=TU_API_KEY npm start
Ejecutar en Cursor
Configurando Cursor 🖥️ Nota: Requiere Cursor versión 0.45.6+
Para configurar el Servidor MCP de la NASA en Cursor:
Crea o edita un archivo mcp.json
en tu directorio de configuración de Cursor con el siguiente contenido:
{ "mcpServers": { "nasa-mcp": { "command": "npx", "args": ["-y", "@programcomputer/nasa-mcp-server@latest"], "env": { "NASA_API_KEY": "your-api-key" } } }
Sustituya "your-api-key"
por su clave API de la NASA en https://api.nasa.gov/.
Después de añadir la configuración, reinicie Cursor para ver las nuevas herramientas de la NASA. El Agente Compositor utilizará automáticamente NASA MCP cuando sea apropiado para consultas relacionadas con el espacio.
Variables de entorno
El servidor puede ser configurado con las siguientes variables de entorno:
Variable | Descripción |
---|---|
CLAVE_API_NASA | Su clave API de la NASA (se obtiene en api.nasa.gov) |
APIs de la NASA incluidas
Este servidor MCP integra las siguientes API de la NASA:
NASA Open API (api.nasa.gov):
- APOD (Imagen astronómica del día)
- EPIC (Cámara de imágenes policromáticas de la Tierra)
- DONKI (Base de datos de notificaciones, conocimientos e información sobre meteorología espacial)
- Insight (Servicio Meteorológico de Marte)
- Fotos del Mars Rover
- NEO (Servicio Web de Objetos Cercanos a la Tierra)
- EONET (Rastreador de Eventos Naturales del Observatorio de la Tierra)
- TLE (Elemento de dos líneas)
- Biblioteca de imágenes y vídeos de la NASA
- Archivo de exoplanetas
- API de sonidos de la NASA (Beta)
- POWER (Predicción de recursos energéticos mundiales)
API de dinámica del sistema solar del JPL (ssd-api.jpl.nasa.gov):
- SBDB (Base de datos de cuerpos pequeños)
- Datos de aproximación de SBDB
- Datos de bólidos
- API de exploración
API de datos de la Tierra:
- GIBS (Global Imagery Browse Services)
- CMR (Common Metadata Repository) - Mejorada con funciones de búsqueda avanzada
- EPIC (Cámara de imágenes policromáticas de la Tierra)
- FIRMS (Sistema de información sobre incendios para la gestión de recursos)
Métodos API
Cada API de la NASA se expone a través de métodos MCP estandarizados:
APOD (Imagen astronómica del día)
{ "método": "nasa/apod", "params": { "date": "2023-01-01", // Opcional: formato AAAA-MM-DD "count": 5, // Opcional: Devuelve un número especificado de imágenes aleatorias "thumbs": true // Opcional: Devuelve la URL de la miniatura del vídeo } }
Fotos de Mars Rover
{ "method": "nasa/mars-rover", "params": { "rover": "curiosidad", // Requerido: "curiosity", "opportunity", o "spirit" "sol": 1000, // Se requiere "sol" o "earth_date" "earth_date": "2023-01-01", // Formato AAAA-MM-DD "camera": "FHAZ" // Opcional: Filtro por tipo de cámara } }
Objetos cercanos a la Tierra
{ "method": "nasa/neo", "params": { "fecha_inicio": "2023-01-01", // Obligatorio: Formato AAAA-MM-DD "end_date": "2023-01-07" // Obligatorio: YYYY-MM-DD format (max 7 days from start) } }
GIBS (Global Imagery Browse Services) (Servicios de búsqueda de imágenes globales)
{ "method": "nasa/gibs", "params": { "layer": "MODIS_Terra_CorrectedReflectance_TrueColor", // Obligatorio: ID de capa "date": "2023-01-01", // Obligatorio: Formato AAAA-MM-DD "format": "png" // Opcional: "png" o "jpg" } }
POWER (Predicción de los recursos energéticos mundiales)
{ "método": "nasa/power", "params": { "parameters": "T2M,PRECTOTCORR,WS10M", // Obligatorio: Lista separada por comas "community": "re", // Obligatorio: Identificador de la comunidad "latitude": 40.7128, // Obligatorio: Latitud "longitud": -74.0060, // Obligatorio: Longitud "start": "20220101", // Obligatorio: Fecha de inicio (AAAAMMDD) "end": "20220107" // Obligatorio: End date (YYYYMMDD) } }
Para obtener la documentación completa de todos los métodos y parámetros disponibles, consulte la referencia de la API en el directorio /docs
.
Sistema de registro
El servidor incluye un completo sistema de registro:
- Estado y progreso de la operación
- Métricas de rendimiento
- Seguimiento del límite de velocidad
- Condiciones de error
- Validación de solicitudes
Ejemplo de mensajes de registro:
[INFO] NASA MCP Server initialized successfully [INFO] Processing APOD request for date: 2023-01-01 [INFO] Fetching Mars Rover data for Curiosity, sol 1000 [WARNING] Rate limit threshold reached (80%) [ERROR] Parámetro no válido: 'date' debe estar en formato YYYY-MM-DD
Consideraciones de seguridad
Este servidor MCP implementa las mejores prácticas de seguridad siguiendo las especificaciones del Protocolo de Contexto de Modelo:
- Validación y sanitización de entrada mediante esquemas Zod
- No ejecución de código arbitrario
- Protección contra la inyección de comandos
- Tratamiento adecuado de errores para evitar fugas de información
- Limitación de velocidad y controles de tiempo de espera para las solicitudes de la API
- Ningún estado persistente que pueda ser explotado entre sesiones
Desarrollo
# Clonar el repositorio git clone https://github.com/ProgramComputer/NASA-MCP-server.git # Instalar dependencias npm install # Copiar el archivo de entorno de ejemplo y actualizarlo con sus claves API cp .env.example .env # Construir el código TypeScript npm run build # Iniciar el servidor de desarrollo npm run dev # Ejecutar pruebas npm test
Pruebas con MCP Inspector
El Servidor MCP de la NASA incluye un script para ayudarte a probar las APIs usando el Inspector MCP:
# Ejecutar el script de prueba proporcionado ./scripts/test-with-inspector.sh
Esto hará lo siguiente
- Construir el proyecto para asegurar que se incluyen los últimos cambios
- Iniciará el Inspector MCP con el servidor MCP de la NASA en ejecución
- Le permitirá probar interactivamente todas las APIs de la NASA
Ejemplos de peticiones de prueba
El repositorio incluye ejemplos de peticiones de prueba para cada API que puedes copiar y pegar en el Inspector MCP:
# Ver las peticiones de prueba de ejemplo cat docs/inspector-test-examples.md
Para ver ejemplos detallados, consulte el documento Ejemplos de pruebas del inspector.
Uso del cliente MCP
Este servidor sigue el protocolo oficial Model Context Protocol. A continuación se muestra un ejemplo de cómo utilizarlo con el SDK MCP:
import { Client } from "@modelcontextprotocol/sdk/client/index.js"; import { HttpClientTransport } from "@modelcontextprotocol/sdk/client/http.js"; const transport = new HttpClientTransport({ url: "http://localhost:3000", }); const client = new Client({ name: "mcp-client", version: "1.0.0", }); await client.connect(transport); // Ejemplo: Obtener la foto astronómica del día const apodResult = await client.request({ method: "nasa/apod", params: {} }); // Ejemplo: Obtener fotos de Mars Rover const marsRoverResult = await client.request({ method: "nasa/mars-rover", params: { rover: "curiosity", sol: 1000 } }); // Ejemplo: Búsqueda de objetos cercanos a la Tierra const neoResults = await client.request({ method: "nasa/neo", params: { start_date: '2023-01-01', end_date: '2023-01-07' } }); // Ejemplo: Obtener imágenes de satélite de GIBS const satelliteImage = await client.request({ method: "nasa/gibs", params: { layer: 'MODIS_Terra_CorrectedReflectance_TrueColor', date: '2023-01-01' } }); // Example: Utilizar la nueva API POWER const powerData = await client.request({ method: "nasa/power", params: { parameters: "T2M,PRECTOORR,WS10M", comunidad: "re", latitud 40.7128, longitud: -74.0060, start: "20220101", end: "20220107" } })
Contribuir a
- Fork el repositorio
- Crea tu rama de características
- Ejecutar pruebas:
npm test
- Enviar un pull request
Licencia
Licencia ISC - ver archivo LICENSE para más detalles