
Nasa Mcp Server
NASA API 的模型上下文协议(MCP)服务器,为AI模型与NASA海量数据源的交互提供标准化接口。
NASA MCP 服务器
一个为NASA API实现模型上下文协议(Model Context Protocol, MCP)的服务器,为AI模型提供标准化接口来访问NASA海量数据源。本服务器实现了官方Model Context Protocol规范。
特别感谢MCP社区的支持与指导!
功能特性
- 通过统一接口访问20+个NASA数据源
- 专为AI优化的标准化数据格式
- 自动参数校验与错误处理
- NASA API密钥的速率限制管理
- 完备的文档与示例
- 支持多种NASA图像格式
- 为LLM优化的数据转换与格式化
- 跨平台支持(Windows, macOS, Linux)
免责声明
本项目与NASA(美国国家航空航天局)及其附属机构无任何隶属、背书或关联关系。 这是一个独立实现,仅访问NASA公开API。所有使用的NASA数据均为公开数据并遵守NASA数据使用政策。
安装指南
通过npx运行
bash
env NASA_API_KEY=您的API密钥 npx -y @programcomputer/nasa-mcp-server@latest
也可通过命令行参数传递API密钥:
bash
npx -y @programcomputer/nasa-mcp-server@latest --nasa-api-key=您的API密钥
使用SuperGateway实现服务器推送事件(SSE)
可使用SuperGateway实现服务器推送事件功能。
NASA-MCP-server开发者不对SuperGateway仓库进行背书。此信息仅供需要自主实现SSE功能的用户参考。
手动安装
bash
# 克隆仓库
git clone https://github.com/ProgramComputer/NASA-MCP-server.git
# 安装依赖
cd NASA-MCP-server
npm install
# 使用API密钥运行
NASA_API_KEY=您的API密钥 npm start
在Cursor中运行
配置Cursor 🖥️ 注意: 需要Cursor 0.45.6+版本
在Cursor配置目录创建或编辑mcp.json
文件:
json
{
"mcpServers": {
"nasa-mcp": {
"command": "npx",
"args": ["-y", "@programcomputer/nasa-mcp-server@latest"],
"env": {
"NASA_API_KEY": "您的API密钥"
}
}
}
}
替换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:
-
NASA开放API(api.nasa.gov):
- APOD(每日天文图)
- EPIC(地球多色成像相机)
- DONKI(空间天气数据库)
- Insight(火星气象服务)
- 火星探测器照片
- NEO(近地天体服务)
- EONET(地球观测自然事件追踪器)
- TLE(两行轨道元素)
- NASA图像视频库
- 系外行星档案
- NASA声音API(测试版)
- POWER(全球能源资源预测)
-
JPL太阳系动力学API(ssd-api.jpl.nasa.gov):
- SBDB(小天体数据库)
- SBDB近距离接近数据
- 火流星数据
- Scout API
-
地球数据API:
- GIBS(全球图像浏览服务)
- CMR(通用元数据存储库)-增强版搜索功能
- EPIC(地球多色成像相机)
- FIRMS(资源管理系统火情信息)
API方法
每个NASA API都通过标准化MCP方法暴露:
APOD(每日天文图)
json
{
"method": "nasa/apod",
"params": {
"date": "2023-01-01", // 可选: YYYY-MM-DD格式
"count": 5, // 可选: 返回指定数量的随机图片
"thumbs": true // 可选: 返回视频缩略图URL
}
}
火星探测器照片
json
{
"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" // 可选: 按相机类型过滤
}
}
近地天体
json
{
"method": "nasa/neo",
"params": {
"start_date": "2023-01-01", // 必填: YYYY-MM-DD格式
"end_date": "2023-01-07" // 必填: YYYY-MM-DD格式(与开始日期最多间隔7天)
}
}
GIBS(全球图像浏览服务)
json
{
"method": "nasa/gibs",
"params": {
"layer": "MODIS_Terra_CorrectedReflectance_TrueColor", // 必填: 图层ID
"date": "2023-01-01", // 必填: YYYY-MM-DD格式
"format": "png" // 可选: "png"或"jpg"
}
}
POWER(全球能源资源预测)
json
{
"method": "nasa/power",
"params": {
"parameters": "T2M,PRECTOTCORR,WS10M", // 必填: 逗号分隔的参数列表
"community": "re", // 必填: 社区标识符
"latitude": 40.7128, // 必填: 纬度
"longitude": -74.0060, // 必填: 经度
"start": "20220101", // 必填: 开始日期(YYYYMMDD)
"end": "20220107" // 必填: 结束日期(YYYYMMDD)
}
}
完整API方法及参数文档请参考/docs
目录中的API参考手册。
日志系统
服务器包含全面的日志功能:
- 操作状态与进度
- 性能指标
- 速率限制跟踪
- 错误情况
- 请求验证
示例日志消息:
[信息] NASA MCP服务器初始化成功
[信息] 正在处理2023-01-01的APOD请求
[信息] 获取Curiosity探测器第1000个火星日的照片数据
[警告] 达到速率限制阈值(80%)
[错误] 无效参数: 'date'必须为YYYY-MM-DD格式
安全考量
本MCP服务器遵循Model Context Protocol规范实施安全最佳实践:
- 使用Zod模式进行输入验证与清理
- 不执行任意代码
- 防止命令注入
- 适当的错误处理以避免信息泄露
- API请求的速率限制与超时控制
- 不存在跨会话可利用的持久状态
开发
bash
# 克隆仓库
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的脚本:
bash
# 运行提供的测试脚本
./scripts/test-with-inspector.sh
该脚本将:
- 构建项目以确保包含最新更改
- 启动带NASA MCP服务器的MCP Inspector
- 允许交互式测试所有NASA API
示例测试请求
仓库包含每个API的示例测试请求:
bash
# 查看示例测试请求
cat docs/inspector-test-examples.md
详细示例请参阅Inspector测试示例文档。
MCP客户端用法
本服务器遵循官方Model Context Protocol。以下是使用MCP SDK的示例:
typescript
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"
}
});
贡献指南
- Fork代码仓库
- 创建特性分支
- 运行测试:
npm test
- 提交Pull Request
许可证
ISC许可证 - 详见LICENSE文件

1panel
mcp-1panel 是为 1Panel 实现的 Model Context Protocol (MCP) 服务器。
Aact mcp
与AACT临床试验数据库集成,支持查询和分析大规模试验数据,适用于研究和医疗应用。
Abap Adt
一个服务器,它将模型上下文协议(MCP)与SAP ABAP系统连接起来,使像Cline这样的工具能够检索ABAP源代码、表结构和其他开发工件。
Adwords Mcp
一个令人尴尬的MCP服务器,向Cursor、Claude和其他客户端的开发者提供广告