aicesat
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이 적용됩니다. 이는 모든 comparability 블록에 기록됩니다.
설정
uv sync # Python 3.13
uv run pytest # offline unit testsEarthdata Login: bearer 토큰은 ~/.edl/token.prod에서 읽습니다(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_ui, list_regions, list_scenes, check_coverage, show_photons (region, bbox 또는 polygon), add_glas, coregister, lake_status, lake_load_cells, job_status.
UI
하나의 자체 포함된 페이지(scripts/build_ui.py가 src/aicesat/ui/* 및 번들된 deck.gl / h3-js로 순수 Python으로 빌드하고, 소스가 변경되면 서버는 시작 시 이를 다시 빌드)로서 Claude Desktop 안에 인라인으로, 그리고 /에서 제공됩니다:
Explore — 3D 지구본(Natural Earth 베이스맵, 평면 투영 없음). 어디든 탐색하고, 상자 또는 다각형을 그리고, 적용 범위를 확인하고, 백그라운드 작업으로 장면을 빌드할 수 있습니다. 장면 풋프린트와 로드된 H3 셀이 지구본에 표시됩니다.
Lake — H3 그리드로 표시되는 영구 Parquet 레이크: 호버 시 셀별 통계, 가장 오래 사용되지 않은 셀을 자동으로 축출하는 저장 한도, 선택한 셀의 백그라운드 로딩 또는 축출.
Scene — 3D 뷰어: DEM 위에 드레이프된 ICESat-2 및 GLAS 포인트, 보정 토글이 있는 Adjustments 패널, 동일 위치의 Δh 히스토그램. 실제 판 운동 변위는 장면 축척에서 서브픽셀이므로 점 구름은 눈에 보이게 움직이지 않습니다. 효과는 과장된 시각 효과가 아니라 Δh 패널에서 읽힙니다. 패널은 접고 닫을 수 있습니다.
UI는 전송 중립적 API(api.py)와 통신하며 두 가지 방식으로 노출됩니다: 브라우저용 localhost /api/* 라우트와 인라인 앱을 위해 호스트가 프록시하는 visibility:["app"] MCP 도구입니다. scripts/e2e_apps.py는 MCP-App 연결을 확인합니다.
아키텍처
ATL03 경로는 쿼리 시점에 HDF5를 열지 않습니다. 각 granule에 대해 인덱스 빌드(index.py)는 각 청크의 바이트 범위, 필터 파이프라인, 그리고 그 청크가 걸치는 H3 셀을 기록합니다. 쿼리는 bbox/폴리곤을 셀로 해석하고, HTTPS 범위 요청(EDL 베어러 토큰 → 사전 서명된 URL)으로 필요한 청크만 가져온 뒤 HDF5 라이브러리 없이 디코딩하여 광자를 hive 파티셔닝된 Parquet 레이크(lake.py)에 행별 출처 및 공동 정합 좌표와 함께 구체화합니다. DuckDB는 레이크에 대한 쿼리에 응답하며(api.py), coverage 테이블은 무엇이 구체화되었는지 기록하므로 반복 쿼리는 아무것도 가져오지 않습니다. 이전의 earthaccess.open + h5py 경로는 비교를 위해 atl03.extract_legacy로 유지됩니다. scripts/bench_access.py는 접근 방식을 비교합니다. 접근 방식은 스펙(부록 C)을 참조하세요.
장면 지오메트리는 위도를 인식합니다(scene.frame_crs): 극지방 부근에서는 polar-stereographic, 그 외 지역에서는 장면별 azimuthal-equidistant 투영을 사용하므로 장면은 지구 어디에서나 렌더링됩니다.
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이 덮는 곳에서만 DEM을 표시합니다. 장면 이미지는 Sentinel-2 cloudless(EOX, CC BY-NC-SA 4.0)이며 표면에 드레이프됩니다. Explore/Lake 지구본 베이스맵은 Natural Earth 50m 육지(퍼블릭 도메인)입니다. 출처 표시가 화면에 나타납니다.
스크립트
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 표면 높이는 동일 위치 반경 내 신호 광자들의 국지적 트랙 방향(along-track) 선형 피트에서 얻습니다. 디스크 중앙값은 순서 통계량이므로 서브cm 경사 효과를 분해할 수 없지만, 피트는 위치에 따라 연속적이므로 분해할 수 있습니다. 판 운동 변위의 빔 방향 성분만 단일 빔에서 관측할 수 있으며, 쌍별 아티팩트 패널은 프레임 스텝의 mm 수준 수직 성분을 경사 효과와 분리합니다. 모든 답변은 unresolved 목록을 포함하고 "plate motion applied"라고 명시하며, 절대 "the missions agree"라고 하지 않습니다.
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