cdc-health-mcp-server
Server Details
Search and query CDC public health data — mortality, vaccinations, surveillance, behavioral risk.
- Status
- Healthy
- Uptime
- 100.0% over the last 24 hours
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- cyanheads/cdc-health-mcp-server
- GitHub Stars
- 5
- Server Listing
- cdc-health-mcp-server
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 5 tools
Each tool owns a distinct step in one pipeline: vocabulary -> discovery -> schema -> query, with WONDER clearly carved out as a separate upstream system. The two query tools share a verb but the descriptions make the split explicit (SoQL over Socrata datasets vs. national mortality via CDC WONDER, different parameters and constraints). No two tools could plausibly be swapped by mistake.
Every tool carries the cdc_ prefix and a snake_case verb_noun form (discover_datasets, get_dataset_schema, list_catalog_vocabulary, query_dataset, query_wonder). The four verbs map cleanly onto distinct operations, and the extra noun in get_dataset_schema is the only mild asymmetry while still fitting the pattern.
Five tools is lean but each one covers a necessary stage of the workflow and none duplicates another's role. Nothing feels padded, and the small surface is appropriate for a read-only data-access server with two distinct backends.
The read-only lifecycle is well covered: vocabulary validation, catalog discovery, schema inspection, querying, and a specialized WONDER path, including paging and non-tabular asset handling via permalinks. Minor gaps remain — no bulk export/download, and metadata for charts/maps/files is only reachable by following IDs rather than through a dedicated tool.
Available Tools
5 toolscdc_discover_datasetsCdc Discover DatasetsARead-onlyInspect
Search the CDC dataset catalog by keyword, category, tag, or asset type. Returns IDs, names, truncated descriptions, asset types, column counts, update timestamps, and portal links. The catalog also holds charts, maps, stories, files, and links; an entry whose columnCount is 0 is one of those and yields no data from the other tools — reach a file or link through its permalink or accessPoints, and a chart or map through the dataset its parentIds name. Use cdc_get_dataset_schema for the full column list of a chosen dataset.
Inputs: tags, limit, order, query, +4 more. Returns: error, notice, datasets, totalCount, +1 more
cdc_get_dataset_schemaCdc Get Dataset SchemaARead-onlyInspect
Fetch the column schema for a CDC dataset — names, data types, descriptions, row count, last-updated timestamp, and, for a filter, the dataset it is a view of — with the period and area it covers, how often it is updated, its suggested citation, license, and attribution wherever the publisher recorded them. A chart or map has no schema of its own; the failure names the dataset it is built on. Returns the first 100 columns by default; wide datasets continue via column_offset. The dataset description is capped at 4,000 characters by default; pass full_description: true for the whole text. Get dataset IDs from cdc_discover_datasets.
Inputs: datasetId (required), domain, column_limit, column_offset, +1 more. Returns: cap, name, error, shown, +18 more
cdc_list_catalog_vocabularyList CDC Catalog VocabularyARead-onlyInspect
List the controlled vocabularies cdc_discover_datasets' category and tags filters are matched against — every domain category and domain tag the CDC catalog publishes, each with the number of entries carrying it. Call it before filtering a search: a value the catalog does not carry matches nothing and returns an empty page, which is indistinguishable from a real value with no results. All categories come back whole; the tag vocabulary runs to roughly 1,600 values, so tags are ranked by entry count and returned one page at a time via tag_limit and tag_offset. Pass filter to narrow both vocabularies to the values whose words contain its words, or that appear whole inside it; a filter under three letters or digits matches whole words only.
Inputs: domain, filter, tag_limit, tag_offset. Returns: cap, tags, error, shown, +9 more
cdc_query_datasetCdc Query DatasetARead-onlyInspect
Execute a SoQL query against any CDC dataset. Supports filtering, aggregation, sorting, full-text search, and field selection. Use cdc_discover_datasets to find dataset IDs and cdc_get_dataset_schema to inspect columns before querying.
Inputs: datasetId (required), group, limit, order, +6 more. Returns: cap, rows, error, shown, +5 more
cdc_query_wonderCdc Query WonderARead-onlyInspect
Query CDC WONDER for national US mortality statistics — deaths, population, and crude/age-adjusted death rates — across its five mortality databases, selected with the database input: final underlying-cause data for 1999–2020 (the default) or 2018–2024, provisional data running from 2018 through the current year (its latest year partial, with a notice saying so), and two multiple-cause databases covering the same two eras. Break results out by year, month, age group, sex, race, Hispanic origin, or underlying cause of death — ICD-10 chapter or sub-chapter, CDC's 113-cause list, its 15 leading causes, or injury intent — and filter by ICD-10 cause of death, sex, age group, or year range; on a multiple-cause database, mcd_icd10 additionally matches a cause listed anywhere on the death certificate rather than only the one certified as underlying. Each database holds a different span of years (1999–2026 across all of them) and a request whose year_range falls outside the selected one's span is rejected with that span named. WONDER is a separate CDC system from the Socrata datasets the other cdc_* tools query. Data is national only — sub-national (state/county) breakdowns are not available through the API (CDC vital-statistics policy). Chapter and sub-chapter rows carry their ICD-10 code range as cause_code, which cause_icd10 accepts as it stands; 113-cause-list rows carry cause_level, their depth in that nested list, whose deeper causes are already counted in the cause containing them; leading_causes ranks the 15 leading causes by deaths and combines with no other grouping, while the filters still apply; month rows carry deaths only — CDC publishes no monthly population, so population and both rates come back "Not Applicable". The values each grouping dimension can take multiply to bound the table — year beside month, or icd_chapter beside icd_subchapter, adds nothing, since the finer level already enumerates the coarser — and a grouping that could produce more than 10,000 rows is refused before any request with the product named, since WONDER takes longer than the request deadline to answer a table that large; narrow year_range, sex or age_groups, or drop a dimension. Some measure cells come back as a CDC status token rather than a number — "Suppressed" (withheld for confidentiality), "Unreliable" (a rate CDC judges statistically unstable and does not show — on D76 and D77 when it is computed from 20 or fewer deaths, and D176, D158, and D157 when its 95% confidence interval is wider than 160% of the rate, whatever the death count), or "Not Applicable" (no population denominator); those cells read null in rows and each one is listed in cellNotes with its token. Each rate comes with the 95% confidence interval CDC publishes for it, as _lower and _upper right after the rate — null where CDC published none — so two rates can be compared by their intervals rather than their point values. CDC also drops whole rows before sending the table — strata with zero deaths, and strata whose death count is suppressed — so a stratum can be missing from rows entirely; messages carries CDC's statement whenever that happened. One call returns at most 10,000 rows: with limit omitted it returns the rest of the table up to that ceiling, a larger limit is lowered to it, and a smaller limit takes smaller pages; a page that stops short of the end reports the table's totalCount and a nextOffset to continue from. Paging shapes the response only — every call fetches the whole table from WONDER and returns a slice of it, so the figures, caveats and hidden-row notices are the same on every page and a smaller page saves no time. CDC rejects requests made less than 15 seconds apart across all five databases, so calls are spaced automatically: calls made while another is running wait their turn and run one after another, each queued call adding about 16 seconds plus its own query time before it returns. A request WONDER has not finished answering within 20 seconds fails as a retryable upstream_error, so one call queued behind another returns within about 56 seconds.
Inputs: sex, limit, offset, database, +5 more. Returns: cap, rows, error, shown, +12 more
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
Related MCP Connectors
CDC MCP — wraps CDC open data via Socrata API (data.cdc.gov)
Query US Census Bureau data: demographics, economics, and housing statistics.
Query, filter, aggregate, and link Georgia education, Census, immigration, and health datasets.
County and tract-level health outcomes, behaviors, and preventive services from CDC PLACES
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceProvides access to 73 CDC public health datasets covering disease surveillance, vaccination tracking, behavioral risk factors, environmental health, and outbreak detection across 18 surveillance systems through the Socrata Open Data API.2MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to query U.S. public-health datasets such as disease surveillance, mortality, behavioral risk factors, and flu activity through the Socrata API, using natural language or direct tool calls.311 npmMIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to discover, inspect, and query CMS open datasets covering Medicare/Medicaid provider, spending, enrollment, drug pricing, quality, hospital, nursing home, and ACO data. Supports keyword search, metadata lookup, paged row retrieval, full-text search, and exact-match column filters.424 npm1MIT
- AlicenseAqualityBmaintenanceConnect your ads, shop, analytics, social, CRM and finance platforms once, then let Claude, ChatGPT, Cursor or any MCP client read, join and explain your numbers. Public statistics from the World Bank, IMF, Eurostat, OECD, WHO and SEC filings come as context, searchable and chartable from the same tools. Read-only by design, every number carries its source.57115 npm2MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.