Skip to main content
Glama

aicesat — 跨任务测高

一个面向 Claude Desktop 的 MCP 服务器,用于拉取所选区域内的真实 ICESat-2 ATL03 光子与 ICESat/GLAS GLAH06 激光足印,将其渲染为 3D 点云(deck.gl),并在开关启用时使用 pyproj 应用 ITRF2014 + 历元联合配准(板块运动、ITRF2014-PMM / NOAM),更新共位 Δh 统计。该项目始于 docs/cross-mission-altimetry-mcp-spec.md,其中包含完整的设计与原理说明。

该联合配准消除历元之间的板块运动。它消除冰流、GIA、大地水准面/潮汐、粒雪压实或垂直基准,并且组件会在每次回答中说明这一点。GLAS 高程使用产品中的 d_deltaEllip 从 TOPEX/Poseidon 转换到 WGS84 椭球,并应用饱和校正 d_satElevCorr;此信息记录在每个可比性块中。

设置

uv sync          # Python 3.13
uv run pytest    # offline unit tests

Earthdata 登录:从 ~/.edl/token.prod 读取 bearer 令牌(可用 AICESAT_EDL_FILE 覆盖,或设置 EARTHDATA_TOKEN)。服务器从不向 stdout 写入(stdio MCP 传输);日志输出到 stderr。

Related MCP server: pointcloud-mcp

Claude Desktop

将其添加到 ~/Library/Application Support/Claude/claude_desktop_config.json,使用你检出目录的绝对路径:

{
  "mcpServers": {
    "aicesat": {
      "command": "/opt/homebrew/bin/uv",
      "args": ["--directory", "/ABSOLUTE/PATH/TO/aicesat", "run", "aicesat-server"]
    }
  }
}

重启 Claude Desktop。统一 UI 会以内联 MCP App 的形式渲染;服务器还会在 http://127.0.0.1:8765/ 提供该界面(端口通过 AICESAT_PORT 设置),供浏览器使用。

工具:open_uilist_regionslist_scenescheck_coverageshow_photons(region、bbox 或 polygon)、add_glascoregisterlake_statuslake_load_cellsjob_status

UI

一个自包含页面(由 scripts/build_ui.pysrc/aicesat/ui/* + 内置的 deck.gl / h3-js 构建,纯 Python;当源文件变化时服务器会在启动时重新构建),同时以内联方式服务于 Claude Desktop 和 /

  • Explore — 3-D 地球(Natural Earth 底图,无平面投影)。可导航到任意位置,绘制矩形或多边形,检查覆盖情况,并将场景构建作为后台任务运行;场景足迹和已加载的 H3 单元会显示在地球上。

  • Lake — 以 H3 网格呈现的持久化 Parquet lake:悬停查看逐单元统计、自动逐出最久未使用单元的存储上限,以及对所选单元的后台加载或逐出。

  • Scene — 3-D 查看器:覆盖在 DEM 上的 ICESat-2 与 GLAS 点、包含校正开关的 Adjustments 面板,以及共位 Δh 直方图。真实的板块运动位移在场景尺度下小于一个像素,因此点云不会明显移动——效果通过 Δh 面板读取,而非夸大的视觉效果。面板可折叠和关闭。

该 UI 与传输中立的 API(api.py)通信,该 API 以两种方式暴露:面向浏览器的 localhost /api/* 路由,以及宿主为内联应用代理的 visibility:["app"] MCP 工具。scripts/e2e_apps.py 检查 MCP-App 的接线。

架构

ATL03 路径在查询时不会打开 HDF5。对于每个 granule,索引构建(index.py)记录每个 chunk 的字节范围、过滤流水线以及它所触及的 H3 单元。查询将 bbox/polygon 解析为单元,仅通过 HTTPS 范围请求(EDL bearer 令牌 → 预签名 URL)获取所需 chunk,在无 HDF5 库的情况下解码,并将光子物化为 hive 分区的 Parquet lake(lake.py),带逐行来源和联合配准坐标。DuckDB 负责对 lake 的查询(api.py);覆盖表记录已物化的内容,因此重复查询不会获取任何数据。早期的 earthaccess.open + h5py 路径保留为 atl03.extract_legacy 以供对比。scripts/bench_access.py 比较各种访问方法;方法详见规范(附录 C)。

场景几何是纬度感知的(scene.frame_crs):极地附近采用极球面投影,其他区域采用逐场景的等距方位投影,因此场景可在地球上任意位置渲染。

DEM 与影像

场景表面是按区域选择的真实 DEM,始终基于 WGS84 椭球高程(与 ATL03 相同的垂直参考),通过 /vsicurl/ 按窗口读取并缓存:ArcticDEM v4.1(北极,EPSG:3413)和 REMA v2.0(南极,EPSG:3031)——两者均为椭球高程——其他区域使用 Copernicus GLO-30,其 EGM2008 正高高程通过加上 NGA egm08 大地水准面差距(h = H + N)转换为椭球高程。没有光子插值的回退方案:场景只在其覆盖之处显示 DEM。场景影像为 Sentinel-2 cloudless(EOX,CC BY-NC-SA 4.0),覆盖在表面上。Explore/Lake 地球底图为 Natural Earth 50 m 陆地(公共领域)。署名信息显示在屏幕上。

脚本

uv run scripts/check_coverage.py --region egig_west_flank   # granule counts by month / laser campaign
uv run scripts/ingest.py egig_west_flank                    # index + byte-range ingest + lake query
uv run scripts/build_index.py --region egig_west_flank      # offline index pre-build (amortized off the query path)
uv run scripts/make_scene.py egig_west_flank --glas --coreg # full pipeline for a region
uv run scripts/serve.py                                     # widget server only, for local testing
uv run scripts/bench_access.py                              # access-method comparison

数据(data/)已被 gitignore;删除它以强制重新获取。

Δh 的测量方式

对于每一次 GLAS 激光发射,ICESat-2 在足印中心的地表高度来自共位半径内信号光子的局部沿轨线性拟合。圆盘中位数是一种顺序统计量,无法分辨亚厘米级的坡度效应;而拟合在位置上连续,因此可以分辨。单条波束上只能观测到板块运动位移的沿波束分量,并且每对伪影面板将参考框架阶跃的毫米级垂直部分与坡度效应分开。每个回答都携带 unresolved 列表,并声明“已应用板块运动”,而绝不会说“两个任务一致”。

Install Server
F
license - not found
C
quality
B
maintenance

Maintenance

Maintainers
<1hResponse time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • OpenTopography global DEM rasters + point queries (free key)

  • Open Topo Data — global elevation lookups (multiple DEM datasets)

  • Measured ground motion per US address (NASA InSAR). Self-register, $0.40/report, misses free.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/eigenbeam/aicesat'

If you have feedback or need assistance with the MCP directory API, please join our Discord server