Prototipo · Versión preliminar: todos los servidores del registro oficial, sincronizados cada 30 minutos. Inicia sesión con Google para escribir reseñas.Prototipo · se actualiza cada 30 min
PopNx MCPServidores MCP para quienes usan IA · en palabras sencillas

Umbra open SAR archive

de reesehammerversión 0.1.4i★ 2iComputadora o nube
Nombre en el registroio.github.reesehammer/umbra-mcp

Cómo instalar

What it does

Search, preview, and measure Umbra open SAR from any MCP client. Umbra ships no search API.

  • Connects Computadora o nube
  • Account or key Cloud: No key needed · Local: Needs UMBRA_CANOPY_TOKEN, ANTHROPIC_API_KEY, OPENAI_API_KEY
  • Category Búsqueda y memoria de IA

Instalación

Elige la app de IA que usas y copia la configuración.

Pasó 5/5 revisiones · Lo que preguntas pasa por el servidor del autor (api.umbra-py.space) · ✓ Comandos revisados el 13 nov 2026

Primero: ¿qué IA usas?

Elige tu app y los pasos aparecen abajo.

Funciona con Claude · unos 2 min

Sin clave y sin instalar nada · Configúralo una vez en claude.ai o en la app de escritorio y úsalo en el chat · las cuentas gratis pueden añadir 1 · en Team/Enterprise lo añade un Owner

  1. Abre la página Connectors de Claude

    CustomizeConnectors

    CustomizeConnectors1+ Add2https://…3Add4
  2. Pulsa “+ Add” → “Add custom connector” y completa estos 2 campos

    Copia cada valor al campo con el mismo nombre en Claude y pulsa Continue

    Name · NombreUmbra open SAR archive
    Remote MCP server URL · Direcciónhttps://api.umbra-py.space/mcp

    Deja Authentication como lo detectó Claude y pulsa Add

  3. Actívalo en un chat

    +ConnectorsUmbra open SAR archive

  4. Pruébalo

    Usa Umbra open SAR archive y dime qué puedes hacer por mí; luego muéstrame una cosa

    ✓ Si Claude dice que está usando Umbra open SAR archive o muestra una herramienta de Umbra open SAR archive en la respuesta, ya está conectado

Nombres de menú comprobados con la ayuda de Anthropic el 11 nov 2026 · tu pantalla puede variar un poco según la versión

Funciona con ChatGPT según tu plan

MCP completo: ChatGPT Business, Enterprise o Edu en la web · Pro: conecta con permisos de lectura/obtención, así que las herramientas que cambian datos pueden no funcionar · Plus: no confirmado en la documentación; si ves una opción para añadir MCP propio en la página de plugins puedes probar · solo web

  1. Abre la página para añadir MCP en ChatGPT web

    Plugins+Add custom MCP server

    ChatGPTPlugins1+2https://…3Create4
  2. Escribe el nombre y la dirección

    Pon un nombre, pega la dirección en Connection, marca el aviso de riesgo y pulsa Create as a plugin

    Name · NombreUmbra open SAR archive
    Connection · Direcciónhttps://api.umbra-py.space/mcp
  3. Elige Umbra open SAR archive en un chat

    Abre un chat nuevo y elige Umbra open SAR archive en tus plugins antes de escribir

  4. Pruébalo

    Usa Umbra open SAR archive y dime qué puedes hacer por mí; luego muéstrame una cosa

    ✓ Si ChatGPT dice que está usando Umbra open SAR archive o muestra una herramienta de Umbra open SAR archive en la respuesta, ya está conectado

Nombres de menú comprobados con la ayuda de OpenAI el 11 nov 2026 · tu pantalla puede variar un poco según la versión

Funciona con Claude Code · unos 2 min

Sin clave y sin instalar nada

  1. Abre la Terminal

    Mac: pulsa Command+Espacio y escribe Terminal · Windows: abre PowerShell

  2. Pega este comando y pulsa Enter

    claude mcp add --transport http --scope user umbra https://api.umbra-py.space/mcp
  3. Escribe /mcp en Claude Code

    Deberías ver Umbra open SAR archive en la lista como conectado

  4. Pruébalo

    Usa Umbra open SAR archive y dime qué puedes hacer por mí; luego muéstrame una cosa

    ✓ Si Claude Code dice que está usando Umbra open SAR archive o muestra una herramienta de Umbra open SAR archive en la respuesta, ya está conectado

