NASA MCP Server

NASA MCP Server

一个模型上下文协议服务器,它为人工智能模型提供了一个标准化的接口,以便与美国国家航空航天局(NASA)的大量数据源进行交互,这些数据源包括每日天文一图(APOD)、火星探测器照片、卫星图像和空间天气数据。

内容获取
数据库交互
AI内容生成
数据与应用分析
访问服务器

README

NASA MCP 服务器

一个用于 NASA API 的模型上下文协议 (MCP) 服务器,为 AI 模型提供一个标准化的接口,以便与 NASA 大量的数据源进行交互。此服务器实现了官方的模型上下文协议规范。

非常感谢 MCP 社区的支持和指导!

特性

  • 通过一个单一、一致的接口访问 20 多个 NASA 数据源
  • 针对 AI 消费优化的标准化数据格式
  • 自动参数验证和错误处理
  • NASA API 密钥的速率限制管理
  • 全面的文档和示例
  • 支持各种 NASA 图像格式
  • 为 LLM 兼容性进行数据转换和格式化
  • 跨平台支持 (Windows, macOS, Linux)

免责声明

本项目与 NASA(美国国家航空航天局)或其任何子公司或附属公司无关,未经其认可或与其相关。 这是一个独立的实现,可以访问 NASA 公开提供的 API。 所有使用的 NASA 数据均为公开数据,并受 NASA 数据使用政策的约束。

安装

使用 npx 运行

env NASA_API_KEY=YOUR_API_KEY npx -y @programcomputer/nasa-mcp-server

您也可以将 API 密钥作为命令行参数传递:

npx -y @programcomputer/nasa-mcp-server --nasa-api-key=YOUR_API_KEY

使用 SuperGateway 进行服务器发送事件 (SSE)

您可以使用 SuperGateway 进行服务器发送事件 (SSE)。

NASA-MCP-server 的开发者不认可 SuperGateway 仓库。 此信息仅供希望自行决定实现 SSE 功能的人员使用。

手动安装

# 克隆仓库
git clone https://github.com/ProgramComputer/NASA-MCP-server.git

# 安装依赖
cd NASA-MCP-server
npm install

# 使用您的 API 密钥运行
NASA_API_KEY=YOUR_API_KEY npm start

在 Cursor 上运行

配置 Cursor 🖥️ 注意:需要 Cursor 版本 0.45.6+

要在 Cursor 中配置 NASA MCP Server:

在您的 Cursor 配置目录中创建或编辑一个 mcp.json 文件,内容如下:

{
  "mcpServers": {
    "nasa-mcp": {
      "command": "npx",
      "args": ["-y", "@programcomputer/nasa-mcp-server"],
      "env": {
        "NASA_API_KEY": "your-api-key"
      }
    }
  }
}

your-api-key 替换为您从 https://api.nasa.gov/ 获取的 NASA API 密钥。

添加配置后,重新启动 Cursor 以查看新的 NASA 工具。 Composer Agent 将在适当的时候自动使用 NASA MCP 来处理与太空相关的查询。

环境变量

可以使用以下环境变量配置服务器:

变量 描述 默认值
NASA_API_KEY 您的 NASA API 密钥 (在 api.nasa.gov 获取) DEMO_KEY (有限使用)
PORT 服务器运行的端口 3000
LOG_LEVEL 日志记录级别 (debug, info, warn, error) info
CACHE_DURATION 缓存持续时间(秒) 3600 (1 小时)
RATE_LIMIT 每小时最大请求数 基于 API 密钥

包含的 NASA API

此 MCP 服务器集成了以下 NASA API:

  1. NASA Open API (api.nasa.gov):

    • APOD (每日天文图片)
    • EPIC (地球多色成像相机)
    • DONKI (空间天气通知、知识、信息数据库)
    • Insight (火星天气服务)
    • 火星探测器照片
    • NEO (近地天体网络服务)
    • EONET (地球观测自然事件追踪器)
    • TLE (双行轨道根数)
    • NASA 图像和视频库
    • 系外行星档案
    • NASA 声音 API (Beta)
    • POWER (全球能源资源预测)
  2. JPL 太阳系动力学 API (ssd-api.jpl.nasa.gov):

    • SBDB (小天体数据库)
    • SBDB 近距离接近数据
    • 火球数据
    • Scout API
  3. 地球数据 API:

    • GIBS (全球影像浏览服务)
    • CMR (通用元数据存储库) - 增强了高级搜索功能
    • EPIC (地球多色成像相机)
    • FIRMS (资源管理系统火灾信息)

API 方法

每个 NASA API 都通过标准化的 MCP 方法公开:

APOD (每日天文图片)

{
  "method": "nasa/apod",
  "params": {
    "date": "2023-01-01", // 可选: YYYY-MM-DD 格式
    "count": 5, // 可选: 返回指定数量的随机图像
    "thumbs": true // 可选: 返回视频缩略图的 URL
  }
}

火星探测器照片

{
  "method": "nasa/mars-rover",
  "params": {
    "rover": "curiosity", // 必需: "curiosity", "opportunity", 或 "spirit"
    "sol": 1000, // sol 或 earth_date 必须提供一个
    "earth_date": "2023-01-01", // YYYY-MM-DD 格式
    "camera": "FHAZ" // 可选: 按相机类型过滤
  }
}

近地天体

{
  "method": "nasa/neo",
  "params": {
    "start_date": "2023-01-01", // 必需: YYYY-MM-DD 格式
    "end_date": "2023-01-07" // 必需: YYYY-MM-DD 格式 (最多从开始日期起 7 天)
  }
}

GIBS (全球影像浏览服务)

