trackmcp
Back to directory
datalayer

earthdata-mcp-server

View on GitHub

๐ŸŒŽ โœจ Earthdata MCP Server.

21 stars PythonAI & Machine Learning Updated Oct 6, 2025
aiearthearthdatamcpmcp-servernasanasa-apispatial

Documentation

Datalayer
Become a Sponsor

๐Ÿช โœจ Earthdata MCP Server

PyPI - Version
smithery badge
Unit Tests
Lint and Type Check

Earthdata MCP Server is a Model Context Protocol (MCP) server implementation that provides tools to interact with NASA Earth Data.

This server is intentionally Earthdata-only.

If you need notebook/runtime tools, compose this server with `jupyter-mcp-server` using mcp-compose.

Key Features

  • Dataset discovery on NASA Earthdata
  • Granule search with temporal and bounding box filters
  • Flexible download workflow with explicit execution modes

Getting Started

Local install

bash
pip install earthdata-mcp-server

Docker with Claude Desktop

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

Linux host networking

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

Tools

The server offers 3 Earthdata tools.

`search_earth_datasets`

  • Search for datasets on NASA Earthdata.
  • Input:
    • search_keywords (str): Keywords to search for in the dataset titles.
    • count (int): Number of datasets to return.
    • temporal (tuple): (Optional) Temporal range in the format (date_from, date_to).
    • bounding_box (tuple): (Optional) Bounding box in the format (lower_left_lon, lower_left_lat, upper_right_lon, upper_right_lat).
  • Returns: List of dataset abstracts.

`search_earth_datagranules`

  • Search for data granules on NASA Earthdata.
  • Input:
    • short_name (str): Short name of the dataset.
    • count (int): Number of data granules to return.
    • temporal (tuple): (Optional) Temporal range in the format (date_from, date_to).
    • bounding_box (tuple): (Optional) Bounding box in the format (lower_left_lon, lower_left_lat, upper_right_lon, upper_right_lat).
  • Returns: List of data granules.

`download_earth_data_granules`

  • Search and optionally download granules with explicit modes.
  • Authentication: Requires NASA Earthdata Login credentials (see authentication guide)
  • Input:
    • folder_name (str): Local folder name to save the data.
    • short_name (str): Short name of the Earth dataset to download.
    • count (int): Number of data granules to download.
    • temporal (tuple): (Optional) Temporal range in the format (date_from, date_to).
    • bounding_box (tuple): (Optional) Bounding box in the format (lower_left_lon, lower_left_lat, upper_right_lon, upper_right_lat).
    • mode (str): One of:
      • `manifest`: Returns granule metadata only.
      • `download`: Downloads files directly on server side.
      • `script`: Returns Python code to execute elsewhere.
    • max_manifest_items (int): Max items returned in `manifest` mode.

How download works

`download_earth_data_granules` always starts by searching for granules with your filters, then behaves based on `mode`:

1. `manifest`

    2. `download`

      3. `script`

        1. Use `mode="manifest"` first to inspect results safely.

        2. Use `mode="script"` when you want notebook-driven execution via `mcp-compose` + `jupyter-mcp-server`.

        3. Use `mode="download"` only when server-side file writes are intended.

        For a full composition example with `mcp-compose`, see download workflow docs.

        Prompts

        1. `download_analyze_global_sea_level`

          2. `sealevel_rise_dataset`

            3. `ask_datasets_format`

              Building

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

              If you prefer, you can pull the prebuilt images.

              bash
              make pull-docker

              Frequently asked questions

              What is earthdata-mcp-server?

              earthdata-mcp-server is ๐ŸŒŽ โœจ Earthdata MCP Server.

              How do I install earthdata-mcp-server?

              Open the GitHub repository and follow its README. Most MCP servers are added to your client's MCP config, then called by your agent.

              Is earthdata-mcp-server open source?

              Yes โ€” it is hosted on GitHub at https://github.com/datalayer/earthdata-mcp-server and has 21 stars.

              Related MCP tools

              Run your own MCP server? See who uses it and what to fix.

              Measure it with TrackMCP