aicesat
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 testsEarthdata 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 comparisonDaten (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".
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