
NASA MCP 服务器
一个用于 NASA API 的模型上下文协议 (MCP) 服务器,为 AI 模型提供标准化接口,使其能够与 NASA 的海量数据源进行交互。该服务器实现了官方的模型上下文协议规范。
非常感谢 MCP 社区的支持和指导!
特征
Related MCP server: MCP Server For Local
免责声明
**本项目与美国国家航空航天局 (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 功能的用户参考。
手动安装
# 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
在光标上运行
配置 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:
NASA开放API (api.nasa.gov):
APOD(每日天文图片)
EPIC(地球多色成像相机)
DONKI(空间天气通知、知识、信息数据库)
洞察号(火星气象服务)
火星探测器照片
NEO(近地天体网络服务)
EONET(地球观测站自然事件追踪器)
TLE(双线元件)
美国宇航局图像和视频库
系外行星档案
NASA 声音 API(测试版)
电力(全球能源资源预测)
JPL太阳系动力学API (ssd-api.jpl.nasa.gov):
SBDB(小体数据库)
SBDB近距离数据
火球数据
侦察 API
地球数据API :
GIBS(全球图像浏览服务)
CMR(通用元数据存储库)——增强了高级搜索功能
EPIC(地球多色成像相机)
FIRMS(资源管理系统火灾信息)
API 方法
每个 NASA API 都通过标准化 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"
}
}
电力(全球能源资源预测)
{
"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)
}
}
有关所有可用方法和参数的完整文档,请参阅/docs目录中的 API 参考。
日志系统
该服务器包括全面的日志记录:
运营状况及进展
性能指标
速率限制跟踪
错误条件
请求验证
日志消息示例:
[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 服务器遵循模型上下文协议规范实现安全最佳实践:
使用 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 服务器包含一个脚本,可帮助您使用 MCP 检查器测试 API:
# Run the provided test script
./scripts/test-with-inspector.sh
这将:
构建项目以确保包含最新的更改
在 NASA MCP 服务器运行的情况下启动 MCP 检查器
允许您以交互方式测试所有 NASA API
测试请求示例
该存储库包含每个 API 的示例测试请求,您可以将其复制并粘贴到 MCP 检查器中:
# View the example test requests
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);
// 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 许可证 - 详情请参阅许可证文件