Jupyter Earth Data

by datalayer

2 stars
Not rated
GitHub

About

Bridges Jupyter notebooks with Earth science data analysis by enabling direct NASA Earth Data granule downloads with temporal and geographic filtering capabilities.

Details

Author
datalayer
Repository
datalayer/jupyter-earth-mcp-server
GitHub stars
2
License
BSD 3-Clause "New" or "Revised" License
Categories
Developer Tools, Productivity, Design, AI, Search, Automation
Tags
#data-science

Setting up with Highlight

This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:

  1. Download and install Highlight from highlightai.com/download
  2. Navigate to the plugins tab and select "Add Custom Plugin"
  3. Configure the plugin with the settings below
    Plugin Name Jupyter Earth Data
    Command (node, npx, python, etc.) docker
    Arguments
    • Argument 1 run
    • Argument 2 -i
    • Argument 3 --rm
    • Argument 4 -e
    • Argument 5 SERVER_URL
    • Argument 6 -e
    • Argument 7 TOKEN
    • Argument 8 -e
    • Argument 9 NOTEBOOK_PATH
    • Argument 10 datalayer/jupyter-earth-mcp-server:latest
    Environment
    • TOKEN MY_TOKEN
    • SERVER_URL http://host.docker.internal:8888
    • NOTEBOOK_PATH notebook.ipynb

    Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.

  4. Enable "Start Automatically" if you want the plugin to start when Highlight launches

From the repository

{
  "mcpServers": {
    "jupyter-earth": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "SERVER_URL",
        "-e",
        "TOKEN",
        "-e",
        "NOTEBOOK_PATH",
        "datalayer/jupyter-earth-mcp-server:latest"
      ],
      "env": {
        "SERVER_URL": "http://host.docker.internal:8888",
        "TOKEN": "MY_TOKEN",
        "NOTEBOOK_PATH": "notebook.ipynb"
      }
    }
  }
}
CLAUDE_CONFIG=${HOME}/.config/Claude/claude_desktop_config.json
cat <<EOF > $CLAUDE_CONFIG
{
  "mcpServers": {
    "jupyter-earth": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "SERVER_URL",
        "-e",
        "TOKEN",
        "-e",
        "NOTEBOOK_PATH",
        "--network=host",
        "datalayer/jupyter-earth-mcp-server:latest"
      ],
      "env": {
        "SERVER_URL": "http://localhost:8888",
        "TOKEN": "MY_TOKEN",
        "NOTEBOOK_PATH": "notebook.ipynb"
      }
    }
  }
}
EOF
cat $CLAUDE_CONFIG

download_earth_data_granules

Download Earth data granules from NASA Earth Data. Parameters: folder_name (string), short_name (string), count (int), temporal (optional tuple), bounding_box (optional tuple)

The server currently offers 1 tool:

1. download_earth_data_granules

- Add a code cell in a Jupyter notebook to download Earth data granules from NASA Earth Data.
- Input:
- folder_name(string): Local folder name to save the data.
- short_name(string): 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).
- Returns: Cell output.

Claude Desktop / Cursor

Paste into your MCP client config file to install this server.

{
    "mcpServers": {
        "jupyter earth data": {
            "env": {
                "TOKEN": "MY_TOKEN",
                "SERVER_URL": "http://host.docker.internal:8888",
                "NOTEBOOK_PATH": "notebook.ipynb"
            },
            "args": [
                "run",
                "-i",
                "--rm",
                "-e",
                "SERVER_URL",
                "-e",
                "TOKEN",
                "-e",
                "NOTEBOOK_PATH",
                "datalayer/jupyter-earth-mcp-server:latest"
            ],
            "command": "docker"
        }
    }
}

Linux

{
    "env": {
        "TOKEN": "MY_TOKEN",
        "SERVER_URL": "http://localhost:8888",
        "NOTEBOOK_PATH": "notebook.ipynb"
    },
    "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "SERVER_URL",
        "-e",
        "TOKEN",
        "-e",
        "NOTEBOOK_PATH",
        "--network=host",
        "datalayer/jupyter-earth-mcp-server:latest"
    ],
    "command": "docker"
}

Macos

{
    "env": {
        "TOKEN": "MY_TOKEN",
        "SERVER_URL": "http://host.docker.internal:8888",
        "NOTEBOOK_PATH": "notebook.ipynb"
    },
    "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "SERVER_URL",
        "-e",
        "TOKEN",
        "-e",
        "NOTEBOOK_PATH",
        "datalayer/jupyter-earth-mcp-server:latest"
    ],
    "command": "docker"
}

Windows

