🚀 N2YO卫星跟踪器MCP服务器
这是一个模型上下文协议(MCP)服务器,可提供对N2YO卫星跟踪数据的访问,包括两行轨道要素(TLE)数据、卫星位置和过境预测等。
🚀 快速开始
本MCP服务器与N2YO.com API集成,以提供卫星跟踪功能。N2YO是一个实时卫星跟踪服务,可提供包括军事、气象、GPS、业余无线电和商业卫星等各类卫星的全面数据。
✨ 主要特性
- 自然语言查询:可以提出如“今晚6点哪些卫星会经过法国上空?”这样的问题。
- TLE数据访问:通过NORAD ID获取任何卫星的两行轨道要素数据。
- 按类别搜索:按类型(军事、气象、GPS等)查找卫星。
- 国家过滤:按国家或组织过滤卫星。
- 实时定位:获取卫星相对于观测者的当前位置。
- 过境预测:预测卫星何时从您所在位置可见。
- 头顶跟踪:查找当前位于特定位置上方的所有卫星。
- ⭐ 无线电过境优化:为业余无线电操作员提供通信窗口。
- ⭐ 卫星名称搜索:通过名称而非NORAD ID查找卫星。
- ⭐ 近期发射跟踪:监测新部署的卫星。
- ⭐ 太空碎片监测:跟踪碎片以避免碰撞。
- ⭐ 轨迹可视化:获取卫星随时间变化的路径。
📦 安装指南
git clone <repository-url>
cd n2yo-satellite-tracker-mcp
npm install
npm run build
📦 配置步骤
- 获取N2YO API密钥:在 N2YO.com 注册,并从您的个人资料中生成一个API密钥。
- 配置服务器:
- 选项A(推荐):设置环境变量 N2YO_API_KEY=your-api-key。
- 选项B:使用 set_n2yo_api_key工具在运行时配置您的API密钥。
 
