返回市场
NASA-MCP-服务器

NASA-MCP-服务器

作者:ProgramComputer74 星标更新:2025-08-28

项目介绍

NPM 版本

NASA MCP 服务器

NASA API 的模型上下文协议(MCP)服务器,提供标准化接口供AI模型与NASA庞大的数据源进行交互。此服务器实现了官方的Model Context Protocol规范。

感谢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@latest

您也可以通过命令行参数传递API密钥:

npx -y @programcomputer/nasa-mcp-server@latest --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服务器,请在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替换为您从https://api.nasa.gov/获取的NASA API密钥。

添加配置后,重启Cursor即可看到新的NASA工具。Composer Agent会自动在适当情况下使用NASA MCP进行空间相关查询。

环境变量

服务器可以通过以下环境变量进行配置:

变量描述
NASA_API_KEY您的NASA API密钥(在api.nasa.gov获取)

包含的NASA API

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

  1. NASA开放API (api.nasa.gov):

    • APOD(天文图片每日一图)
    • EPIC(地球多光谱成像相机)
    • DONKI(太空天气数据库通知、知识、信息)
    • Insight(火星天气服务)
    • 火星探测器照片
    • NEO(近地天体网络服务)
    • EONET(地球观测自然事件追踪器)
    • TLE(两行元素)
    • NASA图像和视频库
    • 外行星档案
    • NASA声音API(测试版)
    • 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格式
    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] 正在处理APOD请求,日期:2023-01-01
[INFO] 获取Curiosity火星探测器数据,sol 1000
[WARNING] 达到速率限制阈值(80%)
[ERROR] 参数无效:'date'必须是YYYY-MM-DD格式

安全考虑

此MCP服务器遵循Model Context Protocol规范的安全最佳实践:

  • 使用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服务器包含一个脚本,帮助您使用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测试示例文档。

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);

// 示例:获取今天的天文图片每日一图
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. 分叉仓库
  2. 创建您的功能分支
  3. 运行测试:npm test
  4. 提交拉取请求

许可证

ISC许可证 - 详情见LICENSE文件