Skip to main content
Glama
podaac

CMR Model Context Protocol

Official
by podaac

get_datasets

Retrieve Earth science datasets from NASA's CMR using specific keywords, date ranges, and DAAC filters to streamline data discovery and access.

Instructions

Get a list of datasets form CMR based on keywords.

Args:
    startdate: (Optional) Start date of search request (like "2002" or "2022-03-22")
    stopdate: (Optional) Stop date of search request (like "2002" or "2022-03-22")
    daac: the daac to search, e.g. NSIDC or PODAAC
    keywords: A list of keyword arguments to search collections for.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
daacNo
keywordNo
startdateNo
stopdateNo

Implementation Reference

  • Core execution logic of the get_datasets tool: constructs search arguments from inputs, performs dataset search using earthaccess, logs count, and joins formatted dataset strings with separators.
    args = {}
    if keyword is not None:
         args['keyword'] = keyword
    if daac is not None:
         args['daac'] = daac
    if startdate is not None or stopdate is not None:
         args['temporal'] = (startdate, stopdate)
    
    collections = earthaccess.search_datasets(count=5,  **args )
    logger.debug(len(collections))
    
    #alerts = [format_dataset(feature) for feature in data["features"]]
    return "\n---\n".join([format_dataset(ds) for ds in collections])
  • Input schema defined by function parameters with types and default values, plus comprehensive docstring describing arguments and usage.
    async def get_datasets(
        startdate: str = None,
        stopdate: str = None,
        daac: Optional[str] = None,
        keyword: str= None) -> str:
        """Get a list of datasets form CMR based on keywords.
    
        Args:
            startdate: (Optional) Start date of search request (like "2002" or "2022-03-22")
            stopdate: (Optional) Stop date of search request (like "2002" or "2022-03-22")
            daac: the daac to search, e.g. NSIDC or PODAAC
            keywords: A list of keyword arguments to search collections for.
        """
  • cmr-search.py:33-33 (registration)
    Registers the get_datasets function as an MCP tool using the FastMCP decorator.
    @mcp.tool()
  • Supporting function to format a single dataset (feature) into a human-readable string, handling errors gracefully.
    def format_dataset(feature: dict) -> str:
        """Format an alert feature into a readable string."""
        props = feature
    
        logger.debug(props.concept_id())
    
        try:
            return f"""
    ConceptID: {props.concept_id()}
    Description: {props.abstract()}
    Shortname: {props.summary()['short-name']}
    """
        except Exception as e:
            logging.error(traceback.format_exc())
            #Currently an error in earthaccess that relies on `FileDistributionInformation` to exist will be caught here from the 'summary()' method. 
            # Returning empty string.
            return ""
Install Server

Other Tools

Related Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/podaac/cmr-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server