Nombres de menú comprobados con la ayuda de Anthropic el 11 nov 2026 · tu pantalla puede variar un poco según la versión

Funciona con Cursor · unos 2 min

Sin clave y sin instalar nada

  1. Pulsa este botón para abrir Cursor

    Abrir en Cursor

    Cursor te pedirá confirmar; pulsa Install

  2. Abre el chat de IA de Cursor en modo Agent

  3. Pruébalo

    Usa Umbra open SAR archive y dime qué puedes hacer por mí; luego muéstrame una cosa

    ✓ Si Cursor dice que está usando Umbra open SAR archive o muestra una herramienta de Umbra open SAR archive en la respuesta, ya está conectado

Nombres de menú comprobados con la ayuda de Cursor el 11 nov 2026 · tu pantalla puede variar un poco según la versión

Funciona con VS Code · unos 2 min

Sin clave y sin instalar nada

  1. Pulsa este botón para abrir VS Code

    Abrir en VS Code

    VS Code te pedirá confirmar; pulsa Install

  2. Abre el chat de IA de VS Code en modo Agent

  3. Pruébalo

    Usa Umbra open SAR archive y dime qué puedes hacer por mí; luego muéstrame una cosa

    ✓ Si VS Code dice que está usando Umbra open SAR archive o muestra una herramienta de Umbra open SAR archive en la respuesta, ya está conectado

Nombres de menú comprobados con la ayuda de VS Code el 11 nov 2026 · tu pantalla puede variar un poco según la versión

Otras apps que usan MCP, como Windsurf, Zed o Gemini CLI, añaden servidores de forma distinta. Míralo en la lista de apps

Ver todas las apps que usan MCP →

Dirección para apps que se conectan por la web

Direcciónhttps://api.umbra-py.space/mcp

La configuración JSON está en “Para desarrolladores”, abajo

¿Te atascaste? Pregunta a quien usa Umbra open SAR archive💬 Conversación →
Para desarrolladores: comandos de Terminal y configuración JSON

Por la web

Claude Code

claude mcp add --transport http --scope user umbra https://api.umbra-py.space/mcp

Cursor (~/.cursor/mcp.json)

{
  "mcpServers": {
    "umbra": {
      "url": "https://api.umbra-py.space/mcp"
    }
  }
}

VS Code (mcp.json)

{
  "servers": {
    "umbra": {
      "type": "http",
      "url": "https://api.umbra-py.space/mcp"
    }
  }
}

Instalado en tu computadora

Claude Code

claude mcp add --scope user umbra --env UMBRA_CANOPY_TOKEN=your-value --env UMBRA_INDEX_DB=your-value --env ANTHROPIC_API_KEY=your-value --env OPENAI_API_KEY=your-value -- uvx umbra-py

Claude Desktop (claude_desktop_config.json)

{
  "mcpServers": {
    "umbra": {
      "command": "uvx",
      "args": [
        "umbra-py"
      ],
      "env": {
        "UMBRA_CANOPY_TOKEN": "your-value",
        "UMBRA_INDEX_DB": "your-value",
        "ANTHROPIC_API_KEY": "your-value",
        "OPENAI_API_KEY": "your-value"
      }
    }
  }
}

Cursor (~/.cursor/mcp.json)

{
  "mcpServers": {
    "umbra": {
      "command": "uvx",
      "args": [
        "umbra-py"
      ],
      "env": {
        "UMBRA_CANOPY_TOKEN": "your-value",
        "UMBRA_INDEX_DB": "your-value",
        "ANTHROPIC_API_KEY": "your-value",
        "OPENAI_API_KEY": "your-value"
      }
    }
  }
}

VS Code (mcp.json)

{
  "servers": {
    "umbra": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "umbra-py"
      ],
      "env": {
        "UMBRA_CANOPY_TOKEN": "your-value",
        "UMBRA_INDEX_DB": "your-value",
        "ANTHROPIC_API_KEY": "your-value",
        "OPENAI_API_KEY": "your-value"
      }
    }
  }
}

Valores que debes completar

  • UMBRA_CANOPY_TOKEN secreto env
    Canopy API token. Set it and the same search tools query Umbra's authenticated commercial archive instead of the open bucket; leave it unset for the open data, which needs no credentials.
  • UMBRA_INDEX_DB env
    Path to a local catalog index (built with 'umbra index build' or fetched with 'umbra index fetch'). Without one the server walks the public bucket per search, which is correct but slow.
  • ANTHROPIC_API_KEY secreto env
    Optional. With a key, describe_scene and narrate_change call a vision model on the server. Without one they return a reading kit (picture + SAR primer) so the client's own model does the reading. A p…
  • OPENAI_API_KEY secreto env
    Alternative provider for the same two model tools, and the encoder behind find_similar_text.

