badchars/satellite-mcp

GitHub: badchars/satellite-mcp

基于 MCP 协议的地理空间情报服务器,提供 171 个工具整合卫星图像、实时追踪与环境监测等全频谱开源数据。

Stars: 1 | Forks: 0

satellite-mcp

npm license tools MCP zero-config

中文 · 繁體中文 · 한국어 · 日本語 · Deutsch · Español · Français · Italiano · Dansk · Norsk · Polski · Русский · Bosanski · Українська · Português · العربية · ไทย · Türkçe · বাংলা · हिन्दी · Ελληνικά · Tiếng Việt

亮点  •  快速开始  •  工具  •  API 密钥  •  架构  •  用例  •  贡献


专为 [Model Context Protocol](https://modelcontextprotocol.io) 打造的全频谱 GEOINT(地理空间情报)服务器。包含 171 个工具,涵盖卫星图像、飞行器追踪、海上监测、军事情报、冲突监测、环境分析、关键基础设施、制裁合规、网络地理情报以及其他 18 个领域 — 数据全部来自开源。

satellite-mcp demo

## 亮点 - **涵盖 27 个类别的 171 个工具** — 目前最全面的 GEOINT MCP 服务器 - **Sentinel-2, Landsat 8/9, Planet Labs, NASA FIRMS** 卫星图像搜索、元数据及光谱波段参考 - **实时飞行器追踪**(通过 OpenSky 获取 ADS-B)、**海上 AIS 监测**(Global Fishing Watch)、**太空/轨道追踪**(CelesTrak, N2YO) - **军事基地探测**、冲突事件监测(ACLED/GDELT)、制裁合规(OFAC SDN) - **纯计算型光谱指数**(NDVI, NDWI, NBR, EVI 等)与多指数变化检测 — 无需任何外部依赖 - **大多数工具支持零配置** — API 密钥为可选配置,用于解锁高级数据源;数十个工具无需设置即可直接使用 - **仅包含两个运行时依赖** — `@modelcontextprotocol/sdk` 和 `zod` - **Stdio 传输** — 兼容 Claude Desktop, Claude Code, Cursor, Windsurf 以及任何支持 MCP 的客户端 ## 快速开始 ``` npx satellite-mcp # run directly (no install) # 或全局安装 npm i -g satellite-mcp satellite-mcp --list # see all 171 tools satellite-mcp --help # usage information ``` ### 连接到 Claude Desktop 将以下内容添加到您的 MCP 配置文件中(macOS 上为 `~/Library/Application Support/Claude/claude_desktop_config.json`): ``` { "mcpServers": { "satellite": { "command": "npx", "args": ["-y", "satellite-mcp"], "env": { "NASA_API_KEY": "your-key-or-use-DEMO_KEY", "OPENSKY_USERNAME": "optional" } } } } ``` ### 连接到 Claude Code ``` claude mcp add satellite-mcp -- npx satellite-mcp ``` ### CLI 用法 ``` # 直接从命令行运行任何工具 satellite-mcp --tool spectral_ndvi '{"nir":0.8,"red":0.2}' satellite-mcp --tool geo_distance '{"lat1":41.01,"lng1":28.98,"lat2":39.93,"lng2":32.86}' satellite-mcp --tool quake_recent '{"min_magnitude":4.0,"limit":10}' satellite-mcp --tool firms_active_country '{"country":"TUR","days":1}' satellite-mcp --tool weather_current '{"lat":48.85,"lng":2.35}' ``` ## 工具类别 | # | 类别 | 工具数 | API / 数据源 | 认证 | |---|----------|------:|-------------------|------| | 1 | [Sentinel-2 (Copernicus)](#1-sentinel-2-copernicus--8-tools) | 8 | Copernicus Data Space OData | 可选 OAuth2 | | 2 | [Landsat (USGS)](#2-landsat-usgs--7-tools) | 7 | USGS M2M API | 可选 | | 3 | [NASA FIRMS (活动火灾)](#3-nasa-firms-active-fire--6-tools) | 6 | NASA FIRMS REST | 可选密钥 | | 4 | [NASA 对地观测](#4-nasa-earth-observation--7-tools) | 7 | NASA Open APIs | 可选 (DEMO_KEY) | | 5 | [夜间灯光 (VIIRS)](#5-night-lights-viirs--5-tools) | 5 | EOG / NOAA | 无 | | 6 | [Planet Labs](#6-planet-labs--4-tools) | 4 | Planet Data API | 必需 | | 7 | [飞行器情报](#7-aircraft-intelligence--10-tools) | 10 | OpenSky Network | 可选 | | 8 | [海事情报](#8-maritime-intelligence--8-tools) | 8 | Global Fishing Watch | 可选 | | 9 | [军事与国防](#9-military--defense--8-tools) | 8 | OSM + OpenSky | 无 | | 10 | [太空与轨道追踪](#10-space--orbital-tracking--6-tools) | 6 | CelesTrak + N2YO | 可选 | | 11 | [冲突与事件](#11-conflict--events--6-tools) | 6 | ACLED + GDELT | 可选 | | 12 | [环境情报](#12-environmental-intelligence--6-tools) | 6 | GFW + Open-Meteo | 可选 | | 13 | [关键基础设施](#13-critical-infrastructure--6-tools) | 6 | OSM Overpass | 无 | | 14 | [制裁与合规](#14-sanctions--compliance--5-tools) | 5 | OFAC SDN | 无 | | 15 | [地形与海拔](#15-terrain--elevation--6-tools) | 6 | Open Elevation | 无 | | 16 | [网络地理情报](#16-cyber-geo-intelligence--6-tools) | 6 | OONI + IODA + ip-api | 无 | | 17 | [人口与人口统计](#17-population--demographics--5-tools) | 5 | WorldPop + UNHCR | 无 | | 18 | [农业与粮食安全](#18-agriculture--food-security--5-tools) | 5 | FAO + FEWS NET | 无 | | 19 | [人道主义与难民](#19-humanitarian--refugee--5-tools) | 5 | ReliefWeb + UNHCR | 无 | | 20 | [海洋情报](#20-ocean-intelligence--5-tools) | 5 | NOAA Buoys + Open-Meteo | 无 | | 21 | [贸易情报](#21-trade-intelligence--5-tools) | 5 | UN Comtrade | 可选 | | 22 | [地震与灾害](#22-seismic--disaster--5-tools) | 5 | USGS Earthquake | 无 | | 23 | [OpenStreetMap / Overpass](#23-openstreetmap--overpass--8-tools) | 8 | Overpass API | 无 | | 24 | [地理编码与坐标](#24-geocoding--coordinates--8-tools) | 8 | Nominatim + 计算 | 无 | | 25 | [光谱分析](#25-spectral-analysis--8-tools) | 8 | 纯计算 | 无 | | 26 | [变化检测](#26-change-detection--6-tools) | 6 | 纯计算 | 无 | | 27 | [天气与大气](#27-weather--atmosphere--6-tools) | 6 | Open-Meteo | 无 | | | **总计** | **171** | | | ### 1. Sentinel-2 (Copernicus) — 8 个工具
展开工具列表 | 工具 | 描述 | |------|-------------| | `sentinel_search` | 按位置、日期范围和云量百分比搜索 Sentinel-2 卫星图像 | | `sentinel_metadata` | 通过 ID 获取 Sentinel-2 产品的详细元数据 | | `sentinel_quicklook` | 获取 Sentinel-2 产品的快览(缩略图预览)URL | | `sentinel_bands` | 包含波长和分辨率的全部 13 个 Sentinel-2 MSI 光谱波段参考表 | | `sentinel_latest` | 查找指定位置最近的无云 Sentinel-2 图像 | | `sentinel_timeline` | 获取指定位置过去一年内可用的 Sentinel-2 图像日期 | | `sentinel_coverage` | 获取指定位置的 Sentinel-2 覆盖范围和重访信息 | | `sentinel_download_url` | 获取 Sentinel-2 产品的下载 URL(需要 Copernicus 认证) |
### 2. Landsat (USGS) — 7 个工具
展开工具列表 | 工具 | 描述 | |------|-------------| | `landsat_search` | 按位置、日期范围和云量搜索 Landsat 8/9 卫星场景 | | `landsat_metadata` | 通过实体 ID 获取 Landsat 场景的详细元数据 | | `landsat_browse` | 获取 Landsat 场景的浏览/缩略图 URL | | `landsat_bands` | 包含波长和分辨率的 Landsat 8/9 OLI/TIRS 光谱波段参考表 | | `landsat_latest` | 查找指定位置最近的 Landsat 场景 | | `landsat_timeline` | 获取指定位置的 Landsat 场景可用性 — 自 1972 年以来的历史覆盖范围 | | `landsat_download_url` | 获取 Landsat 场景的下载 URL(需要 USGS 认证) |
### 3. NASA FIRMS (活动火灾) — 6 个工具
展开工具列表 | 工具 | 描述 | |------|-------------| | `firms_active_area` | 查询 NASA FIRMS 获取地理边界框内的活动火灾探测数据 | | `firms_active_country` | 查询 NASA FIRMS 获取指定国家(ISO 3166-1 alpha-3)内的活动火灾探测数据 | | `firms_active_point` | 查找给定半径内特定坐标附近的活动火灾 | | `firms_history` | 检索特定日期和边界框的历史火灾探测数据 | | `firms_latest` | 检索按时间最近排序的全球火灾探测数据 | | `firms_summary` | 计算指定地理区域的火灾汇总统计数据 — 总数、亮度、FRP、置信度 |
### 4. NASA 对地观测 — 7 个工具
展开工具列表 | 工具 | 描述 | |------|-------------| | `nasa_earth_image` | 获取指定坐标和日期的 Landsat 8 自然色卫星图像 URL | | `nasa_earth_assets` | 列出指定地理坐标可用的 Landsat 8 图像日期 | | `nasa_epic_latest` | 获取来自 DSCOVR EPIC 相机的最新地球全景照片 | | `nasa_epic_date` | 获取特定日期的 DSCOVR EPIC 地球全景照片 | | `nasa_epic_archive` | 列出 DSCOVR EPIC 图像存档中所有可用的日期 | | `nasa_power_data` | 从 NASA POWER 检索每日的太阳和气象参数 | | `nasa_gibs_tile` | 为特定图层、日期和瓦片坐标构建 NASA GIBS WMTS 瓦片 URL |
### 5. 夜间灯光 (VIIRS) — 5 个工具
展开工具列表 | 工具 | 描述 | |------|-------------| | `nightlights_tile` | 从 NASA GIBS 获取夜间灯光地图瓦片 URL — VIIRS Black Marble 图层 | | `nightlights_radiance` | 获取某位置的夜间灯光辐射估算值 — 光照强度指标 | | `nightlights_compare` | 比较两个日期之间的夜间灯光水平 — 检测停电、城市扩张或冲突破坏 | | `nightlights_timeseries` | 夜间灯光时间序列分析 — 用于监测城市化或冲突的月度辐射趋势 | | `nightlights_anomaly` | 夜间灯光异常检测 — 指示停电、冲突或快速发展的突然变化 |
### 6. Planet Labs — 4 个工具
展开工具列表 | 工具 | 描述 | |-------------------| | `planet_search` | 搜索 Planet Labs 卫星图像目录 — 每日 3m 分辨率全球覆盖 | | `planet_metadata` | 获取 Planet Labs 项目的详细元数据 | | `planet_thumbnail` | 获取 Planet Labs 项目的缩略图预览 URL | | `planet_stats` | 获取某个区域的 Planet 图像覆盖范围统计信息 |
### 7. 飞行器情报 — 10 个工具
展开工具列表 | 工具 | 描述 | |------|-------------| | `aircraft_live` | 获取边界框内的实时飞行器位置 — 位置、高度、速度、航向、起飞国家 | | `aircraft_track` | 通过 ICAO24 十六进制地址追踪特定飞行器 — 返回航线路径点 | | `aircraft_flights` | 获取飞行器在一段时间内的飞行历史记录,包括出发和到达机场 | | `aircraft_waypoints` | 获取飞行器的飞行路径点并计算累积距离 | | `aircraft_arrivals` | 通过 ICAO 代码获取机场最近的到达航班 | | `aircraft_departures` | 通过 ICAO 代码获取机场最近的出发航班 | | `aircraft_search` | 通过呼号搜索当前空中的飞行器(支持部分匹配) | | `aircraft_military` | 通过分配给军事运营商的 ICAO24 十六进制范围过滤边界框内的军用飞行器 | | `aircraft_stats` | 边界框的交通统计 — 飞行器总数、高度分布、主要国家 | | `aircraft_anomaly` | 检测异常飞行器行为 — 低空、盘旋、紧急应答机代码、无呼号 |
### 8. 海事情报 — 8 个工具
展开工具列表 | 工具 | 描述 | |------|-------------| | `ship_search` | 使用 Global Fishing Watch 按名称、MMSI 或 IMO 编号搜索船只 | | `ship_position` | 通过 GFW 船只 ID 获取船只最后已知位置 | | `ship_track` | 获取指定日期范围内的船只移动历史记录(GPS 轨迹) | | `ship_area` | 使用 AIS 数据获取边界框区域内的所有船只 | | `ship_fishing` | 分析某个区域的捕鱼活动 — 捕鱼时长、船只数量、主要船旗国 | | `ship_port_visits` | 获取船只的港口访问历史记录 | | `ship_encounters` | 检测船对船相遇和转移 — 潜在的海上转运 | | `ship_dark` | 检测船只的 AIS 间隔事件(暗期)— 潜在的制裁逃避或非法活动 |
### 9. 军事与国防 — 8 个工具
展开工具列表 | 工具 | 描述 | |------|-------------| | `mil_bases` | 查找边界框内的军事基地、营房、机场、靶场和地堡(OSM 数据) | | `mil_aircraft` | 通过过滤军用的 ICAO24 十六进制范围追踪边界框内的实时军用飞行器 | | `mil_airspace` | 查找边界框内的限制区、危险区、禁飞区和军事空域区域 | | `mil_naval` | 查找边界框内的海军基地和军港 | | `mil_nuclear` | 查找核设施 — 边界框内的核电站、研究反应堆、浓缩设施 | | `mil_missile` | 查找边界框内已知的导弹试验场、发射台和军事测试靶场 | | `mil_radar` | 查找边界框内的雷达站和防空设施 | | `mil_activity` | 边界框的综合军事活动评分 — 设施数量、受限空域、总体评估 |
### 10. 太空与轨道追踪 — 6 个工具
展开工具列表 | 工具 | 描述 | |------|-------------| | `space_satellites` | 按类别列出活动卫星 — 通信、气象、军事、科学、导航、星链 | | `space_tle` | 通过 NORAD 目录编号获取卫星的 TLE(两行轨道根数)轨道数据 | | `space_passes` | 预测某位置上空的可见卫星过境(需要 N2YO API 密钥) | | `space_overhead` | 列出某位置当前正上方的卫星(需要 N2YO API 密钥) | | `space_starlink` | 获取 Starlink 星座状态 — 卫星总数、轨道统计数据、最新和最旧的发射 | | `space_debris` | 追踪已知碎片事件产生的太空碎片物体 |
### 11. 冲突与事件 — 6 个工具
展开工具列表 | 工具 | 描述 | |------|-------------| | `conflict_events` | 从 ACLED 获取武装冲突事件 — 战斗、针对平民的暴力、爆炸、骚乱、抗议 | | `conflict_fatalities` | 按国家/地区统计的冲突死亡人数 — 总死亡人数、按事件类型分类 | | `conflict_actors` | 列出在某国活跃的武装团体和参与者及其事件计数 | | `conflict_hotspots` | 冲突强度网格图 — 将边界框划分为多个单元格并统计每个单元格的事件数 | | `events_global` | 通过 GDELT 进行全球事件监测 — 搜索有关特定主题或事件的新闻报道 | | `events_media` | 通过 GDELT 进行媒体强度分析 — 追踪特定主题或地区随时间变化的新闻量 |
### 12. 环境情报 — 6 个工具
展开工具列表 | 工具 | 描述 | |------|-------------| | `env_deforestation` | 获取坐标附近的森林砍伐警报(GLAD)— 近期树木覆盖损失事件 | | `env_fire_risk` | 根据当前天气条件评估某位置的火灾风险 — 温度、湿度、风速 | | `env_methane` | 检查甲烷排放热点 — 使用 Sentinel-5P TROPOMI 数据参考 | | `env_air_pollution` | 获取卫星衍生的空气污染数据 — NO2, SO2, CO, PM2.5, 臭氧水平 | | `env_ocean_temp` | 使用 Open-Meteo 海洋数据获取坐标处的海面温度 (SST) | | `env_water_quality` | 水质指标 — 特定坐标的叶绿素和浊度参考数据 |
### 13. 关键基础设施 — 6 个工具
展开工具列表 | 工具 | 描述 | |------|-------------| | `infra_power` | 查找边界框内的发电厂、变电站和输电线路 | | `infra_pipelines` | 查找边界框内的石油、天然气和水管道 | | `infra_telecom` | 查找边界框内的手机基站、通信桅杆和数据中心 | | `infra_cables` | 查找边界框内的海底电缆着陆点 | | `infra_transport` | 查找边界框内的桥梁、隧道、渡轮码头和火车站 | | `infra_energy` | 查找可再生能源设施 — 边界框内的风力涡轮机和太阳能发电场 |
### 14. 制裁与合规 — 5 个工具
展开工具列表 | 工具 | 描述 | |------|-------------| | `sanctions_search` | 按名称、实体或组织搜索 OFAC SDN 制裁名单 | | `sanctions_vessel` | 通过 IMO 编号或船只名称检查船只是否在制裁名单上 | | `sanctions_entity` | 检查特定实体或个人的制裁状态 | | `sanctions_country` | 获取某国的制裁计划摘要 — 制裁级别、计划和限制措施 | | `sanctions_changes` | 检查 OFAC 制裁名单的近期变更 |
### 15. 地形与海拔 — 6 个工具
展开工具列表 | 工具 | 描述 | |------|-------------| | `terrain_elevation` | 获取给定地理坐标的海拔(海拔高度) | | `terrain_profile` | 生成两个地理点之间的海拔剖面,包含距离和海拔统计数据 | | `terrain_slope` | 计算两点之间的坡度(梯度)— 角度、百分比和地形分类 | | `terrain_viewshed` | 两点之间的视线分析 — 考虑地形因素,观察者 A 是否能看到目标 B | | `terrain_prominence` | 通过查询海拔网格,查找边界框内的最高点和最低点 | | `terrain_flood_risk` | 根据相对于参考水位的海拔高度评估某地的洪水风险 |
### 16. 网络地理情报 — 6 个工具
展开工具列表 | 工具 | 描述 | |------|-------------| | `cyber_ip_locate` | 对 IP 地址进行地理定位 — 国家、城市、ISP、坐标、时区 | | `cyber_censorship` | 使用 OONI 测量数据检测某国的互联网审查 — 被封锁的网站和方法 | | `cyber_outage` | 使用 IODA(互联网中断检测与分析)检测某国的互联网中断情况 | | `cyber_cable_landing` | 使用 OpenStreetMap 数据查找坐标附近的海底电缆着陆点 | | `cyber_ix_points` | 使用 PeeringDB 查找某个国家/地区的互联网交换中心 (IXP) | | `cyber_connectivity` | 国家互联网连接概览 — IXP 数量、电缆着陆点和评估 |
### 17. 人口与人口统计 — 5 个工具
展开工具列表 | 工具 | 描述 | |------|-------------| | `pop_density` | 使用 WorldPop 数据获取坐标或国家/地区的人口密度估算值 | | `pop_urban` | 获取坐标处的城市化和城市数据 — 附近的市区及其特征 | | `pop_growth` | 获取联合国世界人口展望中的国家人口增长数据 | | `pop_displacement` | 从 UNHCR 获取某国的流离失所人口数据 | | `pop_age_structure` | 某国的人口年龄结构参考 — 用于人口统计分析的年龄组 |
### 18. 农业与粮食安全 — 5 个工具
展开工具列表 | 工具 | 描述 | |------|-------------| | `agri_crop_health` | 使用 NDVI 时间序列评估某地的农作物健康状况 — 链接到卫星植被指数 | | `agri_drought` | 使用天气指标评估某地的干旱情况 — 温度、降水量、湿度 | | `agri_food_price` | FAO 粮食价格指数 — 全球粮食商品价格趋势 | | `agri_famine_risk` | 使用 FEWS NET IPC 阶段分类进行饥荒风险评估 | | `agri_locust` | 来自 FAO 沙漠蝗虫监测的沙漠蝗虫虫群追踪和警报 |
### 19. 人道主义与难民 — 5 个工具
展开工具列表 | 工具 | 描述 | |------|-------------| | `humanitarian_crises` | 列出来自 ReliefWeb 的全球活跃人道主义危机 | | `humanitarian_reports` | 从 ReliefWeb 获取最新的人道主义局势报告和更新 | | `humanitarian_camps` | 从 UNHCR 获取难民营位置和人口数据 | | `humanitarian_funding` | 人道主义资金状况 — 危机中的请求资金与实际收到资金对比 | | `humanitarian_displacement` | 全球流离失所统计数据 — 来自 UNHCR 的难民、境内流离失所者、寻求庇护者 |
### 20. 海洋情报 — 5 个工具
展开工具列表 | 工具 | 描述 | |------|-------------| | `ocean_buoy_data` | 获取来自 NOAA NDBC 的海洋浮标测量数据 — 波高、风速、温度、气压 | | `ocean_currents` | 使用 Open-Meteo 海洋数据获取海洋位置的海流信息 | | `ocean_sea_ice` | 海冰范围信息 — 北极和南极冰覆盖率参考 | | `ocean_chlorophyll` | 海洋叶绿素浓度参考 &mdash 捕鱼生产力和海洋生态系统指标 | | `ocean_sst_anomaly` | 海面温度异常 — 厄尔尼诺/拉尼娜指标和气候监测 |
### 21. 贸易情报 — 5 个工具
展开工具列表 | 工具 | 描述 | |------|-------------| | `trade_flow` | 获取两国之间的双边贸易数据 — 按商品分类的进出口额 | | `trade_partners` | 获取某国的主要贸易伙伴 | | `trade_commodity` | 获取特定商品(HS 编码)的全球贸易数据 | | `trade_timeseries` | 获取成对国家/地区多年来的贸易量时间序列 | | `trade_balance` | 计算两国之间的贸易差额 — 出口减去进口 |
### 22. 地震与灾害 — 5 个工具
展开工具列表 | 工具 | 描述 | |------|-------------| | `quake_recent` | 获取按最小震级过滤的全球近期地震 — 位置、深度、海啸预警 | | `quake_search` | 按日期范围、震级和地理区域搜索地震 | | `quake_detail` | 通过 USGS 事件 ID 获取特定地震的详细信息 | | `quake_area` | 获取指定时间段内边界框中的地震情况 | | `quake_stats` | 一段时间内的地震统计 — 震级分布、最深、最强、平均值 |
### 23. OpenStreetMap / Overpass — 8 个工具
展开工具列表 | 工具 | 描述 | |------|-------------| | `osm_query` | 针对 OpenStreetMap 数据运行自定义 Overpass QL 查询 — 返回类 GeoJSON 元素 | | `osm_buildings` | 统计和分类边界框内的建筑物 — 住宅、商业、工业 | | `osm_infrastructure` | 查找边界框内的道路、桥梁和铁路 | | `osm_military` | 查找边界框内的军事设施(基地、机场、营房、地堡、检查站) | | `osm_airports` | 查找边界框内的机场、小型机场和直升机停机坪 | | `osm_water` | 查找边界框内的水体、河流、溪流和水坝 | | `osm_industrial` | 查找边界框内的工业场所、发电厂和炼油厂 | | `osm_identify` | 识别给定坐标处的物体 — 在半径内搜索命名特征 |
### 24. 地理编码与坐标 — 8 个工具
展开工具列表 | 工具 | 描述 | |------|-------------| | `geo_forward` | 正向地理编码:将地址或地名转换为地理坐标(Nominatim) | | `geo_reverse` | 反向地理编码:将纬度/经度转换为人类可读的地址(Nominatim) | | `geo_distance` | 使用 Haversine 公式计算两点之间的大圆距离 | | `geo_bbox` | 从中心点和以公里为单位的半径计算边界框 | | `geo_mgrs` | 在 MGRS(军事网格参考系统)和纬度/经度坐标之间进行转换 | | `geo_elevation` | 使用 Open Elevation API 获取地理坐标处的海拔 | | `geo_timezone` | 根据经度估算地理坐标处的时区 | | `geo_sun` | 计算太阳位置数据 — 日出、日落、太阳正午、民用晨昏、日照时长 |
### 25. 光谱分析 — 8 个工具
展开工具列表 | 工具 | 描述 | |------|-------------| | `spectral_ndvi` | 根据 NIR 和红波段反射率计算归一化植被指数 (NDVI) | | `spectral_ndwi` | 根据绿波段和 NIR 波段反射率计算归一化差异水体指数 (NDWI) | | `spectral_nbr` | 根据 NIR 和 SWIR 波段反射率计算归一化燃烧比 (NBR) | | `spectral_evi` | 根据 NIR、红和蓝波段反射率计算增强型植被指数 (EVI) | | `spectral_ndbi` | 根据 SWIR 和 NIR 波段反射率计算归一化差值建筑指数 (NDBI) | | `spectral_bsi` | 根据 SWIR、红、NIR 和蓝波段反射率计算裸土指数 (BSI) | | `spectral_savi` | 根据 NIR 和红波段反射率计算土壤调整植被指数 (SAVI) | | `spectral_custom` | 使用安全的表达式解析器评估自定义波段数学表达式 |
### 26. 变化检测 — 6 个工具
展开工具列表 | 工具 | 描述 | |------|-------------| | `change_detect` | 通用变化检测:计算两个日期之间任意光谱指数的差值 | | `change_vegetation` | 使用 NDVI 检测两个日期之间的植被变化 | | `change_urban` | 使用 NDBI 检测两个日期之间的城市扩张 | | `change_water` | 使用 NDWI 检测两个日期之间的水体变化 | | `change_burn` | 使用 dNBR 检测火灾前和火灾后日期之间的火烧迹地/燃烧严重程度 | | `change_summary` | 多指数变化报告:NDVI、NDWI、NDBI、NBR、BSI,用于整体景观变化评估 |
### 27. 天气与大气 — 6 个工具
展开工具列表 | 工具 | 描述 | |------|-------------| | `weather_current` | 获取当前天气状况 — 温度、湿度、风速、气压、云量、降水量 | | `weather_forecast` | 获取 7 天天气预报,包括每日温度、降水量、风速、日出和日落 | | `weather_historical` | 获取特定日期和位置的历史天气数据 | | `weather_satellite_window` | 寻找未来 N 天的最佳卫星成像窗口(低云量时期) | | `atmosphere_air_quality` | 获取当前的空气质量指数和污染物浓度(PM2.5、PM10、NO2、SO2、CO、臭氧) | | `atmosphere_uv` | 获取坐标处的当前 UV 指数及风险分级 |
### Meta — 1 个工具 | 工具 | 描述 | |------|-------------| | `satellite_list_sources` | 列出所有 27 个类别的全部数据源、API 密钥配置状态和工具计数 | ## API 密钥 所有 API 密钥均通过环境变量进行配置。大多数工具无需任何密钥即可正常工作。 | 环境变量 | 服务 | 必需 | 用途 | |---------------------|---------|----------|---------| | `COPERNICUS_CLIENT_ID` | Copernicus Data Space | 可选 | Sentinel-2 图像下载和快览访问 | | `COPERNICUS_CLIENT_SECRET` | Copernicus Data Space | 可选 | Sentinel-2 OAuth2 认证(与 CLIENT_ID 配对) | | `USGS_USERNAME` | USGS EarthExplorer | 可选 | Landsat 场景搜索、元数据和下载 | | `USGS_PASSWORD` | USGS EarthExplorer | 可选 | Landsat 认证(与 USERNAME 配对) | | `NASA_API_KEY` | NASA Open APIs | 可选 | 地球图像、EPIC、POWER 数据(回退:DEMO_KEY) | | `NASA_FIRMS_KEY` | NASA FIRMS | 可选 | 活动火灾探测(回退:DEMO_KEY) | | `NASA_EARTHDATA_TOKEN` | NASA Earthdata | 可选 | 高级 NASA 数据访问 | | `PLANET_API_KEY` | Planet Labs | 必需 | 每日 3m 卫星图像(搜索、元数据、缩略图) | | `OPENSKY_USERNAME` | OpenSky Network | 可选 | 更高的飞行器追踪速率限制 | | `OPENSKY_PASSWORD` | OpenSky Network | 可选 | OpenSky 认证(与 USERNAME 配对) | | `GFW_API_KEY` | Global Fishing Watch | 可选 | 海事船只追踪、捕鱼活动、AIS 间隔 | | `N2YO_API_KEY` | N2YO | 可选 | 卫星过境预测和正上方追踪 | | `ACLED_API_KEY` | ACLED | 可选 | 武装冲突事件数据 | | `ACLED_EMAIL` | ACLED | 可选 | ACLED 注册邮箱(与 API_KEY 配对) | | `COMTRADE_API_KEY` | UN Comtrade | 可选 | 国际贸易流动数据 | | `TIMEZONEDB_KEY` | TimezoneDB | 可选 | 增强的时区查询 | **在没有任何 API 密钥的情况下**,以下类别可完全正常工作:夜间灯光、军事与国防、关键基础设施、制裁与合规、地形与海拔、网络地理情报、人口与人口统计、农业与粮食安全、人道主义与难民、海洋情报、地震与灾害、OpenStreetMap、地理编码与坐标、光谱分析、变化检测、天气与大气。NASA 工具将自动回退到 `DEMO_KEY`,但其速率限制较低。 ## 架构 ``` src/ index.ts # CLI entrypoint (--help, --list, --tool, stdio server) protocol/ mcp-server.ts # MCP server setup (stdio transport) tools.ts # Tool registry — all 171 tools assembled here types/ index.ts # Shared types (ToolDef, ToolContext, ToolResult) utils/ rate-limiter.ts # Per-provider rate limiter cache.ts # TTL cache for API responses geo-math.ts # Haversine distance, bounding box computation require-key.ts # API key validation helper sentinel/ # Sentinel-2 (Copernicus) tools (8) landsat/ # Landsat (USGS) tools (7) firms/ # NASA FIRMS active fire tools (6) nasa/ # NASA Earth observation tools (7) nightlights/ # VIIRS night lights tools (5) planet/ # Planet Labs tools (4) aircraft/ # Aircraft intelligence tools (10) maritime/ # Maritime intelligence tools (8) military/ # Military & defense tools (8) space/ # Space & orbital tracking tools (6) conflict/ # Conflict & events tools (6) environment/ # Environmental intelligence tools (6) infrastructure/ # Critical infrastructure tools (6) sanctions/ # Sanctions & compliance tools (5) terrain/ # Terrain & elevation tools (6) cyber/ # Cyber-geo intelligence tools (6) population/ # Population & demographics tools (5) agriculture/ # Agriculture & food security tools (5) humanitarian/ # Humanitarian & refugee tools (5) ocean/ # Ocean intelligence tools (5) trade/ # Trade intelligence tools (5) seismic/ # Seismic & disaster tools (5) osm/ # OpenStreetMap / Overpass tools (8) geo/ # Geocoding & coordinates tools (8) spectral/ # Spectral analysis tools (8) change/ # Change detection tools (6) weather/ # Weather & atmosphere tools (6) meta/ # Meta tools (1) ``` **设计决策:** - **27 个提供商,1 个服务器** — 每个数据源都是 `src/` 下的一个独立模块。AI 代理会根据查询内容选择要使用的工具。 - **按提供商进行速率限制** — 每个数据源都有自己独立的 `RateLimiter` 实例,并根据该 API 的限制进行了校准。不存在共享瓶颈。 - **TTL 缓存** — API 响应使用适合对应数据源的 TTL 进行缓存:实时飞行器数据为 2 分钟,火灾数据为 5 分钟,卫星目录为 15 分钟,NASA 存档为 30 分钟。 - **优雅降级** — 缺少 API 密钥永远不会导致服务器崩溃。工具会返回带有说明的描述性错误信息:“设置 PLANET_API_KEY 以启用 Planet Labs 工具。” - **纯计算** — 光谱分析和变化检测工具是纯粹的数学函数,没有外部 API 调用。NDVI、NDWI、NBR、EVI 和自定义波段表达式均可瞬间运行。 - **2 个依赖项** — `@modelcontextprotocol/sdk` 和 `zod`。所有 HTTP 请求均通过原生 `fetch()` 进行。所有地理数学计算均为手写。 ## 用例 - **监测森林砍伐和非法采伐** — 结合 Sentinel-2 图像搜索、NDVI 光谱分析和 GLAD 森林砍伐警报,长期追踪森林损失 - **追踪飞行器和船只移动** — 使用飞行器和海事工具进行实时 ADS-B 和 AIS 监测,探测军事飞行、暗船活动和制裁逃避 - **检测冲突热点和人道主义危机** — 查询 ACLED 获取武装冲突事件,结合 GDELT 新闻数据进行关联分析,并检查 UNHCR 的流离失所统计数据 - **分析城市扩张和基础设施变更** — 比较不同日期的夜间灯光图像,计算 NDBI 以检测建成区,并查询 OSM 获取新建建筑信息 - **监测制裁合规情况** — 将船只移动与 OFAC SDN 名单进行交叉比对,检测 AIS 暗期,并核对受制裁国家的港口访问记录 - **评估自然灾害影响** — 将地震数据与地形海拔相结合,通过燃烧严重程度指数探测火灾,并利用卫星图像进行灾前后对比分析 - **农业干旱和粮食安全监测** — 通过 NDVI 追踪植被健康状况,结合 NASA POWER 天气数据,并查看 FEWS NET 的饥荒风险评估 - **网络地理情报** — 对 IP 地址进行地理定位,检测互联网审查和中断情况,绘制海底电缆基础设施地图,并与冲突数据进行关联 ## 贡献 欢迎您的贡献。请先开启一个 issue 以讨论您希望进行的更改。 1. Fork 该存储库 2. 创建您的功能分支 (`git checkout -b feat/new-provider`) 3. 安装依赖项:`bun install` 4. 以开发模式运行:`bun run dev` 5. 在 `src//index.ts` 下添加您的提供商 6. 在 `src/protocol/tools.ts` 中注册工具 7. 提交您的更改(遵循约定式提交格式) 8. 发起 Pull Request ## 许可证 [MIT](LICENSE)

使用 TypeScript + Bun 构建

标签:MCP服务器, MITM代理, 军事国防, 卫星遥感, 地理空间情报, 数据集成, 暗色界面, 环境监测, 自动化攻击, 航空航海追踪