Skip to main content
Glama

aicesat — missionsübergreifende Altimetrie

Ein MCP-Server für Claude Desktop, der echte ICESat-2-ATL03-Photonen und ICESat/GLAS-GLAH06-Schüsse über ein ausgewähltes Gebiet abruft, sie als 3D-Punktwolke (deck.gl) rendert und — per Umschalter — eine Koregistrierung von ITRF2014 + Epoche (Plattenbewegung, ITRF2014-PMM / NOAM) mit pyproj anwendet, wobei die kollokierten Δh-Statistiken aktualisiert werden. Ausgehend von docs/cross-mission-altimetry-mcp-spec.md, das das vollständige Design und die Begründung enthält.

Die Koregistrierung entfernt Plattenbewegung zwischen Epochen. Sie entfernt nicht Eisfluss, GIA, Geoid/Gezeiten, Firnkompaktion oder das vertikale Datum, und das Widget weist bei jeder Antwort darauf hin. GLAS-Höhen werden mithilfe von d_deltaEllip des Produkts vom TOPEX/Poseidon- zum WGS84-Ellipsoid umgerechnet, wobei die Sättigungskorrektur d_satElevCorr angewendet wird; das wird in jedem Vergleichbarkeitsblock festgehalten.

Einrichtung

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

Earthdata Login: Ein Bearer-Token wird aus ~/.edl/token.prod gelesen (überschreibbar mit AICESAT_EDL_FILE oder durch Setzen von EARTHDATA_TOKEN). Der Server schreibt nie auf stdout (Stdio-MCP-Transport); Logs gehen auf stderr.

Related MCP server: pointcloud-mcp

Claude Desktop

Fügen Sie unter Verwendung des absoluten Pfads zu Ihrem Checkout Folgendes zu ~/Library/Application Support/Claude/claude_desktop_config.json hinzu:

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

Starten Sie Claude Desktop neu. Die einheitliche UI wird inline als MCP-App gerendert; der Server stellt sie außerdem unter http://127.0.0.1:8765/ bereit (Port über AICESAT_PORT) für die Nutzung im Browser.

Tools: open_ui, list_regions, list_scenes, check_coverage, show_photons (Region, Bounding-Box oder Polygon), add_glas, coregister, lake_status, lake_load_cells, job_status.

UI

Eine in sich geschlossene Seite (erstellt aus src/aicesat/ui/* + mitgeliefertem deck.gl / h3-js durch scripts/build_ui.py, reines Python; der Server erstellt sie beim Start neu, wenn sich die Quellen ändern), die sowohl inline in Claude Desktop als auch unter / bereitgestellt wird:

  • Explore — ein 3-D-Globus (Basiskarte Natural Earth, keine flache Projektion). Überall navigieren, einen Kasten oder ein Polygon zeichnen, die Abdeckung prüfen und eine Szene als Hintergrundjob erstellen; Szenen-Footprints und die geladenen H3-Zellen werden auf dem Globus angezeigt.

  • Lake — der persistente Parquet-See als H3-Gitter: Statistiken pro Zelle beim Überfahren, ein Speicherlimit, das die am längsten nicht verwendeten Zellen automatisch verdrängt, und Hintergrundladen oder -auslagern ausgewählter Zellen.

  • Scene — der 3-D-Viewer: ICESat-2- und GLAS-Punkte auf ein DEM gelegt, ein Adjustments-Bedienfeld mit Korrekturumschaltern und die kollokierten Δh-Histogramme. Die tatsächliche Plattenbewegungsverschiebung ist im Szenenmaßstab unterpixelig, sodass sich die Punktwolken nicht sichtbar bewegen — der Effekt wird aus dem Δh-Bedienfeld abgelesen, nicht aus einer übertriebenen Visualisierung. Bedienfelder lassen sich einklappen und schließen.

Die UI kommuniziert mit einer transportneutralen API (api.py), die auf zwei Arten bereitgestellt wird: die /api/*-Routen auf localhost für den Browser und MCP-Tools mit visibility:["app"], die der Host für die Inline-App bereitstellt. scripts/e2e_apps.py prüft die MCP-App-Anbindung.

Architektur

Der ATL03-Pfad öffnet zur Abfragezeit kein HDF5. Pro Granule zeichnet eine Indexerstellung (index.py) den Bytebereich jedes Chunks, die Filter-Pipeline und die H3-Zellen auf, die der Chunk berührt. Abfragen führen eine Bounding-Box bzw. ein Polygon auf Zellen zurück, holen nur die benötigten Chunks per HTTPS-Bereichsanfrage (EDL-Bearer-Token → vorab signierte URL), dekodieren sie ohne HDF5-Bibliothek und materialisieren die Photonen in einen Hive-partitionierten Parquet-See (lake.py) mit Herkunft pro Zeile und koregistrierten Koordinaten. DuckDB beantwortet Abfragen über den See (api.py); eine Abdeckungstabelle zeichnet auf, was materialisiert ist, sodass wiederholte Abfragen nichts abrufen. Der frühere Pfad earthaccess.open + h5py bleibt für Vergleichszwecke als atl03.extract_legacy erhalten. scripts/bench_access.py vergleicht die Zugriffsmethoden; siehe die Spezifikation (Anhang C) für das Vorgehen.

Die Szenengeometrie ist breitengradbewusst (scene.frame_crs): In der Nähe der Pole polarstereografisch, sonst eine szenenspezifische azimutal-äquidistante Projektion, sodass Szenen überall auf der Erde gerendert werden können.

DEM und Bildmaterial

Die Szenenoberfläche ist ein reales, je nach Region gewähltes DEM, immer auf WGS84-Ellipsoidhöhen (dieselbe vertikale Referenz wie ATL03), fensterweise über /vsicurl/ gelesen und zwischengespeichert: ArcticDEM v4.1 (Arktis, EPSG:3413) und REMA v2.0 (Antarktis, EPSG:3031) — beide bereits ellipsoidisch — und andernorts Copernicus GLO-30, dessen EGM2008-orthometrische Höhen durch Addition der NGA-egm08-Geoidundulation in ellipsoidische Höhen umgerechnet werden (h = H + N). Es gibt keinen Rückgriff auf Photoneninterpolation: Eine Szene zeigt ein DEM nur dort, wo ein solches sie abdeckt. Als Szenenbild dient Sentinel-2 cloudless (EOX, CC BY-NC-SA 4.0), das auf die Oberfläche gelegt wird. Die Globus-Basiskarte von Explore/Lake ist Natural Earth 50 m land (Public Domain). Quellenangaben erscheinen auf dem Bildschirm.

Skripte

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

Daten (data/) sind gitignored; löschen Sie sie, um einen erneuten Abruf zu erzwingen.

Wie Δh gemessen wird

Für jeden GLAS-Schuss stammt die ICESat-2-Oberflächenhöhe im Zentrum des Footprints aus einem lokalen linearen Fit entlang der Bahn über die Signalphotonen innerhalb des Kollokationsradius. Ein photometrischer Fit ist eine Ordnungsstatistik und kann den Subzentimeter-Steigungseffekt nicht auflösen; der Fit ist stetig in der Position, daher kann er es. Nur die entlang des Strahls wirkende Komponente der Plattenbewegungsverschiebung ist bei einem einzelnen Strahl beobachtbar, und das Artefakt-Bedienfeld pro Paar hält den vertikalen Anteil des Rahmensprungs im mm-Bereich getrennt vom Steigungseffekt. Jede Antwort enthält die Liste unresolved und besagt „Plattenbewegung angewendet", niemals „die Missionen stimmen überein".

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