Esta configuración se genera a partir de la ficha del creador en el registro. Si el README dice otra cosa, sigue el README.

De un vistazo

Descargas por semanai
51/sem
Licenciai
Apache-2.0
Conexión
Computadora o nube
Transporte
stdio, streamable-http
Última versióni
0.1.4
Publicado en el registroi
27 oct 2026
Último cambio de códigoi
12 nov 2026
Creador
reesehammer
Paquetes
pypi: umbra-py
Estado en el registro
Activo

Qué apps pueden usarlo

Según cómo se conecta este servidor y la documentación de cada app, comprobado el 10 nov 2026.

Se conectan por internet en

ClaudeChatGPTGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatOpen WebUIRaycast

Se ejecutan en tu computadora en

ClaudeGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatRaycast

Todas las apps, con ventajas y desventajas →

Qué puede hacer

Nombres y descripciones de las herramientas tal como los informó el servidor el 12 nov 2026. Los escribió el creador, no nosotros; los mostramos como texto sin formato.

  • search_catalog

    Search Umbra's catalog and return compact context cards. Filters (all optional, combine freely): ``bbox`` as ``[min_lon, min_lat, max_lon, max_lat]`` in WGS84 degrees; ``intersects`` as a GeoJSON object (a ``Point``, ``Polygon``, or ``MultiPolygon``, or a ``Feature`` / ``FeatureC

  • find_repeat_sites

    Rank sites imaged more than once, before a change tool is pointed at one. Use this when the site is not already known. Each site's ``hrefs`` are that site's STAC URLs, oldest first, ready for ``pick_change_interval``, ``change_composite``, or ``stack_stats``. Prefer this, or ``se

  • get_item

    Return the full context card for one item. ``url`` is the JSON URL of an open-data STAC sidecar, a GEC/SICD (or other product) filename such as ``2025-05-17-17-43-46_UMBRA-08_GEC.tif``, or the acquisition stem ``2025-05-17-17-43-46_UMBRA-08``. A filename or stem is resolved throu

  • geocode_place

    Resolve a free-text place name to a bounding box via Nominatim. Returns ``{"bbox": [min_lon, min_lat, max_lon, max_lat], "display_name": ...}`` so the agent can inspect the box before searching, or pass it straight to ``search_catalog``'s ``bbox``.

  • index_stats

    Report on the local catalog index, if one has been built or fetched. Lets a long-running agent decide whether searches will be instant (index present) or pay a live S3 walk, and how stale the snapshot is. ``end`` is the newest acquisition that is not ``datetime_suspect``. ``datet

  • quicklook

    Return a scene's quicklook PNG as an image block. Prefers a baked catalog preview (``preview="auto"``, the default) so a public host can show the radar scene without proxying Umbra COGs. **A baked preview is typically 512 px** (the published weekly sidecar). ``max_size`` applies

  • change_composite

    Composite 2-3 passes of one site into a change image. Pass the STAC URLs of two or three acquisitions of the *same* site in time order. Colors encode change: bright green = signal appeared after the first date, magenta = signal vanished, grey = unchanged. Refuses to mix polarizat

  • timescan

    Summarize a whole time series into one activity image. Pass the STAC URLs of a site's passes; the timescan encodes per-pixel temporal statistics so bright/colored areas are *where activity happened* over the series. Returns the image block plus attribution.

  • stack_stats

    Measure how much a site changed across its passes, as numbers. The quantitative counterpart to ``change_composite`` / ``timescan``: those return a picture of *where* change is, this returns the *how much*. Pass the STAC URLs of a site's passes (2 or more, any order); they are co-

  • stack_provenance

    Check whether a site's passes are one measurement, before measuring them. ``stack_stats`` refuses a selection whose rasters were made by *different* ``umbra convert`` settings — a calibrated pass differenced against an uncalibrated one puts the difference between two conversions

  • pick_change_interval

    Scan a site's whole series and name the two passes worth narrating. The deterministic first half of the "watch a site over time" story, and the step that turns a wall of passes into an answer. Given the STAC URLs of a site's passes (2 or more, any order), it co-registers them int

  • download_asset

    Download one asset of an item to local disk, gated by a size check. SAR products can be multiple GB, so this is a two-step handshake: call it first with ``confirm=False`` (the default) to get the byte size without downloading, then again with ``confirm=True`` to fetch it. On a lo

  • watch_site

    Report only the acquisitions **new** since the last check of this site. SAR's value for monitoring is its cadence, so the natural workflow is *standing*: run the same search each time and act only on what changed. This tool packages that idempotent delta — call it in one turn, co

  • find_similar

    Find archived scenes that **look like** the acquisition at ``url``. This is the one search that lives in the pixels, not the metadata: where ``search_catalog`` filters by date/bbox/task-name, this renders the query item's quicklook, embeds it, and ranks the pre-embedded scene ind

  • find_similar_text

    Find archived scenes matching a plain-language ``query`` over their imagery. Text-to-scene search: embeds ``query`` ("ships at a berth", "a flooded field") and ranks the stored *image* vectors by cosine similarity. It only works when the index was built and this query is embedded

  • describe_scene

    Return a SAR-literate reading of the scene at ``url``. The picture and the metadata card are produced deterministically; a model only interprets them. How that model is reached depends on whether this process holds a vision key: - **No key** (the public community host): this tool

  • narrate_change

    Return a grounded reading of *what changed* between passes. Sibling of :func:`describe_scene`. The composite and the per-block dB grid are produced deterministically; a model only narrates change those numbers support. Pass the STAC URLs in time order; mixed polarizations are ref

  • stamp_description

    Validate a client-produced scene reading and stamp provenance. This is the interpretation boundary for the no-key kit path: you read the picture ``describe_scene`` returned, produce ``{summary, observed_features, confidence, caveats}``, and pass it here. The library checks the sh

  • stamp_narration

    Validate a client-produced change narration and stamp provenance. Sibling of :func:`stamp_description` for the no-key ``narrate_change`` kit. Pass the JSON you produced plus the ``change_stats`` grid from the kit so the stamped object carries the numbers the prose was grounded in