- 开始跟踪:使用各种工具跟踪卫星。
💻 使用示例
基础用法
N2YO_API_KEY=your-api-key npm start
npm start
服务器通过标准输入输出传输连接到与MCP兼容的客户端。
工具使用说明
set_n2yo_api_key
配置您的N2YO API密钥以访问卫星数据。
参数:
query_satellites_natural
回答关于卫星的自然语言问题(🌟 新功能)。
参数:
- query(必需):自然语言查询,如“今晚6点哪些卫星会经过法国上空?”
- categoryFilter(可选):按类别过滤:"all"、"military"、"weather"、"gps"、"amateur"、"starlink"、"space-stations"
支持的查询模式:
- 位置:国家(法国、德国、美国等)、城市(巴黎、伦敦、纽约等)
- 时间:“今晚”、“下午6点”、“明天早上”、“两小时后”、“现在”
- 类别:可以在查询或 categoryFilter参数中指定
query_satellites_with_tle
通过自然语言查询查找卫星,并返回包含名称和TLE的结构化数据(🌟 新功能)。
参数:
- query(必需):关于卫星的自然语言查询(例如,'国际空间站'、'纽约上空的星链卫星'、'军事卫星')
- categoryFilter(可选):按类别过滤:"all"、"military"、"weather"、"gps"、"amateur"、"starlink"、"space-stations"
- maxResults(可选):返回的最大卫星数量(默认值:10)
返回的结构化JSON包含:
- 卫星名称和NORAD ID
- 每颗卫星的完整TLE数据
- 位置信息
- 查询元数据
get_satellite_tle
获取特定卫星的两行轨道要素(TLE)数据。
参数:
- noradId(必需):NORAD目录编号(例如,国际空间站的编号为 "25544")
get_satellites_by_category
按预定义类别浏览卫星。
参数:
- category(必需):以下之一:"military"、"weather"、"gps"、"navigation"、"amateur"、"geostationary"、"noaa"、"starlink"、"space-stations"、"earth-resources"
- country(可选):国家代码过滤器(例如,"usa"、"china"、"russia")
get_satellite_position
获取卫星相对于观测者位置的当前位置。
参数:
- noradId(必需):NORAD目录编号
- observerLat(必需):观测者纬度(-90 到 90)
- observerLng(必需):观测者经度(-180 到 180)
- observerAlt(可选):观测者海拔(米)(默认值:0)
- seconds(可选):未来预测的秒数(0 - 300,默认值:0)
get_visual_passes
获取卫星在观测者位置的即将到来的可视过境信息。
参数:
- noradId(必需):NORAD目录编号
- observerLat(必需):观测者纬度(-90 到 90)
- observerLng(必需):观测者经度(-180 到 180)
- observerAlt(可选):观测者海拔(米)(默认值:0)
- days(可选):向前查看的天数(1 - 10,默认值:10)
- minVisibility(可选):最小可见秒数(1 - 300,默认值:300)
get_satellites_above
获取当前位于观测者位置上方的所有卫星。
参数:
- observerLat(必需):观测者纬度(-90 到 90)
- observerLng(必需):观测者经度(-180 到 180)
- observerAlt(可选):观测者海拔(米)(默认值:0)
- searchRadius(可选):搜索半径(度)(1 - 90,默认值:70)
- categoryFilter(可选):按类别过滤或 "all"(默认值:"all")
get_radio_passes ⭐ 新功能
获取为业余无线电操作员优化的即将到来的无线电通信过境信息。
参数:
- noradId(必需):NORAD目录编号
- observerLat(必需):观测者纬度(-90 到 90)
- observerLng(必需):观测者经度(-180 到 180)
- observerAlt(可选):观测者海拔(米)(默认值:0)
- days(可选):向前查看的天数(1 - 10,默认值:10)
- minElevation(可选):最小仰角(度)(1 - 90,默认值:10)
search_satellites_by_name ⭐ 新功能
按名称或国际编号搜索卫星。
参数:
查询示例:"国际空间站"、"星链"、"诺阿卫星"、"GPS"、"1998 - 067A"
get_recent_launches ⭐ 新功能
获取最近30天内发射的卫星。
参数:无
get_space_debris ⭐ 新功能
跟踪观测者位置上方的太空碎片,以避免碰撞。
参数:
- observerLat(必需):观测者纬度(-90 到 90)
- observerLng(必需):观测者经度(-180 到 180)
- observerAlt(可选):观测者海拔(米)(默认值:0)
- searchRadius(可选):搜索半径(度)(1 - 90,默认值:70)
get_satellite_trajectory ⭐ 新功能
获取卫星随时间变化的轨迹,用于可视化和规划。
参数:
- noradId(必需):NORAD目录编号
- observerLat(必需):观测者纬度(-90 到 90)
- observerLng(必需):观测者经度(-180 到 180)
- observerAlt(可选):观测者海拔(米)(默认值:0)
- seconds(可选):时间段(秒)(1 - 3600,默认值:300)
🔍 可用资源
n2yo://api/status
当前N2YO API配置和使用状态,包括:
- API密钥配置状态
- 每个端点的事务计数
- 每日API限制
n2yo://categories/list
可用于搜索的卫星类别:
- 军事卫星
- 气象卫星
- GPS运行卫星
- 业余无线电卫星
- 等等...
n2yo://countries/list
可用于卫星过滤的国家和组织。
n2yo://limits/info
有关N2YO API事务限制和当前使用情况的信息。
🔍 自然语言查询能力
query_satellites_natural 工具可以理解和解析各种自然语言模式:
支持的位置(100多个国家和城市)
- 国家:法国、德国、美国、中国、俄罗斯、日本、英国、加拿大、澳大利亚等。
- 主要城市:巴黎、伦敦、纽约、东京、柏林、莫斯科、悉尼等。
- 查询示例:
支持的时间表达
- 相对时间:“今晚”、“明天”、“现在”、“此刻”
- 特定时间:“下午6点”、“18:00”、“今晚6点”
- 未来时间:“两小时后”、“明天早上”
- 查询示例:
自然语言查询示例
- “今晚6点哪些卫星会经过法国上空?”
- “现在展示德国上方的军事卫星”
- “现在纽约上空有哪些星链卫星?”
- “明天早上哪些卫星会在东京上方?”
- “两小时后伦敦上空有哪些气象卫星?”
🔍 卫星类别
服务器支持以下卫星类别:
| 类别 | 数量 | 说明 | 
| military | 30 | 军事卫星 | 
| weather | 3 | 气象卫星 | 
| gps | 20 | GPS运行卫星 | 
| navigation | 24 | 海军导航卫星系统 | 
| amateur | 18 | 业余无线电卫星 | 
| geostationary | 10 | 地球静止轨道卫星 | 
| noaa | 4 | 诺阿卫星 | 
| starlink | 52 | 星链星座 | 
| space - stations | 2 | 国际空间站等 | 
| earth - resources | 6 | 地球观测卫星 | 
💻 使用示例
配置API密钥
{
  "tool": "set_n2yo_api_key",
  "arguments": {
    "apiKey": "YOUR-N2YO-API-KEY"
  }
}
自然语言查询(🌟 新功能)
{
  "tool": "query_satellites_natural",
  "arguments": {
    "query": "What satellites will be over France at 6:00 tonight?"
  }
}
{
  "tool": "query_satellites_natural",
  "arguments": {
    "query": "Show me military satellites above Germany now",
    "categoryFilter": "military"
  }
}
{
  "tool": "query_satellites_natural",
  "arguments": {
    "query": "What Starlink satellites are over New York right now?",
    "categoryFilter": "starlink"
  }
}
获取国际空间站TLE数据
{
  "tool": "get_satellite_tle",
  "arguments": {
    "noradId": "25544"
  }
}
查找军事卫星
{
  "tool": "get_satellites_by_category",
  "arguments": {
    "category": "military",
    "country": "usa"
  }
}
跟踪国际空间站位置
{
  "tool": "get_satellite_position",
  "arguments": {
    "noradId": "25544",
    "observerLat": 40.7128,
    "observerLng": -74.0060,
    "observerAlt": 0
  }
}
获取国际空间站过境预测
{
  "tool": "get_visual_passes",
  "arguments": {
    "noradId": "25544",
    "observerLat": 40.7128,
    "observerLng": -74.0060,
    "days": 7
  }
}
查找头顶上方的卫星
{
  "tool": "get_satellites_above",
  "arguments": {
    "observerLat": 40.7128,
    "observerLng": -74.0060,
    "searchRadius": 80,
    "categoryFilter": "military"
  }
}
无线电通信过境 ⭐ 新功能
{
  "tool": "get_radio_passes",
  "arguments": {
    "noradId": "25544",
    "observerLat": 40.7128,
    "observerLng": -74.0060,
    "days": 7,
    "minElevation": 15
  }
}
按名称搜索卫星 ⭐ 新功能
{
  "tool": "search_satellites_by_name",
  "arguments": {
    "query": "ISS"
  }
}
近期发射 ⭐ 新功能
{
  "tool": "get_recent_launches",
  "arguments": {}
}
太空碎片跟踪 ⭐ 新功能
{
  "tool": "get_space_debris",
  "arguments": {
    "observerLat": 40.7128,
    "observerLng": -74.0060,
    "searchRadius": 85
  }
}
卫星轨迹 ⭐ 新功能
{
  "tool": "get_satellite_trajectory",
  "arguments": {
    "noradId": "25544",
    "observerLat": 40.7128,
    "observerLng": -74.0060,
    "seconds": 600
  }
}
🔧 API限制
N2YO提供免费的API访问,每日限制如下:
| 请求类型 | 每日限制 | 
| TLE请求 | 1000次 | 
| 位置请求 | 1000次 | 
| 可视过境请求 | 100次 | 
| 无线电过境请求 | 100次 ⭐ | 
| 上方请求 | 100次 | 
| 发射日期请求 | 100次 ⭐ | 
🔧 开发
npm run dev
npm run build
npm start
🔍 常用卫星
一些可用于测试的常用跟踪卫星:
- 国际空间站:25544
- 哈勃太空望远镜:20580
- GPS卫星:使用类别 "gps"
- 星链:使用类别 "starlink"
- 气象卫星:使用类别 "weather"
🔍 贡献
- 分叉仓库
- 创建功能分支
- 进行更改
- 如有必要添加测试
- 提交拉取请求
📄 许可证
本项目采用MIT许可证,详情请参阅 LICENSE 文件。
🔗 相关链接