NASA MCP-Server
Ein Model Context Protocol (MCP)-Server für NASA-APIs, der eine standardisierte Schnittstelle für KI-Modelle zur Interaktion mit den zahlreichen Datenquellen der NASA bietet. Dieser Server implementiert die offizielle Model Context Protocol-Spezifikation.
Vielen Dank an die MCP-Community für ihre Unterstützung und Anleitung!
Merkmale
Zugriff auf über 20 NASA-Datenquellen über eine einzige, konsistente Schnittstelle
Standardisierte Datenformate, optimiert für die KI-Nutzung
Automatische Parametervalidierung und Fehlerbehandlung
Ratenbegrenzungsverwaltung für NASA-API-Schlüssel
Umfassende Dokumentation und Beispiele
Unterstützung für verschiedene NASA-Bildformate
Datenkonvertierung und -formatierung für LLM-Kompatibilität
Plattformübergreifende Unterstützung (Windows, macOS, Linux)
Related MCP server: MCP Server For Local
Haftungsausschluss
Dieses Projekt steht in keiner Verbindung zur NASA (National Aeronautics and Space Administration) oder ihren Tochtergesellschaften oder verbundenen Unternehmen und wird von diesen auch nicht unterstützt. Es handelt sich um eine unabhängige Implementierung, die auf die öffentlich verfügbaren APIs der NASA zugreift. Alle verwendeten NASA-Daten sind öffentlich verfügbar und unterliegen den Datennutzungsrichtlinien der NASA.
Installation
Ausführen mit npx
env NASA_API_KEY=YOUR_API_KEY npx -y @programcomputer/nasa-mcp-server@latestSie können den API-Schlüssel auch als Befehlszeilenargument übergeben:
npx -y @programcomputer/nasa-mcp-server@latest --nasa-api-key=YOUR_API_KEYVerwenden von SuperGateway für Server-Sent Events (SSE)
Sie können SuperGateway für Server-Sent Events (SSE) verwenden.
Die Entwickler des NASA-MCP-Servers unterstützen das SuperGateway-Repository NICHT. Diese Informationen dienen ausschließlich der Implementierung von SSE-Funktionen nach eigenem Ermessen.
Manuelle Installation
# Clone the repository
git clone https://github.com/ProgramComputer/NASA-MCP-server.git
# Install dependencies
cd NASA-MCP-server
npm install
# Run with your API key
NASA_API_KEY=YOUR_API_KEY npm startAusführen auf Cursor
Cursor konfigurieren 🖥️ Hinweis: Erfordert Cursor-Version 0.45.6+
So konfigurieren Sie den NASA MCP-Server im Cursor:
Erstellen oder bearbeiten Sie eine mcp.json Datei in Ihrem Cursor-Konfigurationsverzeichnis mit folgendem Inhalt:
{
"mcpServers": {
"nasa-mcp": {
"command": "npx",
"args": ["-y", "@programcomputer/nasa-mcp-server@latest"],
"env": {
"NASA_API_KEY": "your-api-key"
}
}
}
}Ersetzen Sie your-api-key durch Ihren NASA-API-Schlüssel von https://api.nasa.gov/ .
Starten Sie Cursor nach dem Hinzufügen der Konfiguration neu, um die neuen NASA-Tools anzuzeigen. Der Composer Agent verwendet bei Bedarf automatisch NASA MCP für raumbezogene Abfragen.
Umgebungsvariablen
Der Server kann mit den folgenden Umgebungsvariablen konfiguriert werden:
Variable | Beschreibung |
| Ihr NASA-API-Schlüssel (erhältlich unter api.nasa.gov) |
Enthaltene NASA-APIs
Dieser MCP-Server integriert die folgenden NASA-APIs:
NASA Open API (api.nasa.gov):
APOD (Astronomiebild des Tages)
EPIC (Earth Polychromatic Imaging Camera)
DONKI (Weltraumwetterdatenbank mit Meldungen, Wissen und Informationen)
Insight (Mars-Wetterdienst)
Mars Rover Fotos
NEO (Webdienst für erdnahe Objekte)
EONET (Erdbeobachtungs- und Naturereignis-Tracker)
TLE (Zweilinienelement)
NASA-Bild- und Videobibliothek
Exoplaneten-Archiv
NASA Sounds API (Beta)
POWER (Vorhersage der weltweiten Energieressourcen)
JPL Solar System Dynamics API (ssd-api.jpl.nasa.gov):
SBDB (Small-Body-Datenbank)
SBDB-Anflugdaten
Feuerballdaten
Scout-API
Erddaten-APIs :
GIBS (Global Imagery Browse Services)
CMR (Common Metadata Repository) – Erweitert mit erweiterten Suchfunktionen
EPIC (Earth Polychromatic Imaging Camera)
FIRMS (Feuerinformations- und Ressourcenmanagementsystem)
API-Methoden
Jede NASA-API wird über standardisierte MCP-Methoden bereitgestellt:
APOD (Astronomiebild des Tages)
{
"method": "nasa/apod",
"params": {
"date": "2023-01-01", // Optional: YYYY-MM-DD format
"count": 5, // Optional: Return a specified number of random images
"thumbs": true // Optional: Return URL of video thumbnail
}
}Mars Rover Fotos
{
"method": "nasa/mars-rover",
"params": {
"rover": "curiosity", // Required: "curiosity", "opportunity", or "spirit"
"sol": 1000, // Either sol or earth_date is required
"earth_date": "2023-01-01", // YYYY-MM-DD format
"camera": "FHAZ" // Optional: Filter by camera type
}
}Erdnahe Objekte
{
"method": "nasa/neo",
"params": {
"start_date": "2023-01-01", // Required: YYYY-MM-DD format
"end_date": "2023-01-07" // Required: YYYY-MM-DD format (max 7 days from start)
}
}GIBS (Global Imagery Browse Services)
{
"method": "nasa/gibs",
"params": {
"layer": "MODIS_Terra_CorrectedReflectance_TrueColor", // Required: Layer ID
"date": "2023-01-01", // Required: YYYY-MM-DD format
"format": "png" // Optional: "png" or "jpg"
}
}POWER (Vorhersage der weltweiten Energieressourcen)
{
"method": "nasa/power",
"params": {
"parameters": "T2M,PRECTOTCORR,WS10M", // Required: Comma-separated list
"community": "re", // Required: Community identifier
"latitude": 40.7128, // Required: Latitude
"longitude": -74.0060, // Required: Longitude
"start": "20220101", // Required: Start date (YYYYMMDD)
"end": "20220107" // Required: End date (YYYYMMDD)
}
}Eine vollständige Dokumentation aller verfügbaren Methoden und Parameter finden Sie in der API-Referenz im Verzeichnis /docs .
Protokollierungssystem
Der Server beinhaltet eine umfassende Protokollierung:
Betriebsstatus und -fortschritt
Leistungsmetriken
Ratenbegrenzungsverfolgung
Fehlerbedingungen
Validierung anfordern
Beispielprotokollmeldungen:
[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] Invalid parameter: 'date' must be in YYYY-MM-DD formatSicherheitsüberlegungen
Dieser MCP-Server implementiert bewährte Sicherheitsmethoden gemäß den Model Context Protocol-Spezifikationen:
Eingabevalidierung und -bereinigung mithilfe von Zod-Schemata
Keine Ausführung von beliebigem Code
Schutz vor Command Injection
Richtige Fehlerbehandlung zur Vermeidung von Informationsverlusten
Ratenbegrenzung und Timeout-Kontrollen für API-Anfragen
Kein dauerhafter Zustand, der über Sitzungen hinweg ausgenutzt werden könnte
Entwicklung
# Clone the repository
git clone https://github.com/ProgramComputer/NASA-MCP-server.git
# Install dependencies
npm install
# Copy the example environment file and update with your API keys
cp .env.example .env
# Build the TypeScript code
npm run build
# Start the development server
npm run dev
# Run tests
npm testTesten mit MCP Inspector
Der NASA MCP-Server enthält ein Skript, das Ihnen beim Testen der APIs mit dem MCP Inspector hilft:
# Run the provided test script
./scripts/test-with-inspector.shDies wird:
Erstellen Sie das Projekt, um sicherzustellen, dass die neuesten Änderungen enthalten sind
Starten Sie den MCP Inspector mit dem laufenden NASA MCP-Server
Ermöglicht Ihnen, alle NASA-APIs interaktiv zu testen
Beispiel-Testanfragen
Das Repository enthält Beispieltestanforderungen für jede API, die Sie kopieren und in den MCP Inspector einfügen können:
# View the example test requests
cat docs/inspector-test-examples.mdAusführliche Beispiele finden Sie im Dokument „Inspector Test Examples“ .
MCP-Client-Nutzung
Dieser Server folgt dem offiziellen Model Context Protocol. Hier ist ein Beispiel für die Verwendung mit dem MCP SDK:
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);
// Example: Get today's Astronomy Picture of the Day
const apodResult = await client.request({
method: "nasa/apod",
params: {}
});
// Example: Get Mars Rover photos
const marsRoverResult = await client.request({
method: "nasa/mars-rover",
params: { rover: "curiosity", sol: 1000 }
});
// Example: Search for Near Earth Objects
const neoResults = await client.request({
method: "nasa/neo",
params: {
start_date: '2023-01-01',
end_date: '2023-01-07'
}
});
// Example: Get satellite imagery from GIBS
const satelliteImage = await client.request({
method: "nasa/gibs",
params: {
layer: 'MODIS_Terra_CorrectedReflectance_TrueColor',
date: '2023-01-01'
}
});
// Example: Use the new POWER API
const powerData = await client.request({
method: "nasa/power",
params: {
parameters: "T2M,PRECTOTCORR,WS10M",
community: "re",
latitude: 40.7128,
longitude: -74.0060,
start: "20220101",
end: "20220107"
}
});Beitragen
Forken Sie das Repository
Erstellen Sie Ihren Feature-Zweig
Tests ausführen:
npm testSenden einer Pull-Anfrage
Lizenz
ISC-Lizenz – Einzelheiten finden Sie in der Lizenzdatei