Skip to main content
Glama

aicesat — межмиссионная альтиметрия

MCP-сервер для Claude Desktop, который загружает реальные фотоны ICESat-2 ATL03 и измерения ICESat/GLAS GLAH06 по выбранной области, отображает их как трёхмерное облако точек (deck.gl) и — по переключателю — применяет корегистрацию ITRF2014 + эпоха (движение плит, ITRF2014-PMM / NOAM) с помощью pyproj, обновляя статистику совмещённых по координатам Δh. Исходной точкой послужил docs/cross-mission-altimetry-mcp-spec.md, где приведены полное проектное решение и обоснование.

Корегистрация устраняет движение плит между эпохами. Она не устраняет течение льда, GIA, геоид/приливы, уплотнение фирна или вертикальную отсчётную поверхность, и виджет сообщает об этом в каждом ответе. Высоты GLAS переводятся с эллипсоида TOPEX/Poseidon на эллипсоид WGS84 с использованием d_deltaEllip из продукта и применением поправки насыщения d_satElevCorr; это фиксируется в каждом блоке сопоставимости.

Установка

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

Earthdata Login: bearer-токен считывается из ~/.edl/token.prod (переопределите через AICESAT_EDL_FILE или задайте EARTHDATA_TOKEN). Сервер никогда не пишет в stdout (транспорт MCP через stdio); журналы идут в 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. Унифицированный интерфейс отображается встроенно как MCP App; сервер также раздаёт его по адресу http://127.0.0.1:8765/ (порт через AICESAT_PORT) для использования в браузере.

Инструменты: open_ui, list_regions, list_scenes, check_coverage, show_photons (регион, bbox или полигон), add_glas, coregister, lake_status, lake_load_cells, job_status.

Интерфейс

Одна самодостаточная страница (собирается из src/aicesat/ui/* + вендоренных deck.gl / h3-js скриптом scripts/build_ui.py, чистый Python; сервер пересобирает её при запуске, если исходники изменились), доступная и встроенно в Claude Desktop, и по адресу /:

  • Explore — трёхмерный глобус (базовая карта Natural Earth, без плоской проекции). Перемещайтесь куда угодно, рисуйте прямоугольник или полигон, проверяйте покрытие и собирайте сцену как фоновое задание; на глобусе отображаются контуры сцен и загруженные ячейки H3.

  • Lake — постоянное озеро Parquet в виде сетки H3: статистика по ячейке при наведении, лимит хранилища с автоматическим вытеснением наименее недавно использованных ячеек и фоновая загрузка или вытеснение выбранных ячеек.

  • Scene — трёхмерный просмотрщик: точки ICESat-2 и GLAS, наложенные на ЦМР, панель Adjustments с переключателями поправок и гистограммы совмещённых по координатам Δh. Реальный сдвиг из-за движения плит на масштабе сцены меньше пикселя, поэтому облака точек визуально не двигаются — эффект считывается с панели Δh, а не с преувеличенной визуализации. Панели сворачиваются и закрываются.

Интерфейс общается с транспортно-нейтральным API (api.py), доступным двумя способами: маршруты /api/* на localhost для браузера и MCP-инструменты visibility:["app"], которые хост проксирует для встроенного приложения. scripts/e2e_apps.py проверяет подключение MCP-App.

Архитектура

Путь ATL03 не открывает HDF5 во время запроса. Для каждой гранулы построение индекса (index.py) записывает байтовый диапазон каждого чанка, конвейер фильтров и затрагиваемые им ячейки H3. Запросы превращают bbox/полигон в ячейки, загружают только нужные чанки по HTTPS-range-запросам (bearer-токен EDL → предподписанный URL), декодируют их без библиотеки HDF5 и материализуют фотоны в hive-секционированное озеро Parquet (lake.py) с происхождением по каждой строке и скорегистрированными координатами. DuckDB отвечает по данным озера (api.py); таблица покрытия фиксирует, что материализовано, чтобы повторные запросы ничего не загружали. Прежний путь earthaccess.open + h5py сохранён как atl03.extract_legacy для сравнения. scripts/bench_access.py сравнивает способы доступа; описание подхода см. в спецификации (Приложение C).

Геометрия сцены учитывает широту (scene.frame_crs): полярная стереографическая проекция вблизи полюсов и индивидуальная азимутальная равнопромежуточная проекция в остальных местах, поэтому сцены отображаются в любом месте Земли.

ЦМР и снимки

Поверхность сцены — реальная ЦМР, выбираемая по региону, всегда в высотах над эллипсоидом WGS84 (та же вертикальная система отсчёта, что и у ATL03), читается окнами через /vsicurl/ и кэшируется: ArcticDEM v4.1 (Арктика, EPSG:3413) и REMA v2.0 (Антарктика, EPSG:3031) — обе уже эллипсоидальные, — а в остальных местах Copernicus GLO-30, чьи ортометрические высоты EGM2008 переводятся в эллипсоидальные добавлением ундуляции геоида NGA egm08 (h = H + N). Запасного варианта с интерполяцией по фотонам нет: сцена показывает ЦМР только там, где она есть. Снимки сцены — Sentinel-2 cloudless (EOX, CC BY-NC-SA 4.0), наложенные на поверхность. Базовая карта глобуса Explore/Lake — Natural Earth 50 m land (общественное достояние). Атрибуция отображается на экране.

Скрипты

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/) игнорируются git; удалите их, чтобы принудительно выполнить повторную загрузку.

Как измеряется Δ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