Skip to main content
Glama
podaac

CMR Model Context Protocol

Official
by podaac
README.md
# Model Context Protocol (MCP) for NASA Earthdata Search (CMR)

This module is a [model context protocol](https://modelcontextprotocol.io/introduction) (MCP) for NASA's earthdata common metedata repository (CMR). The goal of this MCP server is to integrate AI retrievals with NASA Catalog of datasets by way of Earthaccess.

## Dependencies
uv -  a rust based python package manager
a LLM client, such as Claude desktop or chatGPT desktop (for consuming the MCP)

## Install and Run

Clone the repository to your local environment, or where your LLM client is running.

```
git clone https://github.com/podaac/cmr-mcp.git
cd cmr-mcp
```


### Install uv 

```
curl -LsSf https://astral.sh/uv/install.sh | sh
```


```
uv venv
source .venv/bin/activate
```

###  Install packages with uv
```
uv sync
```

use the outputs of `which uv` (UV_LIB) and `PWD` (CMR_MCP_INSTALL) to update the following configuration.


## Adding to AI Framework

In this example we'll use Claude desktop.

Update the `claude_desktop_config.json` file (sometimes this must be created). On a mac, this is often found in `~/Library/Application\ Support/Claude/claude_desktop_config.json`

Add the following configuration, filling in the values of UV_LIB and CMR_MCP_INSTALL - don't use environment variables here.

```
{
    "mcpServers": {
        "cmr": {
            "command": "$UV_LIB$",
            "args": [
                "--directory",
                "$CMR_MCP_INSTALL$",
                "run",
                "cmr-search.py"
            ]
        }
    }
}
```

## Use the MCP Server

Simply prompt your agent to `search cmr for...` data. Below is a simple example of this in action.

![Claude MCP usage](assets/claude_integration.png)

Other prompts that can work:

1. Search CMR for datasets from 2024 to 2025
2. Search CMR for PO.DAAC datasets from 2020 to 2024 with keyword Climate




TDQS

B3.2/5.0

Scored across 1 tool

Disambiguation5/5

With only one tool, there is no possibility of confusion or overlap between tools. The tool has a clear, singular purpose of retrieving datasets from CMR based on search parameters.

Naming Consistency5/5

The single tool name 'get_datasets' follows a clear verb_noun pattern, and there are no other tools to create inconsistency. The naming is straightforward and descriptive.

Tool Count2/5

A single tool is too few for a server named 'CMR Model Context Protocol', which suggests a broader scope for interacting with CMR datasets. This minimal toolset feels thin and incomplete for the apparent domain.

Completeness2/5

The tool surface is severely incomplete for a CMR dataset server. There are obvious gaps: no tools for creating, updating, deleting, or managing datasets, and no support for operations like filtering, sorting, or detailed metadata retrieval beyond basic search.

Maintenance

ActivityInactive
ResponsivenessNo issues