NASA API 的模型上下文协议(MCP)服务器,提供标准化接口供AI模型与NASA庞大的数据源进行交互。此服务器实现了官方的Model Context Protocol规范。
感谢MCP社区的支持和指导!
**本项目未得到NASA(美国国家航空航天局)或其任何子公司或附属机构的认可或关联。**这是一个独立实现,访问NASA公开可用的API。所有使用的NASA数据均为公开可用,并受NASA的数据使用政策约束。
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)。
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版本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获取) |
此MCP服务器集成了以下NASA API:
NASA开放API (api.nasa.gov):
JPL太阳系动力学API (ssd-api.jpl.nasa.gov):
地球数据API:
每个NASA API都通过标准的MCP方法暴露:
{
"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天)
}
}
{
"method": "nasa/gibs",
"params": {
"layer": "MODIS_Terra_CorrectedReflectance_TrueColor", // 必填:层ID
"date": "2023-01-01", // 必填:YYYY-MM-DD格式
"format": "png" // 可选:"png"或"jpg"
}
}
{
"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规范的安全最佳实践:
# 克隆仓库
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
NASA MCP服务器包含一个脚本,帮助您使用MCP Inspector测试API:
# 运行提供的测试脚本
./scripts/test-with-inspector.sh
这将:
仓库中包含了每个API的示例测试请求,您可以复制粘贴到MCP Inspector中:
# 查看示例测试请求
cat docs/inspector-test-examples.md
详细示例,请参阅Inspector测试示例文档。
此服务器遵循官方的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"
}
});
npm testISC许可证 - 详情见LICENSE文件