{
  "method": "nasa/gibs",
  "params": {
    "layer": "MODIS_Terra_CorrectedReflectance_TrueColor", // 必需: 图层 ID
    "date": "2023-01-01", // 必需: YYYY-MM-DD 格式
    "format": "png" // 可选: "png" 或 "jpg"
  }
}

POWER (全球能源资源预测)

{
  "method": "nasa/power",
  "params": {
    "parameters": "T2M,PRECTOTCORR,WS10M", // 必需: 逗号分隔的列表
    "community": "re", // 必需: 社区标识符
    "latitude": 40.7128, // 必需: 纬度
    "longitude": -74.0060, // 必需: 经度
    "start": "20220101", // 必需: 开始日期 (YYYYMMDD)
    "end": "20220107" // 必需: 结束日期 (YYYYMMDD)
  }
}

有关所有可用方法和参数的完整文档,请参阅 /docs 目录中的 API 参考。

日志系统

服务器包含全面的日志记录:

  • 操作状态和进度
  • 性能指标
  • 速率限制跟踪
  • 错误情况
  • 请求验证

示例日志消息:

[INFO] NASA MCP 服务器初始化成功
[INFO] 正在处理 2023-01-01 的 APOD 请求
[INFO] 正在获取 Curiosity 的火星探测器数据,sol 1000
[WARNING] 达到速率限制阈值 (80%)
[ERROR] 无效参数: 'date' 必须是 YYYY-MM-DD 格式

安全注意事项

此 MCP 服务器实现了遵循模型上下文协议规范的安全最佳实践:

  • 使用 Zod 模式进行输入验证和清理
  • 不执行任意代码
  • 防止命令注入
  • 正确的错误处理以防止信息泄露
  • API 请求的速率限制和超时控制
  • 没有可能跨会话利用的持久状态

开发

# 克隆仓库
git clone https://github.com/ProgramComputer/NASA-MCP-server.git

# 安装依赖
npm install

# 复制示例环境变量文件并使用您的 API 密钥更新
cp .env.example .env

# 构建 TypeScript 代码
npm run build

# 启动开发服务器
npm run dev

# 运行测试
npm test

使用 MCP Inspector 进行测试

NASA MCP Server 包含一个脚本,可帮助您使用 MCP Inspector 测试 API:

# 运行提供的测试脚本
./scripts/test-with-inspector.sh

这将:

  1. 构建项目以确保包含最新的更改
  2. 启动运行 NASA MCP 服务器的 MCP Inspector
  3. 允许您交互式地测试所有 NASA API

示例测试请求

该存储库包含每个 API 的示例测试请求,您可以将其复制并粘贴到 MCP Inspector 中:

# 查看示例测试请求
cat docs/inspector-test-examples.md

有关详细示例,请参阅 Inspector Test Examples 文档。

MCP 客户端用法

此服务器遵循官方模型上下文协议。 以下是如何将其与 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);

// 示例:获取今天的每日天文图片
const apodResult = await client.request({
  method: "nasa/apod", 
  params: {}
});

// 示例:获取火星探测器照片
const marsRoverResult = await client.request({
  method: "nasa/mars-rover",
  params: { rover: "curiosity", sol: 1000 }
});

// 示例:搜索近地天体
const neoResults = await client.request({
  method: "nasa/neo",
  params: {
    start_date: '2023-01-01',
    end_date: '2023-01-07'
  }
});

// 示例:从 GIBS 获取卫星图像
const satelliteImage = await client.request({
  method: "nasa/gibs",
  params: {
    layer: 'MODIS_Terra_CorrectedReflectance_TrueColor',
    date: '2023-01-01'
  }
});

// 示例:使用新的 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"
  }
});

贡献

  1. Fork 仓库
  2. 创建您的功能分支
  3. 运行测试: npm test
  4. 提交 pull request

许可证

ISC 许可证 - 有关详细信息,请参见 LICENSE 文件

推荐服务器

VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选
mult-fetch-mcp-server

mult-fetch-mcp-server

一个多功能的、符合 MCP 规范的网页内容抓取工具,支持多种模式(浏览器/Node)、格式(HTML/JSON/Markdown/文本)和智能代理检测,并提供双语界面(英语/中文)。

精选
本地
AIO-MCP Server

AIO-MCP Server

🚀 集成了 AI 搜索、RAG 和多服务(GitLab/Jira/Confluence/YouTube)的一体化 MCP 服务器,旨在增强 AI 驱动的开发工作流程。来自 Folk。

精选
本地
Knowledge Graph Memory Server

Knowledge Graph Memory Server

为 Claude 实现持久性记忆,使用本地知识图谱,允许 AI 记住用户的信息,并可在自定义位置存储,跨对话保持记忆。

精选
本地
Hyperbrowser

Hyperbrowser

欢迎来到 Hyperbrowser,人工智能的互联网。Hyperbrowser 是下一代平台,旨在增强人工智能代理的能力,并实现轻松、可扩展的浏览器自动化。它专为人工智能开发者打造,消除了本地基础设施和性能瓶颈带来的麻烦,让您能够:

精选
本地
https://github.com/Streen9/react-mcp

https://github.com/Streen9/react-mcp

react-mcp 与 Claude Desktop 集成,能够根据用户提示创建和修改 React 应用程序。

精选
本地
any-chat-completions-mcp

any-chat-completions-mcp

将 Claude 与任何 OpenAI SDK 兼容的聊天完成 API 集成 - OpenAI、Perplexity、Groq、xAI、PyroPrompts 等。

精选
Exa MCP Server

Exa MCP Server

一个模型上下文协议服务器,它使像 Claude 这样的人工智能助手能够以安全和受控的方式,使用 Exa AI 搜索 API 执行实时网络搜索。

精选