Gdex MCP
MCP server for the GDEX (Geoscience Data Exchange) data portal: datasets, files, metrics, subsetting
Connect it
Settings → Connectors → Add custom connector
URL: https://gdex-mcp.k8s.ucar.edu/mcpSettings → Apps & Connectors → Advanced → Developer mode
Create connector with URL: https://gdex-mcp.k8s.ucar.edu/mcp{
"mcpServers": {
"gdex-mcp": {
"url": "https://gdex-mcp.k8s.ucar.edu/mcp"
}
}
}claude mcp add --transport http gdex-mcp https://gdex-mcp.k8s.ucar.edu/mcp{
"servers": {
"gdex-mcp": {
"type": "http",
"url": "https://gdex-mcp.k8s.ucar.edu/mcp"
}
}
}30 tools, verified live
list_datasetsList datasets available on GDEX, with their IDs and titles. The full catalog has ~1700 datasets â far too many to return at once. Always pass `query` to filter by keyword unless the user specifically wants to browse the whole catalog page by page. Args: query: Keyword(s) to filter by, matched case-insensitively as a substring against dataset id and title.
get_dataset_metadataReturn full metadata for a GDEX dataset (parameters, temporal range, spatial coverage, etc.). Args: dsid: Dataset ID (dNNNNNN), e.g. d083002
get_dataset_fieldReturn one metadata field for a dataset. Prefer describe_dataset when the user wants a general summary covering several of these at once (abstract, temporal, spatial_coverage, variables, data_formats, volume) â this tool is for pulling a single field, including the fields describe_dataset doesn't cover (publications, contributors, related_datasets, documentation). Args:
describe_datasetReturn a combined overview of a dataset â abstract, temporal coverage, spatial coverage, variables, data formats, and volume â in a single call. Prefer this over calling get_dataset_field repeatedly when the user wants a general summary of a dataset. If one of the underlying fields fails to load, it's returned as {"error": ...} rather than failing the whole call. Args:
get_file_groupsReturn file groups for a dataset. Pass gindex to get child groups under a parent. Groups nest (dataset -> format -> year -> month, or similar, varying by dataset) and there's no way to predict a child's gindex in advance â each group's gindex/url is dataset-specific and only knowable from the parent response. To drill down, read the gindex (or url) off a row in this response
get_dataset_filesReturn a paginated file listing for a dataset or a specific group. Depending on how deep gindex is in the group hierarchy, this returns either actual file rows or another layer of subgroup summaries â there's no way to tell in advance which you'll get. If you get subgroups, read the gindex (or url) off a row and call again with that gindex to go one level deeper; gindex valu
find_dataset_filesSearch a dataset's file-group hierarchy for files matching a name pattern (e.g. a date like "20220808"), without ever pulling a large, context-blowing file listing. Automates the pattern described in get_file_groups: recursively calls get_file_groups, descending into every child gindex, until a gindex returns no further children (a leaf group) â then calls get_dataset_files
get_filesearch_datatypesReturn the file-search datatypes available for a dataset (a subset of "grid", "cyclone_fix", "sensor"). Call this before the other filesearch_* tools to know which one(s) apply â a dataset only supports search for the datatypes it actually contains. Args: dsid: Dataset ID (dNNNNNN), e.g. d083002
get_filesearch_grid_filtersReturn the valid parameter/product/grid/level codes and date range for "grid" datatype file search on a dataset. Use this to discover the codes to pass to get_filesearch_grid_files, optionally narrowed by any filters you already know you want. Args: dsid: Dataset ID (dNNNNNN), e.g. d083002 valid_datetime_min: Restrict to data valid on/after "YYYY-MM-DD HH:MM"
get_filesearch_cyclone_fix_filtersReturn the valid date range and other filters for "cyclone_fix" datatype file search on a dataset. Args: dsid: Dataset ID (dNNNNNN), e.g. d083002 valid_datetime_min: Restrict to data valid on/after "YYYY-MM-DD HH:MM" valid_datetime_max: Restrict to data valid on/before "YYYY-MM-DD HH:MM"
get_filesearch_sensor_filtersReturn the valid date range and other filters for "sensor" datatype file search on a dataset. Args: dsid: Dataset ID (dNNNNNN), e.g. d083002 valid_date_min: Restrict to data valid on/after "YYYY-MM-DD" valid_date_max: Restrict to data valid on/before "YYYY-MM-DD"
get_filesearch_grid_filesSearch for data files containing "grid" datatype data, filtered by parameter code(s) and optionally by time range, product, grid, or level. Results are paginated; use get_filesearch_result_page with the returned result_id to fetch additional pages. Use get_filesearch_grid_filters first to find valid parameter/product/grid/level codes for this dataset. Args: dsid: Datas
get_filesearch_cyclone_fix_filesSearch for data files containing "cyclone_fix" datatype data, optionally filtered by time range. Results are paginated; use get_filesearch_result_page with the returned result_id to fetch additional pages. Args: dsid: Dataset ID (dNNNNNN), e.g. d083002 valid_datetime_min: Restrict to data valid on/after "YYYY-MM-DD HH:MM" valid_datetime_max: Restrict to data va
get_filesearch_sensor_filesSearch for data files containing "sensor" datatype data, optionally filtered by date range. Results are paginated; use get_filesearch_result_page with the returned result_id to fetch additional pages. Args: dsid: Dataset ID (dNNNNNN), e.g. d083002 valid_date_min: Restrict to data valid on/after "YYYY-MM-DD" valid_date_max: Restrict to data valid on/before "YYYY
get_filesearch_result_pageReturn a page of results from a previous get_filesearch_*_files call, by its result_id. Use this to page through file-search results beyond the first page (see the "pagination" block of a files/results response for num_pages and next_page). Args: dsid: Dataset ID (dNNNNNN), e.g. d083002 result_id: The result_id from a previous filesearch files/results response
get_data_accessReturn data access options for a dataset â download links, Globus URLs, access methods. Args: dsid: Dataset ID (dNNNNNN), e.g. d083002
has_arcoCheck whether Analysis-Ready Cloud-Optimized (ARCO) data is available for a dataset. For analysis tasks, call this (and check for a "Kerchunk Reference Files" group via get_file_groups) before reaching for raw data files â reading through ARCO/kerchunk references avoids downloading whole files just to subset them. When picking among kerchunk reference variants, always use th
get_arco_variablesReturn the list of ARCO variables available for a dataset. Each row's type (index 2) is either "zarr" or "reference" (kerchunk). A "reference" variable is often listed multiple times, once per kerchunk reference variant (plain, "-remote-https", "-remote-osdf", etc.) â always pick the "-osdf" variant's URL; the others' chunk targets can be internal paths that only resolve on
search_arco_variablesSearch ARCO variables by name for a dataset. As with get_arco_variables, a "reference" (kerchunk) match is often listed once per variant â always pick the "-osdf" variant's URL (reachable from anywhere), and open it with xr.open_dataset(url, engine="kerchunk", storage_options={"remote_protocol": "https", "lazy": True}). A "zarr" match needs no variant picking â its URL alr
get_portal_metricsReturn a GDEX portal-wide metric. Args: metric: One of: volume_downloaded, unique_users, total_datasets, total_citations, gdex_volume, total_requests, top_datasets, ai_datasets
get_dataset_metricsReturn a per-dataset metric. Args: dsid: Dataset ID (dNNNNNN), e.g. d083002 metric: One of: users_month, users_year, volume_month, volume_year
get_staffReturn GDEX staff contacts, optionally filtered to a specific dataset. Args: dsid: Optional dataset ID. If omitted, returns all staff.
list_request_statusesList all subsetting request statuses for the authenticated user. Requires GDEX_TOKEN.
check_request_statusCheck the status of a specific subsetting request. Requires GDEX_TOKEN. Args: rindex: Request index/ID
get_request_filesReturn the output files for a completed subsetting request. Requires GDEX_TOKEN. Args: rindex: Request index/ID
get_control_file_templateReturn the control file template for building a subsetting request for a dataset. Args: dsid: Dataset ID (dNNNNNN), e.g. d083002
validate_subset_requestCheck a subset request body against the dataset's control file template, without submitting anything. Use this before submit_subset_request to catch missing or unrecognized fields fast, instead of finding out from a failed API call. Args: dsid: Dataset ID (dNNNNNN), e.g. d083002 request_json: JSON string of the subsetting request body to validate
submit_subset_requestSubmit a data subset request to GDEX. Requires GDEX_TOKEN. Args: request_json: JSON string of the subsetting request body. Use get_control_file_template to get the expected structure for a dataset, or validate_subset_request to check it before submitting.
submit_and_wait_for_requestSubmit a subset request and poll its status until it finishes, fails, or timeout_s elapses â instead of calling submit_subset_request and then manually looping on check_request_status. Requires GDEX_TOKEN. GDEX's API schema doesn't document the exact status vocabulary, so "finished" is a best-effort match on the status text (words like "complete" vs. "error"/"fail"). If the
purge_requestDelete a subsetting request and its output files. Requires GDEX_TOKEN. Args: rindex: Request index/ID to purge
Alternatives in Developer Tools
Compare →EMemailmdA
Render markdown into email-safe HTML, lint drafts for deliverability problems, and preview emails.
SESemioticA
Verified React chart generation: select, validate, repair, render, and inspect charts through MCP.
RRReactive ResumeA
Free open-source resume builder with remote MCP tools for resumes and job applications.
PAPg AiguideA
Comprehensive PostgreSQL documentation and best practices, including ecosystem tools
COContrastAPIA
55 tools, 7 Resources, Sigma rules, email SPF/DMARC, MITRE, CVE/KEV, risk_score. No key.
QRQR RápidoA
Generate QR codes for URLs, PIX, Wi-Fi, vCards, WhatsApp and more. For AI agents.