Revisiones básicasi

Revisamos información que cualquiera puede ver; no hemos leído el código. Las revisiones que no aplican no se cuentan. · Revisado el 13 nov 2026

  • ✓ Superada

    El creador coincide con el repo

    El nombre en el registro se verificó con la cuenta de GitHub reesehammer, dueña del repo

  • ✓ Superada

    Sigue en mantenimiento

    Último cambio de código: ayer

  • ✓ Superada

    Tiene licencia

    Usa Apache-2.0

  • ✓ Superada

    El endpoint responde

    Respondió en 185 ms (HTTP 200)

  • – No aplica

    Inicio de sesión con OAuth

    No hace falta iniciar sesión

  • ✓ Superada

    Sin instrucciones ocultas en las descripciones de herramientas

    Leímos 19 descripciones de herramientas y no encontramos instrucciones ocultas para la IA

Conversación

Pregunta, comparte un consejo o avisa de que no funciona. Ordenado por lo que la gente marcó como útil.

Aún no hay publicaciones. Sé la primera persona en preguntar o compartir.

Lo publicado aquí lo escriben usuarios, no el equipo de PopNx.

Inicia sesión con Google para publicar

Reseñas de usuarios

Aún no hay reseñas

Inicia sesión con Google para escribir una reseña

Comparado con otros en Búsqueda y memoria de IAi

  • Más estrellas que el 82% de los otros 6020 servidores de esta categoría
  • Publicado en el registro más recientemente que el 68% de los otros 6020 servidores de esta categoría
  • Revisiones básicas iguales o mejores que el 100% de los otros 6020 servidores de esta categoría

Comparado con todos los servidores activos de esta categoría en el registro. Las estrellas solo cuentan cuando quien lo publica es dueño del repo.

Preguntas frecuentes

¿Es seguro Umbra open SAR archive?

Superó 5 de 5 revisiones básicas aplicables. No hemos leído el código. Antes de agregar una clave o un token, revisa qué acceso pide el servidor y usa una clave que tenga solo los permisos que necesitas.

¿Qué claves o códigos necesita?

Debes completar: UMBRA_CANOPY_TOKEN, ANTHROPIC_API_KEY, OPENAI_API_KEY

¿Se ejecuta en mi computadora o en la nube?

Funciona de las dos formas: instálalo en tu computadora o conéctate a la versión en la nube.

¿Sigue en mantenimiento?

El repo de GitHub cambió por última vez ayer, y la última versión (0.1.4) llegó al registro hace 17 días.

