NASA API访问服务

提供对NASA公共API的访问,包括每日天文图片、火星探测器图像和近地天体数据等。

  • by adithya1012
  • Python
  • 本地部署
  • 5 星标
  • 更新于
在 GitHub 查看 adithya1012/MCP

使用说明

NASA MCP服务器

一个模型上下文协议(MCP)服务器,提供对美国国家航空航天局公共API的访问,包括当日天文图(APOD)、火星车图像和近地天体(NEO)数据。

特性

  • 每日天文图片(APOD):获取带有描述的每日天文图像
  • 火星漫游者图像:使用各种相机选项访问火星漫游车的照片
  • 近地天体:检索小行星数据和近距离接近信息
  • 地球图像(EPIC):从美国国家航空航天局的DSCOVR卫星获取地球的卫星图像
  • GIBS卫星图像:从美国国家航空航天局的全球图像浏览服务访问高分辨率地球图像
  • GIBS图层信息:获取可用卫星图像层的详细信息
  • 图像分析工具:通过自动处理和base64转换从URL获取和分析图像

安装

从PyPI安装软件包:

pip install nasa-mcp-server

或使用uvx(建议用于MCP):

uvx nasa-mcp-server

设置

获取NASA API密钥

  1. 访问 NASA API门户网站
  2. 生成您的免费API密钥
  3. 随时准备API密钥进行配置

VS代码配置

将以下内容添加到您的VS代码中 mcp.json 配置文件:

{
  "servers": {
    "nasa-mcp": {
      "command": "uvx",
      "args": ["nasa-mcp-server"],
      "env": {
        "NASA_API_KEY": "YOUR_NASA_API_KEY_HERE"
      }
    }
  }
}

替换 YOUR_NASA_API_KEY_HERE 使用您的实际NASA API密钥。

Claude桌面配置

将以下内容添加到您的Claude Desktop配置中:

视窗: %APPDATA%/Claude/claude_desktop_config.json macOS: ~/Library/Application\ Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "nasa-mcp": {
      "command": "uvx",
      "args": ["nasa-mcp-server"],
      "env": {
        "NASA_API_KEY": "YOUR_NASA_API_KEY_HERE"
      }
    }
  }
}

替换 YOUR_NASA_API_KEY_HERE 使用您的实际NASA API密钥。

可用工具

1.get_apod-当天的天文图片

从美国国家航空航天局的APOD服务中获取令人惊叹的天文图像和详细描述。

参数:

  • date (YYYY-MM-DD):APOD图像的具体日期(默认值:今天)
  • start_date (YYYY-MM-DD):日期范围的开始日期(不能与 date)
  • end_date (YYYY-MM-DD):日期范围的结束日期(默认值:今天)
  • count (int):要检索的随机图像数(不能与日期参数一起使用)

示例用法:

  • 获取今天的APOD: get_apod()
  • 获取特定日期的APOD: get_apod(date="2024-01-15")
  • 获取日期范围的APOD: get_apod(start_date="2024-01-01", end_date="2024-01-07")
  • 随机获取5个APOD: get_apod(count=5)

2.获取火星漫游者图像

访问火星探测器用各种相机视角拍摄的照片。

参数:

  • earth_date (YYYY-MM-DD):拍摄照片时的地球日期(默认值:今天)
  • sol (int):漫游者任务的火星溶胶(天)(默认值:1000)
  • camera (string):要使用的相机类型

可用摄像头:

  • FHAZ:前危险规避摄像头
  • RHAZ:后部危险规避摄像头
  • MAST:桅杆摄像头
  • CHEMCAM:化学和相机综合体
  • MAHLI:火星手持镜头成像仪
  • MARDI:火星下降成像仪
  • NAVCAM:导航摄像头
  • PANCAM:全景摄像头
  • MINITES:微型热发射光谱仪(Mini-TES)

示例用法:

  • 获取今天的图片: get_mars_image()
  • 从特定地球日期获取图像: get_mars_image(earth_date="2024-01-15")
  • 从特定溶胶中获取图像: get_mars_image(sol=500)
  • 从特定相机获取图像: get_mars_image(camera="MAST")

3.get_neo_feed-近地天体

检索有关小行星及其接近地球的信息。

参数:

  • start_date (YYYY-MM-DD):小行星搜索的开始日期(默认值:今天)
  • end_date (YYYY-MM-DD):小行星搜索的结束日期(默认值:开始日期后7天)
  • limit_per_day (int):每天显示的小行星的最大数量(默认值:2)

注: 根据NASA API的限制,最大日期范围为7天。

示例用法:

  • 获取未来7天的NEO数据: get_neo_feed()
  • 获取特定日期范围的NEO数据: get_neo_feed(start_date="2024-01-15", end_date="2024-01-20")
  • 限制每天的结果: get_neo_feed(limit_per_day=5)

4.获取地球图像工具(EPIC)

使用地球多色成像相机(EPIC)从美国国家航空航天局的DSCOVR卫星获取地球的卫星图像。

