Offers containerized deployment of the MCP server through Docker, simplifying setup and ensuring consistent environments for Earth data analysis workflows.
Provides tools to interact with NASA Earth Data for efficient dataset discovery and retrieval for geospatial analysis, including searching for datasets and data granules with filtering by keywords, temporal ranges, and geographical bounding boxes.
🪐 ✨ Earthdata MCP Server
Earthdata MCP Server is a Model Context Protocol (MCP) server implementation that provides tools to interact with NASA Earth Data. It enables efficient dataset discovery and retrieval for Geospatial analysis.
🚀 NEW: This server now includes all Jupyter MCP Server tools through composition, providing a unified interface for both Earth data discovery and Jupyter notebook manipulation. All Jupyter MCP Server command-line options are also available for seamless integration.
🚀 Key Features
- Unified Interface: Combines Earthdata and Jupyter tools
- Efficient Data Retrieval: Search and download Earthdata datasets
The following demo uses this MCP server to search for datasets and data granules on NASA Earthdata, to download the data in Jupyter and to run further analysis.
🏁 Getting Started
For comprehensive setup instructions—including Streamable HTTP
transport and advanced configuration—check out thr documentation. Or, get started quickly with JupyterLab
and stdio
transport here below.
1. Set Up Your Environment
2. Start JupyterLab
3. Configure Your Preferred MCP Client
Note
Ensure the port
of the DOCUMENT_URL
and RUNTIME_URL
match those used in the jupyter lab
command.
The DOCUMENT_ID
which is the path to the notebook you want to connect to, should be relative to the directory where JupyterLab was started.
In a basic setup, DOCUMENT_URL
and RUNTIME_URL
are the same. DOCUMENT_TOKEN
, and RUNTIME_TOKEN
are also the same and is actually the Jupyter Token.
MacOS and Windows
Linux
Connecting to NASA Earthdata
To interact with NASA Earthdata, you need an Earthdata Login account. You can learn more and register for an account through the Earthdata Login API portal.
Authentication
This server uses your Earthdata Login credentials to authenticate with NASA Earthdata. You need to provide your username and password as environment variables. Generate and Earth data Token in one of the tabs.
In your terminal, you can set them like this:
The server will automatically use these variables to authenticate your requests.
📚 Documentation
- Architecture: Learn about the server composition pattern
- Authentication: How to authenticate with NASA Earthdata
- Tools: Detailed documentation of available tools
Tools
The server offers 15 tools total: 3 Earthdata-specific tools plus 12 Jupyter notebook manipulation tools (prefixed with jupyter_
).
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
- Download Earth data granules from NASA Earth Data and integrate with Jupyter notebooks.
- This tool combines earthdata search capabilities with jupyter notebook manipulation to create a seamless download workflow.
- Authentication: Requires NASA Earthdata Login credentials (see Authentication section)
- 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).
- Returns: Success message with download code preparation details.
Jupyter Tools (Composed)
The following Jupyter notebook manipulation tools are available with the jupyter_
prefix:
jupyter_append_markdown_cell
: Add markdown cells to notebooksjupyter_insert_markdown_cell
: Insert markdown cells at specific positionsjupyter_overwrite_cell_source
: Modify existing cell contentjupyter_append_execute_code_cell
: Add and execute code cellsjupyter_insert_execute_code_cell
: Insert and execute code cells at specific positionsjupyter_execute_cell_with_progress
: Execute cells with progress monitoringjupyter_execute_cell_simple_timeout
: Execute cells with timeoutjupyter_execute_cell_streaming
: Execute cells with streaming outputjupyter_read_all_cells
: Read all notebook cellsjupyter_read_cell
: Read specific notebook cellsjupyter_get_notebook_info
: Get notebook metadatajupyter_delete_cell
: Delete notebook cells
For detailed documentation of the Jupyter tools, see the Jupyter MCP Server documentation.
Prompts
download_analyze_global_sea_level
🆕- Generate a comprehensive workflow for downloading and analyzing Global Mean Sea Level Trend dataset.
- Uses both earthdata download tools and jupyter analysis capabilities.
- Returns: Detailed prompt for complete sea level analysis workflow.
sealevel_rise_dataset
- Search for datasets related to sea level rise worldwide.
- Input:
start_year
(int): Start year to consider.end_year
(int): End year to consider.
- Returns: Prompt correctly formatted.
ask_datasets_format
- To ask about the format of the datasets.
- Returns: Prompt correctly formatted.
Building
If you prefer, you can pull the prebuilt images.
This server cannot be installed
remote-capable server
The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.
A Model Context Protocol server that enables efficient discovery and retrieval of NASA Earth Data for geospatial analysis.
Related MCP Servers
- AsecurityAlicenseAqualityA Model Context Protocol server that provides a standardized interface for AI models to interact with NASA's vast array of data sources including APOD, Mars Rover photos, satellite imagery, and space weather data.Last updated -2410470ISC License
- AsecurityAlicenseAqualityA Model Context Protocol server that provides Google Maps API integration, allowing users to search locations, get place details, geocode addresses, calculate distances, obtain directions, and retrieve elevation data through LLM processing capabilities.Last updated -714892MIT License
- -securityAlicense-qualityA Model Context Protocol server implementation that provides geospatial analysis tools in Jupyter notebooks, particularly for downloading NASA Earth data granules.Last updated -5BSD 3-Clause
- AsecurityAlicenseAqualityA Model Context Protocol server that connects Large Language Models to the GeoServer REST API, enabling AI assistants to query and manipulate geospatial data through natural language.Last updated -937MIT License