¿Qué apps pueden usarlo?

Las apps compatibles con MCP, como Claude Desktop, Claude Code, Cursor y VS Code. Se conecta por URL, así que también sirve en apps que aceptan MCP remoto, como ChatGPT en la web (MCP completo en Business y superiores; Pro solo lectura).

¿Qué puedo usar en su lugar?

En la misma categoría: Context7, Codebase Memory, Ruflo

Otros de la misma categoría

Servidores de la misma categoría hechos por otros creadores, ordenados por estrellas.

Cómo leer una tarjeta:↓ Descargas por semanai★ Estrellas de GitHubiTres pilares: reseñas · revisiones · usoiActualizado = fecha en que se publicó la última versión en el registroi

Context7

Up-to-date docs for AI agents

de upstashMuy usado↓ 1,2 M/sem★ 64,7 milActualizado ayer

Computadora o nube

Codebase Memory

Codebase knowledge graph for AI agents — 162 languages, sub-ms queries, 99% fewer tokens.

de DeusDataMuy usado↓ 16,8 mil/sem★ 48,6 milActualizado hace 27 días

Se ejecuta en tu computadora

Ruflo

Agent teams, swarms, memory and hooks for Claude Code and Codex, served over MCP.

de ruvnetMuy usado↓ 74,3 mil/sem★ 81,6 mil Estrellas de todo el repositorioActualizado anteayer

Se ejecuta en tu computadora

README del creador

Abrir el README

Copiado tal cual del repo del creador. PopNx MCP no lo ha revisado ni lo respalda. Se quitaron HTML, imágenes y scripts. Los enlaces llevan fuera de este sitio.

umbra-py