{
    "env": {
        "TOKEN": "MY_TOKEN",
        "SERVER_URL": "http://host.docker.internal:8888",
        "NOTEBOOK_PATH": "notebook.ipynb"
    },
    "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "SERVER_URL",
        "-e",
        "TOKEN",
        "-e",
        "NOTEBOOK_PATH",
        "datalayer/jupyter-earth-mcp-server:latest"
    ],
    "command": "docker"
}

<!--
~ Copyright (c) 2023-2024 Datalayer, Inc.
~
~ BSD 3-Clause License
-->

> This repository is archived - Use https://github.com/datalayer/earthdata-mcp-server instead.

Datalayer

Become a Sponsor

🌎 ✨ Jupyter Earth MCP Server

Github Actions Status
PyPI - Version

🌍 Jupyter Earth MCP Server is a Model Context Protocol (MCP) server implementation that provides a set of tools for 🗺️ Geospatial analysis in 📓 Jupyter notebooks.

The following demo uses the Earthdata MCP server to search for datasets and data granules on NASA Earthdata, this MCP server to download the data in Jupyter and the jupyter-mcp-server to run further analysis.

<div>
<a href="https://www.loom.com/share/c2b5b05f548d4f1492d5c107f0c48dbc">
<p>Analyzing Sea Level Rise with AI-Powered Geospatial Tools and Jupyter - Watch Video</p>
</a>
<a href="https://www.loom.com/share/c2b5b05f548d4f1492d5c107f0c48dbc">

</a>
</div>

Start JupyterLab

Make sure you have the following installed. The collaboration package is needed as the modifications made on the notebook can be seen thanks to Jupyter Real Time Collaboration.

pip install jupyterlab==4.4.1 jupyter-collaboration==4.0.2 ipykernel
pip uninstall -y pycrdt datalayer_pycrdt
pip install datalayer_pycrdt==0.12.17

Then, start JupyterLab with the following command.

jupyter lab --port 8888 --IdentityProvider.token MY_TOKEN --ip 0.0.0.0

You can also run make jupyterlab.

> [!NOTE]
>
> The --ip is set to 0.0.0.0 to allow the MCP server running in a Docker container to access your local JupyterLab.

Use with Claude Desktop

Claude Desktop can be downloaded from this page for macOS and Windows.

For Linux, we had success using this UNOFFICIAL build script based on nix

# ⚠️ UNOFFICIAL

You can also run make claude-linux

NIXPKGS_ALLOW_UNFREE=1 nix run github:k3d3/claude-desktop-linux-flake \ --impure \ --extra-experimental-features flakes \ --extra-experimental-features nix-command

To use this with Claude Desktop, add the following to your claude_desktop_config.json (read more on the MCP documentation website).

> [!IMPORTANT]
>
> Ensure the port of the SERVER_URLand TOKEN match those used in the jupyter lab command.
>
> The NOTEBOOK_PATH should be relative to the directory where JupyterLab was started.

Claude Configuration on macOS and Windows

{
  "mcpServers": {
    "jupyter-earth": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "SERVER_URL",
        "-e",
        "TOKEN",
        "-e",
        "NOTEBOOK_PATH",
        "datalayer/jupyter-earth-mcp-server:latest"
      ],
      "env": {
        "SERVER_URL": "http://host.docker.internal:8888",
        "TOKEN": "MY_TOKEN",
        "NOTEBOOK_PATH": "notebook.ipynb"
      }
    }
  }
}

Claude Configuration on Linux

CLAUDE_CONFIG=${HOME}/.config/Claude/claude_desktop_config.json
cat <<EOF > $CLAUDE_CONFIG
{
  "mcpServers": {
    "jupyter-earth": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "SERVER_URL",
        "-e",
        "TOKEN",
        "-e",
        "NOTEBOOK_PATH",
        "--network=host",
        "datalayer/jupyter-earth-mcp-server:latest"
      ],
      "env": {
        "SERVER_URL": "http://localhost:8888",
        "TOKEN": "MY_TOKEN",
        "NOTEBOOK_PATH": "notebook.ipynb"
      }
    }
  }
}
EOF
cat $CLAUDE_CONFIG

Components

Tools

The server currently offers 1 tool:

1. download_earth_data_granules

- Add a code cell in a Jupyter notebook to download Earth data granules from NASA Earth Data.
- Input:
- folder_name(string): Local folder name to save the data.
- short_name(string): 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).
- Returns: Cell output.

Prompts

1. download_analyze_global_sea_level
- To ask for downloading and analyzing global sea level data in Jupyter.
- Returns: Prompt correctly formatted.

Building

You can build the Docker image it from source.

make build-docker
29:["$","div",null,{
No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.