MCP-сервер НАСА
Сервер Model Context Protocol (MCP) для API NASA, предоставляющий стандартизированный интерфейс для взаимодействия моделей ИИ с обширным массивом источников данных NASA. Этот сервер реализует официальную спецификацию Model Context Protocol.
Большое спасибо сообществу MCP за поддержку и руководство!
Функции
Доступ к более чем 20 источникам данных NASA через единый, согласованный интерфейс
Стандартизированные форматы данных, оптимизированные для использования ИИ
Автоматическая проверка параметров и обработка ошибок
Управление ограничением скорости для ключей API NASA
Подробная документация и примеры
Поддержка различных форматов изображений NASA
Преобразование и форматирование данных для совместимости с LLM
Кроссплатформенная поддержка (Windows, macOS, Linux)
Related MCP server: MCP Server For Local
Отказ от ответственности
Этот проект не связан, не одобрен и не связан с NASA (Национальное управление по аэронавтике и исследованию космического пространства) или любой из его дочерних компаний или филиалов. Это независимая реализация, которая получает доступ к общедоступным API NASA. Все используемые данные NASA являются общедоступными и подчиняются политике использования данных NASA.
Установка
Работает с npx
env NASA_API_KEY=YOUR_API_KEY npx -y @programcomputer/nasa-mcp-server@latestВы также можете передать ключ API в качестве аргумента командной строки:
npx -y @programcomputer/nasa-mcp-server@latest --nasa-api-key=YOUR_API_KEYИспользование SuperGateway для событий, отправленных сервером (SSE)
Вы можете использовать SuperGateway для событий, отправленных сервером (SSE).
Разработчики NASA-MCP-server НЕ ОДОБРЯЮТ репозиторий SuperGateway. Данная информация предоставляется для тех, кто хочет реализовать функционал SSE по своему усмотрению.
Ручная установка
# 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 startРаботает на курсоре
Настройка курсора 🖥️ Примечание: требуется версия курсора 0.45.6+
Чтобы настроить сервер NASA MCP в Cursor:
Создайте или отредактируйте файл mcp.json в каталоге конфигурации курсора со следующим содержимым:
{
"mcpServers": {
"nasa-mcp": {
"command": "npx",
"args": ["-y", "@programcomputer/nasa-mcp-server@latest"],
"env": {
"NASA_API_KEY": "your-api-key"
}
}
}
}Замените your-api-key на ваш ключ API NASA с https://api.nasa.gov/ .
После добавления конфигурации перезапустите Cursor, чтобы увидеть новые инструменты NASA. Composer Agent будет автоматически использовать NASA MCP, когда это уместно для запросов, связанных с космосом.
Переменные среды
Сервер можно настроить с помощью следующих переменных среды:
Переменная | Описание |
| Ваш ключ API NASA (получить на api.nasa.gov) |
Включены API NASA
Этот сервер MCP интегрирует следующие API NASA:
Открытый API НАСА (api.nasa.gov):
APOD (Астрономическая картинка дня)
EPIC (камера полихроматической съемки Земли)
DONKI (База данных космической погоды с уведомлениями, знаниями и информацией)
Insight (Марсианская метеорологическая служба)
Фотографии марсохода
NEO (веб-сервис околоземных объектов)
EONET (система отслеживания природных событий Обсерватории Земли)
TLE (двухстрочный элемент)
Библиотека изображений и видео NASA
Архив экзопланет
API звуков NASA (бета)
POWER (Прогноз мировых энергетических ресурсов)
API динамики солнечной системы JPL (ssd-api.jpl.nasa.gov):
SBDB (База данных малых тел)
Данные SBDB о близком сближении
Данные огненного шара
API-интерфейс разведчика
API данных о Земле :
GIBS (Глобальные службы просмотра изображений)
CMR (Общий репозиторий метаданных) — улучшенные возможности расширенного поиска
EPIC (камера полихроматической съемки Земли)
FIRMS (Информация о пожаре для системы управления ресурсами)
Методы API
Каждый API NASA предоставляется посредством стандартизированных методов MCP:
APOD (Астрономическая картинка дня)
{
"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
}
}Фотографии марсохода
{
"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
}
}Объекты, сближающиеся с Землей
{
"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 (Глобальные службы просмотра изображений)
{
"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 (Прогноз мировых энергетических ресурсов)
{
"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)
}
}Полную документацию по всем доступным методам и параметрам см. в справочнике API в каталоге /docs .
Система регистрации
Сервер включает в себя комплексное ведение журнала:
Статус и ход операции
Показатели производительности
Отслеживание лимита скорости
Ошибочные состояния
Запросить проверку
Примеры сообщений журнала:
[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 formatСоображения безопасности
Этот сервер MCP реализует лучшие практики безопасности в соответствии со спецификациями Model Context Protocol:
Проверка и очистка входных данных с использованием схем Zod
Не допускается выполнение произвольного кода.
Защита от инъекции команд
Правильная обработка ошибок для предотвращения утечки информации
Ограничение скорости и контроль тайм-аута для запросов API
Нет постоянного состояния, которое можно было бы использовать между сеансами
Разработка
# 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 testТестирование с помощью MCP Inspector
В состав сервера NASA MCP входит скрипт, который поможет вам протестировать API с помощью MCP Inspector:
# Run the provided test script
./scripts/test-with-inspector.shЭто позволит:
Создайте проект, чтобы убедиться, что в него включены последние изменения.
Запустите MCP Inspector с запущенным сервером NASA MCP
Позволяет интерактивно тестировать все API NASA.
Примеры тестовых запросов
Репозиторий содержит примеры тестовых запросов для каждого API, которые можно скопировать и вставить в MCP Inspector:
# View the example test requests
cat docs/inspector-test-examples.mdПодробные примеры см. в документе «Примеры тестов инспектора» .
Использование клиента MCP
Этот сервер следует официальному протоколу Model Context Protocol. Вот пример того, как использовать его с 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"
}
});Внося вклад
Форк репозитория
Создайте свою ветку функций
Запуск тестов:
npm testОтправить запрос на извлечение
Лицензия
Лицензия ISC — подробности см. в файле ЛИЦЕНЗИЯ