aicesat
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 testsEarthdata 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 и сообщает: «применено движение плит», но никогда — «миссии согласуются».
Maintenance
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
- AlicenseNot gradedqualityDmaintenanceEnables advanced geospatial analysis including elevation queries, line-of-sight calculations, terrain visualization, and autonomous drone mission planning with real-time safety analysis and 3D visualization capabilities.MIT
- AlicenseNot gradedqualityDmaintenanceWorld's first MCP server for point cloud (LAS/LAZ) data, enabling natural language commands to compute earthwork volumes, generate heatmaps, and produce PDF reports.MIT
- AlicenseNot gradedqualityCmaintenanceEnables querying OpenTopography global DEM rasters and point elevations through tools like point_elevation, dem, and datasets.7MIT
- FlicenseNot gradedqualityCmaintenanceEnables querying 3D point cloud files (PLY/PCD) using natural language. Provides tools for point cloud description, plane detection, and ICP alignment.
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.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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