Search, preview, load, and convert [Umbra](https://umbra.space/open-data/) open SAR data.

Umbra publishes 16–25 cm SAR as CC BY 4.0 open data, but no search API — only a 17+ TB S3 bucket and a static STAC tree. umbra-py is that layer: search, preview, download, and analysis-ready arrays without the usual 500 lines of glue. A community STAC API (umbra serve) and MCP server sit on the same host, so pystac-client and Claude can query the archive with nothing installed.

📖 Docs: umbra-py.space · Showcase: browse the archive in the browser (no install) · Already listing the bucket? Replace your crawler (HTTP, pystac-client, or DuckDB over the weekly Parquet)

Status: v0.1.4. Discovery, download, xarray loading,

SICD → geocoded COG, change/timescan composites, chips, a STAC API

(umbra serve, with a community host), and an MCP server all ship. This is

not an InSAR toolbox (phase is not preserved through convert). Not

affiliated with Umbra Lab, Inc.

Hosted API (api.umbra-py.space): best-effort 99% monthly uptime, no SLA, 120 requests/minute, page size 10,000. Limits, CORS, and the parquet fallback.

Install

pip install umbra-py              # core: search + download + metadata

pip install "umbra-py[load]" # + xarray / rasterio pip install "umbra-py[viz]" # + quicklooks, maps, galleries pip install "umbra-py[convert]" # + SICD → geocoded COG pip install "umbra-py[all]" # convert + load + viz + export

Python 3.10+. Other extras (dask, serve, mcp, ai, langchain, llamaindex) are listed in the install guide.

Five minutes to a scene

Fetch the weekly catalog snapshot, then search and preview offline. A live walk of the bucket (umbra search without --local) works but is slow.

pip install "umbra-py[viz,load]"

umbra index fetch umbra search --local --area Centerfield --product GEC --limit 3 umbra gallery --local --area Centerfield --limit 6 --out gallery.html --db

from umbra_py import CatalogIndex, to_xarray

with CatalogIndex.from_release() as index: item = next(iter(index.search(area="Centerfield", product_types=["GEC"], limit=1)))

Stream a downsampled window over HTTP — no multi-GB download. Needs [load].

da = to_xarray(item, max_size=1024, db=True) print(item.summary())

If the snapshot is missing, the same search against the live bucket is UmbraCatalog().search(...) / umbra search --area Centerfield.

What you can do

More detail, options, and caveats live in the docs.

Search by bbox, place name, polygon, or Umbra task (area=). --local reads the snapshot; omit it to walk S3.

from umbra_py import UmbraCatalog

for item in UmbraCatalog().search(area="Centerfield", product_types=["GEC"], limit=5): print(item.summary())

Preview without downloading the scene: umbra gallery, umbra quicklook --out scene.png --db, umbra view (full-res tiles), or umbra change --area Centerfield --out change.png.

Load a geocoded GEC into xarray or a GeoTIFF (to_xarray, to_geotiff, to_stack). Needs [load].

Convert a SICD to a north-up amplitude COG (sicd_to_geocoded_cog, umbra convert) — phase is discarded. Needs [convert]. Open products generally have no radiometric metadata, so --calibrate / --noise-model measured refuse rather than invent numbers. See limitations and the complex-product handoff.

Chip scenes into georeferenced ML tiles for SR / ATR-style benchmarks from open Umbra GEC/SICD: umbra chips --area Centerfield --out chips/. See the ISR training-set cookbook and Used in research.

Drive it from an agent. Copy-paste recipes for Claude Desktop and Claude Code: Connect Claude (MCP).

Zero-install remote MCP (no uvx):

# Claude Code

claude mcp add --transport http umbra https://api.umbra-py.space/mcp --scope user

{

"mcpServers": { "umbra": { "url": "https://api.umbra-py.space/mcp" } } }

Paste that JSON into Claude Desktop (claude_desktop_config.json). Claude Code needs "type": "http" on the same URL — see the MCP page.

Local stdio (server on your machine):

uvx --from 'umbra-py[mcp]' umbra-mcp
{

"mcpServers": { "umbra": { "command": "uvx", "args": ["--from", "umbra-py[mcp]", "umbra-mcp"] } } }

That command is published to the MCP registry as io.github.reesehammer/umbra-mcp. STAC for pystac-client / QGIS is https://api.umbra-py.space/ (not /mcp). docker compose -f deploy/docker-compose.yml up is the one-command self-host.

What the data looks like

AssetWhat it isUse it for
GECGeocoded cloud-optimized GeoTIFFMap-ready imagery. Start here.
CSIColor sub-aperture GeoTIFFQuick-look RGB, not a measurement
SIDDGeocoded detected image (NITF)Detected imagery in a standard format
SICDComplex slant-plane image (NITF). Open archive: RGAZIM/PFA.Phase-preserving downstream. Download; do not convert.
CPHDCompensated phase historyCustom formation *outside* umbra-py (download; do not convert). Not an image.

umbra-py downloads SICD/CPHD. umbra convert geocodes a SICD to amplitude and discards phase. It does not form interferograms or compute coherence. For a processor that needs the complex pixels, see Complex products (SICD/CPHD).

Data license & attribution

Umbra's imagery is CC BY 4.0. If you use or redistribute the data or derived products you must attribute Umbra. The copyright notice Umbra's terms require is quoted under Citing umbra-py. umbra-py also stamps this shorter line on its own outputs:

Contains Umbra open data, licensed under CC BY 4.0.

umbra-py itself is Apache 2.0 (LICENSE). The two licenses are independent and compatible.

Citing umbra-py

Cite all versions with the concept DOI 10.5281/zenodo.23676715 (Zenodo's Cite all versions? value). It resolves to the latest archived release. The v0.1.4 version DOI is 10.5281/zenodo.23676716. Machine-readable metadata lives in CITATION.cff (GitHub's Cite this repository button) and .zenodo.json (what Zenodo archives).

@software{hammerstrom2026umbrapy,

author = {Hammerstrom, Reese}, title = {umbra-py}, year = {2026}, version = {0.1.4}, doi = {10.5281/zenodo.23676715}, url = {https://github.com/reesehammer/umbra-py}, license = {Apache-2.0} }

Imagery is © Umbra Space, licensed CC BY 4.0. Umbra's terms require this copyright notice on or adjacent to adapted materials, with [YEAR] the year the image was first created:

SAR-derived data © [YEAR] Umbra Lab, Inc.

Also credit Umbra, link the license, and say if you changed the data. The open-data program is umbra.space/open-data.

Repo layout

PathRole
src/umbra_py/Package source
docs/Published user manual (mkdocs → umbra-py.space)
docs/schemas/Public JSON contracts (also in the wheel)
.github/TODO.mdMaintainer ledger of scoped-out follow-ups
deploy/Dockerfiles, docker-compose.yml, entrypoint
railway.tomlRailway Config-as-Code (dockerfilePath → deploy/Dockerfile.mcp)

Self-host: docker compose -f deploy/docker-compose.yml up (build context stays the repo root). More in docs/README.md and the deploy guide.

Community

Acknowledgements

Built on the SAR open-source community, including sarpy and Umbra's open data program. Not affiliated with or endorsed by Umbra Lab, Inc.