Earthdata MCP Server

Interaja com dados terrestres da NASA para descoberta e recuperação eficiente de conjuntos de dados para análise geoespacial.

Documentação

Datalayer

Become a Sponsor

🪐 ✨ Earthdata MCP Server

PyPI - Version smithery badge Unit Tests Lint and Type Check

O Earthdata MCP Server é uma implementação de servidor Model Context Protocol (MCP) que fornece ferramentas para interagir com NASA Earth Data.

Este servidor é intencionalmente exclusivo para Earthdata.

Se você precisar de ferramentas de notebook/runtime, componha este servidor com jupyter-mcp-server usando mcp-compose.

Principais Recursos

  • Descoberta de datasets na NASA Earthdata
  • Busca de granules com filtros temporais e de bounding box
  • Fluxo de download flexível com modos de execução explícitos

Começando

Instalação local

pip install earthdata-mcp-server

Docker com Claude Desktop

{
  "mcpServers": {
    "earthdata": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "datalayer/earthdata-mcp-server:latest"
      ],
      "env": {
        "EARTHDATA_USERNAME": "your_username",
        "EARTHDATA_PASSWORD": "your_password"
      }
    }
  }
}

Rede do host Linux

{
  "mcpServers": {
    "earthdata": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "--network=host",
        "datalayer/earthdata-mcp-server:latest"
      ],
      "env": {
        "EARTHDATA_USERNAME": "your_username",
        "EARTHDATA_PASSWORD": "your_password"
      }
    }
  }
}

Ferramentas

O servidor oferece 3 ferramentas Earthdata.

search_earth_datasets

  • Busca por datasets na NASA Earthdata.
  • Entrada:
    • search_keywords (str): Palavras-chave para buscar nos títulos dos datasets.
    • count (int): Número de datasets a retornar.
    • temporal (tuple): (Opcional) Intervalo temporal no formato (date_from, date_to).
    • bounding_box (tuple): (Opcional) Bounding box no formato (lower_left_lon, lower_left_lat, upper_right_lon, upper_right_lat).
  • Retorna: Lista de resumos dos datasets.

search_earth_datagranules

  • Busca por granules de dados na NASA Earthdata.
  • Entrada:
    • short_name (str): Nome curto do dataset.
    • count (int): Número de granules de dados a retornar.
    • temporal (tuple): (Opcional) Intervalo temporal no formato (date_from, date_to).
    • bounding_box (tuple): (Opcional) Bounding box no formato (lower_left_lon, lower_left_lat, upper_right_lon, upper_right_lat).
  • Retorna: Lista de granules de dados.

download_earth_data_granules

  • Busca e opcionalmente baixa granules com modos explícitos.
  • Autenticação: Requer credenciais de login da NASA Earthdata (veja guia de autenticação)
  • Entrada:
    • folder_name (str): Nome da pasta local para salvar os dados.
    • short_name (str): Nome curto do dataset da Terra para baixar.
    • count (int): Número de granules de dados para baixar.
    • temporal (tuple): (Opcional) Intervalo temporal no formato (date_from, date_to).
    • bounding_box (tuple): (Opcional) Bounding box no formato (lower_left_lon, lower_left_lat, upper_right_lon, upper_right_lat).
    • mode (str): Um de:
      • manifest: Retorna apenas metadados dos granules.
      • download: Baixa arquivos diretamente no lado do servidor.
      • script: Retorna código Python para executar em outro lugar.
    • max_manifest_items (int): Número máximo de itens retornados no modo manifest.

Como funciona o download

download_earth_data_granules sempre começa buscando granules com seus filtros e então se comporta com base em mode:

  1. manifest
    • Retorna uma pré-visualização estruturada (items) com IDs, títulos e links.
    • Não grava arquivos.
    • Melhor primeiro passo para validar o escopo da consulta.
  2. download
    • Autentica com Earthdata usando credenciais de ambiente.
    • Baixa granules correspondentes diretamente para folder_name no runtime do servidor.
    • Retorna os caminhos dos arquivos baixados.
  3. script
    • Retorna código Python executável que realiza a mesma busca + download.
    • Melhor opção quando a execução deve ocorrer em um notebook/runtime controlado por outro servidor MCP.

Estratégia de download recomendada

  1. Use mode="manifest" primeiro para inspecionar os resultados com segurança.
  2. Use mode="script" quando quiser execução orientada por notebook via mcp-compose + jupyter-mcp-server.
  3. Use mode="download" somente quando a gravação de arquivos no lado do servidor for pretendida.

Para um exemplo completo de composição com mcp-compose, veja documentação do fluxo de download.

Prompts

  1. download_analyze_global_sea_level

    • Gera um fluxo de trabalho que começa com download_earth_data_granules no modo script.
    • Destinado a ser executado em uma pilha composta de notebook/runtime (via mcp-compose).
  2. sealevel_rise_dataset

    • Busca por datasets relacionados à elevação do nível do mar em todo o mundo.
    • Entrada:
      • start_year (int): Ano inicial a considerar.
      • end_year (int): Ano final a considerar.
    • Retorna: Prompt formatado corretamente.
  3. ask_datasets_format

    • Para perguntar sobre o formato dos datasets.
    • Retorna: Prompt formatado corretamente.

Compilação

# or run `docker build -t datalayer/earthdata-mcp-server .`
make build-docker

Se preferir, você pode baixar as imagens pré-construídas.

make pull-docker