aicesat
aicesat — altimetría entre misiones
Un servidor MCP para Claude Desktop que obtiene fotones reales de ICESat-2 ATL03 y disparos de ICESat/GLAS GLAH06 sobre un área elegida, los representa como una nube de puntos 3D (deck.gl) y, mediante un conmutador, aplica un corregistro ITRF2014 + época (movimiento de placas, ITRF2014-PMM / NOAM) con pyproj, actualizando las estadísticas de Δh colocalizadas. Surgió a partir de docs/cross-mission-altimetry-mcp-spec.md, que contiene el diseño completo y la justificación.
El corregistro elimina el movimiento de placas entre épocas. No elimina el flujo de hielo, el GIA, el geoide/marea, la compactación del firn ni el datum vertical, y el widget lo indica en cada respuesta. Las alturas de GLAS se convierten de TOPEX/Poseidon → elipsoide WGS84 mediante d_deltaEllip del producto, con la corrección de saturación d_satElevCorr aplicada; eso queda registrado en cada bloque de comparabilidad.
Configuración
uv sync # Python 3.13
uv run pytest # offline unit testsInicio de sesión de Earthdata: se lee un token de portador de ~/.edl/token.prod (se puede sustituir con AICESAT_EDL_FILE o definir EARTHDATA_TOKEN). El servidor nunca escribe en stdout (transporte MCP stdio); los registros van a stderr.
Related MCP server: pointcloud-mcp
Claude Desktop
Añade a ~/Library/Application Support/Claude/claude_desktop_config.json, usando la ruta absoluta a tu clon del repositorio:
{
"mcpServers": {
"aicesat": {
"command": "/opt/homebrew/bin/uv",
"args": ["--directory", "/ABSOLUTE/PATH/TO/aicesat", "run", "aicesat-server"]
}
}
}Reinicia Claude Desktop. La interfaz unificada se muestra en línea como una aplicación MCP; el servidor también la sirve en http://127.0.0.1:8765/ (puerto mediante AICESAT_PORT) para usarla en un navegador.
Herramientas: open_ui, list_regions, list_scenes, check_coverage, show_photons (región, bbox o polígono), add_glas, coregister, lake_status, lake_load_cells, job_status.
UI
Una página autocontenida (construida a partir de src/aicesat/ui/* + deck.gl / h3-js incluidos por scripts/build_ui.py, Python puro; el servidor la reconstruye al iniciarse cuando cambian las fuentes), servida tanto en línea en Claude Desktop como en /:
Explore — un globo terráqueo 3D (mapa base Natural Earth, sin proyección plana). Navega a cualquier lugar, dibuja un cuadro o polígono, comprueba la cobertura y crea una escena como trabajo en segundo plano; las huellas de las escenas y las celdas H3 cargadas se muestran en el globo.
Lake — el almacén Parquet persistente como cuadrícula H3: estadísticas por celda al pasar el cursor, un límite de almacenamiento que expulsa automáticamente las celdas usadas menos recientemente y la carga o expulsión en segundo plano de celdas seleccionadas.
Scene — el visor 3D: puntos de ICESat-2 y GLAS superpuestos sobre un DEM, un panel Adjustments de conmutadores de corrección y los histogramas de Δh colocalizados. El desplazamiento real del movimiento de placas es subpíxel a la escala de la escena, por lo que las nubes no se mueven visiblemente: el efecto se lee en el panel de Δh, no en un visual exagerado. Los paneles se contraen y se cierran.
La interfaz se comunica con una API independiente del transporte (api.py) expuesta de dos maneras: las rutas /api/* de localhost para el navegador y las herramientas MCP visibility:["app"] que el host utiliza como proxy para la aplicación integrada. scripts/e2e_apps.py comprueba el cableado MCP-App.
Arquitectura
La ruta ATL03 no abre HDF5 en el momento de la consulta. Por cada gránulo, una construcción de índice (index.py) registra el rango de bytes de cada fragmento, la canalización de filtros y las celdas H3 que toca. Las consultas resuelven un bbox/polígono a celdas, obtienen solo los fragmentos necesarios mediante solicitudes de rango por HTTPS (token de portador EDL → URL prefirmada), los decodifican sin una biblioteca HDF5 y materializan los fotones en un almacén Parquet particionado por Hive (lake.py) con procedencia por fila y coordenadas corregistradas. DuckDB responde sobre el almacén (api.py); una tabla de cobertura registra lo materializado para que las consultas repetidas no obtengan nada. La ruta anterior earthaccess.open + h5py se conserva como atl03.extract_legacy para comparación. scripts/bench_access.py compara los métodos de acceso; véase la especificación (Apéndice C) para el enfoque.
La geometría de la escena tiene en cuenta la latitud (scene.frame_crs): proyección estereográfica polar cerca de los polos y una proyección acimutal equidistante por escena en el resto, de modo que las escenas se renderizan en cualquier lugar de la Tierra.
DEM e imágenes
La superficie de la escena es un DEM real elegido por región, siempre en alturas del elipsoide WGS84 (la misma referencia vertical que ATL03), leído por ventanas mediante /vsicurl/ y almacenado en caché: ArcticDEM v4.1 (Ártico, EPSG:3413) y REMA v2.0 (Antártico, EPSG:3031) — ambos ya elipsoidales — y Copernicus GLO-30 en el resto, cuyas alturas ortométricas EGM2008 se convierten a elipsoidales añadiendo la ondulación del geoide NGA egm08 (h = H + N). No hay respaldo por interpolación de fotones: una escena muestra un DEM únicamente donde hay un DEM que la cubre. Las imágenes de la escena son Sentinel-2 cloudless (EOX, CC BY-NC-SA 4.0), superpuestas sobre la superficie. El mapa base del globo de Explore/Lake es la capa de tierra de Natural Earth 50 m (dominio público). Los créditos aparecen en pantalla.
Scripts
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 comparisonLos datos (data/) están ignorados por git; elimínalos para forzar una nueva descarga.
Cómo se mide Δh
Para cada disparo de GLAS, la altura de la superficie de ICESat-2 en el centro de la huella proviene de un ajuste lineal local a lo largo de la traza de los fotones de señal dentro del radio de colocalización. Una mediana de disco es un estadístico de orden y no puede resolver el efecto de pendiente subcentimétrico; el ajuste es continuo en la posición, por lo que sí puede. Solo la componente a lo largo del haz del desplazamiento por movimiento de placas es observable en un único haz, y el panel de artefactos por par mantiene separada la parte vertical milimétrica del salto de marco del efecto de pendiente. Cada respuesta lleva la lista unresolved y afirma "movimiento de placas aplicado", nunca "las misiones coinciden".
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