参数:

  • earth_date (YYYY-MM-DD):拍摄照片的日期(默认值:最新可用)
  • type (string):要检索的图像类型
  • limit (int):要检索的图像数量(默认值:1,建议最大值:10)

可用图像类型:

  • natural:自然色图像(默认)
  • enhanced:增强的彩色图像
  • aerosol:气溶胶图像
  • cloud:云图

示例用法:

  • 获取最新的地球图像: get_earth_image_tool()
  • 获取特定日期的图像: get_earth_image_tool(earth_date="2024-01-15")
  • 获得增强的彩色图像: get_earth_image_tool(type="enhanced")
  • 获取多张图片: get_earth_image_tool(limit=5)

5.get_gibs_image-gibs卫星图像

从美国国家航空航天局的全球图像浏览服务(GIBS)访问地球的高分辨率卫星图像。

参数:

  • layer (string):要获取的图像层(默认值:“MODIS_Terra_CorrectedReflect_TrueColor”)
  • bbox (字符串):边界框为“min_lon,min_lat,max_lon,max-lat”(默认值:“-180,-90180,90”)
  • date (YYYY-MM-DD):图像日期(默认值:最新可用)
  • width (int):图像宽度(像素)(默认值:512,建议最大值:2048)
  • height (int):图像高度(像素)(默认值:512,建议最大值:2048)
  • format (string):图像格式-“Image/png”或“Image/jpeg”(默认:“Image/pang”)
  • projection (字符串):坐标系-“epsg4326”或“epsg3857”(默认值:“epsg432 6”)

常用图像层:

  • MODIS_Terra_CorrectedReflectance_TrueColor:Terra卫星真彩色(默认)
  • MODIS_Aqua_CorrectedReflectance_TrueColor:Aqua卫星真彩色
  • VIIRS_SNPP_CorrectedReflectance_TrueColor:VIIRS卫星真彩色
  • MODIS_Terra_CorrectedReflectance_Bands721:Terra假色
  • MODIS_Aqua_CorrectedReflectance_Bands721:水蓝色假色
  • Reference_Labels_15m:政治边界和标签
  • Reference_Features_15m:海岸线和水体
  • MODIS_Terra_Aerosol:气溶胶光学厚度
  • MODIS_Terra_Land_Surface_Temp_Day:地表温度

边界框示例:

  • 世界: "-180,-90,180,90"
  • 美国: "-125,25,-65,50"
  • 欧洲: "0,40,40,70"

示例用法:

  • 获取世界图像: get_gibs_image()
  • 获取美国真彩色图像: get_gibs_image(bbox="-125,25,-65,50")
  • 获取假彩色图像: get_gibs_image(layer="MODIS_Terra_CorrectedReflectance_Bands721")
  • 获取高分辨率图像: get_gibs_image(width=1024, height=1024)
  • 获取特定日期的图像: get_gibs_image(date="2024-01-15")

6.get_gibs_layers-可用的gibs层

获取有关所有可用GIBS层及其功能的信息。

参数: 无

示例用法:

  • 获取所有可用图层: get_gibs_layers()

7.get_image_analyze-图像分析工具

从URL获取图像并将其转换为base64格式以进行LLM分析。此工具从任何URL下载图像并对其进行处理以供分析。

参数:

  • image_url (string):要分析的图像的URL(必填)

示例用法:

  • 从URL分析图像: get_image_analyze(image_url="https://example.com/image.jpg")
  • 分析NASA图像: get_image_analyze(image_url="https://apod.nasa.gov/apod/image/2401/example.jpg")

特征:

  • 自动图像格式检测(PNG、JPEG、GIF)
  • 图像压缩和调整大小以实现最佳处理
  • 用于LLM分析的Base64转换
  • 支持多种图像格式和URL
  • 自动RGB转换,兼容JPEG

**注:** 此工具返回一个 图像内容。截至目前,仅**第4条**支持此功能。其他LLM可能不会对图像分析做出响应。

错误处理

该服务器包括全面的错误处理功能,用于:

  • 日期格式无效
  • 网络超时
  • API密钥无效
  • NASA API特定错误

测试

该项目包括一个全面的测试套件,以确保所有MCP工具正常运行。

快速测试

# Run all tests
python test.py

# Run with verbose output
python test.py -v

# Setup test environment
python tests/setup_tests.py

测试覆盖率

测试套件包括:

  • 所有7个具有各种参数组合的MCP工具
  • 错误处理场景
  • 集成工作流程
  • 异步功能

有关详细的测试信息,请参阅 tests/README.md.

需求

链接

  • PyPI包: https://pypi.org/project/nasa-mcp-server/
  • NASA API文件: https://api.nasa.gov/
  • MCP文件: https://modelcontextprotocol.io/

支持

有关问题和支持,请访问软件包存储库或NASA API文档了解API相关问题。

许可证

该项目使用美国国家航空航天局的公共API。有关使用指南,请参阅NASA的API服务条款。

开发人员

我是Adithya。我开发了这个包,作为 移动互联网企业 实习项目。想多谈谈,给我发电子邮件adithyasn7@gmail.com