io.github.cyanheads/cdc-health-mcp-server
REMOTE · CDC.CASEYJHAND.COM · 2 COMPONENTS · SCANNED SEP 22
Search and query CDC public health data — mortality, vaccinations, surveillance, behavioral risk.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security66
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation not fully verified: no authorisation is required to call this server, and 5 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe. See how to fix → View diagnostics → Unverified
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC is configured correctly; the domain's records validate against the full chain to the root. View diagnostics → Pass
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability76
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 3788 tokens (~473/item across 8 items; 5 tools + 3 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
- No destabilizing schema changes in the last 30 days.Pass
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety75
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- 0 of 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "cdc_query_dataset" implies "execute" and declares readOnlyHint instead, contradicting what its own name says it does. See how to fix → Fail
- An AI judge read all 7 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a current MCP spec version (2026-07-28).Pass
How do I install the io.github.cyanheads/cdc-health-mcp-server server?
io.github.cyanheads/cdc-health-mcp-server is a hosted endpoint at https://cdc.caseyjhand.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · cdc.caseyjhand.com
claude mcp add --transport http cyanheads-cdc-health-mcp-server 'https://cdc.caseyjhand.com/mcp'
{
"mcpServers": {
"cyanheads-cdc-health-mcp-server": {
"url": "https://cdc.caseyjhand.com/mcp"
}
}
} {
"servers": {
"cyanheads-cdc-health-mcp-server": {
"type": "http",
"url": "https://cdc.caseyjhand.com/mcp"
}
}
} [mcp_servers.cyanheads-cdc-health-mcp-server] url = "https://cdc.caseyjhand.com/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"cyanheads-cdc-health-mcp-server": {
"type": "remote",
"url": "https://cdc.caseyjhand.com/mcp",
"enabled": true
}
}
} openclaw mcp add cyanheads-cdc-health-mcp-server --url 'https://cdc.caseyjhand.com/mcp' --transport streamable-http
mcp_servers:
cyanheads-cdc-health-mcp-server:
url: "https://cdc.caseyjhand.com/mcp" {
"McpServers": {
"cyanheads-cdc-health-mcp-server": {
"Transport": "http",
"Url": "https://cdc.caseyjhand.com/mcp"
}
}
} assistant mcp add cyanheads-cdc-health-mcp-server -t streamable-http -u 'https://cdc.caseyjhand.com/mcp'
{
"mcpServers": {
"cyanheads-cdc-health-mcp-server": {
"type": "http",
"url": "https://cdc.caseyjhand.com/mcp"
}
}
} The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 21 Sept 26 0
- The server rewrote its instructions, which are the text every model session reads security
- Schema quality: 3199 → 3788 ▼ functional
- Server version: 0.8.7 → 0.9.0 functional
- New tool “cdc_list_catalog_vocabulary” functional
- “cdc_discover_datasets” reworded the description of “tags” cosmetic
- “cdc_discover_datasets” reworded the description of “category” cosmetic
- 16 Sept 26 0
- Server version: 0.8.6 → 0.8.7 functional
- 9 Sept 26 +1
- Stability: 0.97 → pass security
- 7 Sept 26 −1
- Stability: pass → 0.93 functional
- 26 Aug 26 −1
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 25 Aug 26 +1
- Stability: 0.97 → pass security
- 22 Aug 26 0
- MCP protocol: Implements a current MCP spec version (2026-07-28). functional
- MCP protocol version: 2025-11-25 → 2026-07-28 functional
- Server version: 0.8.5 → 0.8.6 functional
- 18 Aug 26 0
- Tool “cdc_get_dataset_schema” rewrote its description, which is the text the model reads security
- Tool “cdc_query_wonder” rewrote its description, which is the text the model reads security
- Schema quality: 378 → 457 ▼ functional
- Server version: 0.8.4 → 0.8.5 functional
- “cdc_query_wonder” added an optional parameter “limit” cosmetic
- “cdc_get_dataset_schema” added an optional parameter “column_limit” cosmetic
- “cdc_get_dataset_schema” added an optional parameter “column_offset” cosmetic
- “cdc_query_wonder” added an optional parameter “offset” cosmetic
- “cdc_query_dataset” reworded the description of “limit” cosmetic
- “cdc_query_dataset” reworded the description of “offset” cosmetic
- “cdc_query_dataset” reworded the description of “order” cosmetic
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 22 Sept 2026 · Probed https://cdc.caseyjhand.com/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=caseyjhand.com | CN=WE1,O=Google Trust Services,C=US | 4 Sept 2026 | 3 Dec 2026 | ECDSA 256 | ECDSA-SHA256 | a6985204ed51ae050e7738aa6be668e9 |
| SANs: caseyjhand.com, *.caseyjhand.com | ||||||
| CN=WE1,O=Google Trust Services,C=US (CA) | CN=GTS Root R4,O=Google Trust Services LLC,C=US | 13 Dec 2023 | 20 Feb 2029 | ECDSA 256 | ECDSA-SHA384 | 7ff31977972c224a76155d13b6d685e3 |
| CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) | CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE | 15 Nov 2023 | 28 Jan 2028 | ECDSA 384 | SHA256-RSA | 7fe530bf331343bedd821610493d8a1b |
Background: What to check on a remote MCP endpoint →
DNSSEC secure
Validation of cdc.caseyjhand.com. — Secure
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| com. | present | 19718 | 13 | Verified |
| caseyjhand.com. | present | 2371 | 13 | Verified |
| cdc.caseyjhand.com. | Verified address RRset verified with the apex keys |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
| Header | Value |
|---|---|
| strict-transport-security | max-age=63072000; includeSubDomains; preload |
| x-content-type-options | nosniff |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://cdc.caseyjhand.com/mcp | Verified | 200 | |
| http (plaintext) | http://cdc.caseyjhand.com/mcp | HTTPS enforced | 301 | https://cdc.caseyjhand.com/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
cdc_discover_datasets Cdc Discover Datasets ~566
Search the CDC dataset catalog by keyword, category, or tag. Returns IDs, names, truncated descriptions, asset types, column counts, and update timestamps. 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. Use cdc_get_dataset_schema for the full column list of a chosen dataset.
| Name | Type | Req | Description |
|---|---|---|---|
| category | string | – | Filter by domain category (e.g., "NNDSS", "Vaccinations", "Behavioral Risk Factors"). Values come from the catalog's own vocabulary and are matched exactly, including case — "Vaccinations" matches 89… |
| domain | string | – | CDC Socrata host to search. "data.cdc.gov" (default) and "chronicdata.cdc.gov" front the same catalog and return the same entries, so switching hosts neither widens nor narrows a search — chronic-dis… |
| limit | integer | – | Results to return (default 10, max 100). offset plus limit must not exceed 10000. |
| offset | integer | – | Pagination offset for browsing beyond first page (max 9999). offset plus limit must not exceed 10000; both CDC portals hold well under two thousand entries, so offsets near that ceiling page past the… |
| order | string | – | Result ordering. "dataset_id" (default) sorts deterministically by each dataset's unique catalog ID — required for stable offset pagination, since consecutive pages form a gap-free, duplicate-free tr… |
| query | string | – | Full-text search across dataset names and descriptions (e.g., "diabetes mortality", "lead exposure children"). |
| tags | array | – | Filter by domain tags (e.g., ["covid19", "surveillance"]). Tags widen the search instead of narrowing it — a dataset matches when it carries any one of them, so every tag added returns more results,… |
| Name | Type | Req | Description |
|---|---|---|---|
| appliedFilters | object | – | Filters applied to this query; absent fields indicate no filter on that dimension. Query, category, and tags intersect with each other, but multiple tags union. |
| datasets | array | – | Matching datasets. |
| error | object | – | Present when the call failed. Absent on success. |
| notice | string | – | Guidance when the page came back empty — the catalog values closest to a category or tag filter that matched nothing, each with its entry count; how to broaden a search when no value is close; or the… |
| totalCount | number | – | Total matching datasets in the catalog (for pagination). |
No examples provided.
cdc_get_dataset_schema Cdc Get Dataset Schema ~280
Fetch the column schema for a CDC dataset — names, data types, descriptions, row count, and last-updated timestamp. Returns the first 100 columns by default; wide datasets continue via column_offset. Get dataset IDs from cdc_discover_datasets.
| Name | Type | Req | Description |
|---|---|---|---|
| column_limit | integer | – | Columns to return in this call (default 100, max 500). Every dataset under the default arrives whole; past it the response reports totalCount and a nextOffset to pass back as column_offset. Raise thi… |
| column_offset | integer | – | Index of the first column to return, for continuing past a previous call (default 0). Columns keep the order the dataset declares, so column_offset plus column_limit walks the schema without gaps or… |
| datasetId | string | yes | Four-by-four dataset identifier (e.g., "bi63-dtpu"). Obtain from cdc_discover_datasets. |
| domain | string | – | CDC Socrata host to fetch the dataset from. "data.cdc.gov" (default) and "chronicdata.cdc.gov" front the same catalog, so a four-by-four ID resolves on either and the default works whichever host the… |
| Name | Type | Req | Description |
|---|---|---|---|
| cap | number | – | The column_limit that bounded this response. |
| columns | array | – | The requested window of dataset columns, with full types and descriptions. Bounded by column_limit/column_offset; the enrichment fields say how the window sits in the whole schema. |
| description | string | – | Dataset description when provided, in full as plain text — markup stripped and entity references decoded. Never truncated here; cdc_discover_datasets is the surface that shortens it. |
| error | object | – | Present when the call failed. Absent on success. |
| name | string | – | Dataset display name from the catalog (e.g., "Provisional COVID-19 Deaths by Sex and Age"). |
| nextOffset | number | – | Value to pass as column_offset on the next call to continue after the last column returned. Present only when columns remain beyond this window. |
| notice | string | – | Guidance when the response is a subset of the schema — which columns it covers, how to reach the rest, or that column_offset ran past the end. |
| rowCount | number | – | Total rows in the dataset; omitted when neither a live nor a cached figure is available. Read rowCountSource before sizing a pagination walk against it — the cached figure can understate an actively-… |
| rowCountSource | string | – | Provenance of rowCount. "live" is a count(*) run against the dataset for this call. "cached" is the figure Socrata stored when it last built its column cache, returned when the count request did not… |
| shown | number | – | Number of columns returned in this response. |
| totalCount | number | – | Total columns in the dataset schema, before column_limit/column_offset. |
| truncated | boolean | – | True when the returned columns are a subset of the schema. Absent means every column of the dataset is in this response. |
| updatedAt | string | – | Last data update timestamp when provided. |
No examples provided.
cdc_list_catalog_vocabulary List CDC Catalog Vocabulary ~420
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 55 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 it.
| Name | Type | Req | Description |
|---|---|---|---|
| domain | string | – | CDC Socrata host to read the vocabulary from. "data.cdc.gov" (default) and "chronicdata.cdc.gov" front the same catalog and publish the same vocabulary, so this selects which host answers, never whic… |
| filter | string | – | Narrow both vocabularies to the values related to this text. A value matches when every word of the filter appears inside one of its words ("vaccin" reaches "Vaccinations" and "covid-19 vaccination")… |
| tag_limit | integer | – | Tags to return in this call (default 50, max 500). Tags are ranked by entry count, so the default page is the most-used end of the vocabulary; the response reports how many matched and a nextOffset w… |
| tag_offset | integer | – | Index of the first tag to return, for continuing past a previous call (default 0). Ranking is stable, so tag_offset plus tag_limit walks the vocabulary without gaps or repeats. An offset at or past t… |
| Name | Type | Req | Description |
|---|---|---|---|
| cap | number | – | The tag_limit that bounded this response. |
| categories | array | – | Every domain category matching the filter, ranked by entry count. Pass a value to cdc_discover_datasets' category input exactly as spelled here. |
| categoryCount | number | – | Categories matching the filter. Every one of them is in this response. |
| domain | string | – | CDC Socrata host this vocabulary was read from. |
| error | object | – | Present when the call failed. Absent on success. |
| nextOffset | number | – | Value to pass as tag_offset on the next call to continue after the last tag returned. Present only while matching tags remain. |
| notice | string | – | Guidance when the response is a subset of the vocabulary, when a filter too short to discriminate was ignored, when the filter matched nothing, or when tag_offset ran past the end of the matches. |
| shown | number | – | Number of tags returned in this response. |
| tagCount | number | – | Tags matching the filter, before tag_limit and tag_offset. |
| tags | array | – | The requested window of domain tags, ranked by entry count. Pass values to cdc_discover_datasets' tags input; tags union there, so each one added widens the result set. |
| truncated | boolean | – | True when the returned tags are a subset of the matching ones. Absent means every matching tag is in this response. |
| truncationCeiling | number | – | Upper bound on the entry count of every tag not returned. Tags are ranked by entry count, so no omitted tag is carried by more entries than the last one shown. |
| vocabularySize | object | – | Size of each full vocabulary on this host, before any filter was applied. |
No examples provided.
cdc_query_dataset Cdc Query Dataset ~523
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.
| Name | Type | Req | Description |
|---|---|---|---|
| datasetId | string | yes | Four-by-four dataset identifier (e.g., "bi63-dtpu"). Obtain from cdc_discover_datasets. |
| domain | string | – | CDC Socrata host to query. "data.cdc.gov" (default) and "chronicdata.cdc.gov" front the same catalog, so a four-by-four ID returns the same rows from either and the default works whichever host the d… |
| group | string | – | SoQL GROUP BY clause. Requires aggregate functions in select. |
| having | string | – | SoQL HAVING clause. Filters aggregated results. |
| limit | integer | – | Max rows to return (default 100, max 5000). Fewer come back when the page would cross the 200,000-character response budget; the response says so and gives a nextOffset to resume from. |
| offset | integer | – | Row offset for pagination (max 1,000,000). Pair with a deterministic order clause — an offset walk over unordered results can skip or repeat rows. |
| order | string | – | SoQL ORDER BY clause. Field name with optional ASC/DESC: "total_deaths DESC". Set one whenever paging with offset: SODA does not order results implicitly, so consecutive offsets without a determinist… |
| search | string | – | Full-text search across all text columns. For precise filtering use the where parameter instead. |
| select | string | – | SoQL SELECT clause — column names, aliases, or aggregates: "state, sum(deaths) as total_deaths". Omit for all columns. To enumerate distinct values of a column, set select to "{column}, count(*) as c… |
| where | string | – | SoQL WHERE clause. Strings must be single-quoted: "state='California' AND year=2020". If a column name matches a SoQL keyword (group, select, where, order, limit, offset, having, search), wrap it in… |
| Name | Type | Req | Description |
|---|---|---|---|
| cap | number | – | The requested limit that bounded this response. |
| effectiveQuery | string | – | The SoQL clauses sent to Socrata, as `$clause=value` pairs joined by "&". Values read exactly as they were supplied — not URL-encoded — so a clause can be copied back into the matching parameter of a… |
| error | object | – | Present when the call failed. Absent on success. |
| nextOffset | number | – | Offset to pass on the next call to resume immediately after the last row returned. Present only when further rows exist and the resume point is within the offset ceiling; a deterministic order clause… |
| notice | string | – | Guidance when no rows matched, when further rows remain, or when the response budget cut the page short — how to verify filters, resume paging, or broaden the query. |
| rowCount | number | – | Number of rows returned in this response. |
| rows | array | – | Result rows with requested fields. Most values are strings (including numbers/dates); geo columns return GeoJSON objects. |
| shown | number | – | Number of rows returned in this response. |
| truncated | boolean | – | True when rows exist beyond the ones returned, established by fetching one row more than the limit rather than inferred from the row count. Absent means this response is the complete remainder of the… |
No examples provided.
cdc_query_wonder Cdc Query Wonder ~1,431
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, and two multiple-cause databases covering the same two eras. Break results out by year, age group, sex, and/or race, 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). Cause of death is a filter, not a grouping. Some measure cells come back as a CDC status token rather than a number — "Suppressed" (withheld for confidentiality), "Unreliable" (a rate from fewer than 20 deaths), or "Not Applicable" (no population denominator); those cells read null in rows and each one is listed in cellNotes with its token. 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. The whole table comes back by default; a broad grouping can run past a thousand rows, so set limit to take it a page at a time and follow the nextOffset the response reports. Paging shapes the response only — WONDER is asked once either way, and the figures, caveats and hidden-row notices are the same on every page. CDC rejects requests made less than 15 seconds apart ac…
| Name | Type | Req | Description |
|---|---|---|---|
| age_groups | array | – | Restrict to deaths in any of the listed age groups — e.g. ["25-34","35-44"] covers both. "1" is the under-1-year group. "NS" is the group CDC puts a death in when the age was not recorded; it is not… |
| cause_icd10 | – | – | Filter to a specific ICD-10 underlying cause of death — the single condition CDC certified as having started the chain of events leading to death. Omit for all causes. Accepted by every database. "99… |
| database | string | – | Which WONDER mortality database to query. "underlying_1999_2020" (D76) is final data for 1999–2020 and the default. "provisional" (D176) runs 2018 through the current year, updated weekly, and return… |
| group_by | array | – | Dimensions to break results out by (1–4), in output-column order — e.g. ["year"], ["year","sex"], ["age_group","race"]. Results are always national. Cause of death is a filter (cause_icd10), not a gr… |
| limit | integer | – | Rows to return from the table CDC sent (1–5000). Omit to return the whole table. WONDER's request carries no limit of its own, so this pages a table already fetched in full rather than narrowing the… |
| mcd_icd10 | – | – | Filter to deaths with this ICD-10 code recorded anywhere on the death certificate, whether or not it was the underlying cause — e.g. "died with a respiratory condition listed", a population no underl… |
| offset | integer | – | Index of the first row to return, for continuing past a previous call (default 0, max 10,000). Rows keep the order CDC returned them in, which is stable for a given query, so offset plus limit walks… |
| sex | string | – | Filter by sex. |
| year_range | object | – | Inclusive year range. These bounds span every database (1999–2026); the years the selected one actually holds are narrower, and a range outside them is rejected with that database's span named. Omit… |
| Name | Type | Req | Description |
|---|---|---|---|
| cap | number | – | The requested limit that bounded this response. |
| caveats | array | – | CDC-provided caveats and footnotes: data revisions, population-estimate sources, suppression and rate-reliability rules. They describe the whole table CDC assembled, so they come back complete on eve… |
| cellNotes | array | – | One entry per measure cell CDC returned as a status token rather than a number, covering the rows in this response only. Those cells read null in rows, so this is what tells a withheld value apart fr… |
| database | string | – | WONDER dataset code the rows came from — e.g. "D76", "D176", "D157". |
| databaseTitle | string | – | CDC's own title for that database, e.g. "Underlying Cause of Death, 1999-2020". Names the era and record type the rows describe, so a result read on its own is self-describing. |
| effectiveQuery | string | – | Human-readable summary of the grouping and filters sent to WONDER. |
| error | object | – | Present when the call failed. Absent on success. |
| messages | array | – | Notices CDC attached to this table, verbatim. The ones that matter say rows were withheld before the table was sent — "Rows with zero Deaths are hidden." and "Rows with suppressed Deaths are hidden."… |
| nextOffset | number | – | Offset to pass on the next call to resume immediately after the last row returned. Present only when further rows remain. |
| notice | string | – | Guidance when no rows matched, when the returned rows are a page of a larger table or the offset ran past it, and a note when CDC returned a status token in place of a measure value. |
| rowCount | number | – | Number of rows returned in this response — the page size when limit or offset is set. |
| rows | array | – | Result rows. Each carries the requested group-by dimensions plus deaths, population, crude_rate, and age_adjusted_rate (per 100,000) when age standardization is possible — it is omitted when age_grou… |
| shown | number | – | Number of rows returned in this response. |
| suppressedCount | number | – | How many cellNotes carry the "Suppressed" token — cells CDC withheld for confidentiality. Counted over the rows in this response, so it tracks the page rather than the whole table. |
| totalCount | number | – | Rows in the whole table CDC returned, before limit/offset. Exact rather than estimated — the table is parsed in full before a page is taken from it. |
| truncated | boolean | – | True when rows remain past the ones returned. Absent means this response runs to the end of the table, which is also the case for an offset past it. |
No examples provided.
What is the io.github.cyanheads/cdc-health-mcp-server server?
io.github.cyanheads/cdc-health-mcp-server is listed in the public MCP registry as io.github.cyanheads/cdc-health-mcp-server. Search and query CDC public health data, mortality, vaccinations, surveillance, behavioral risk. This page covers its hosted endpoint (https://cdc.caseyjhand.com/mcp).
Is the io.github.cyanheads/cdc-health-mcp-server server safe to use?
io.github.cyanheads/cdc-health-mcp-server scores 81 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the io.github.cyanheads/cdc-health-mcp-server server expose?
io.github.cyanheads/cdc-health-mcp-server exposes 5 tools: cdc_discover_datasets, cdc_get_dataset_schema, cdc_list_catalog_vocabulary, cdc_query_dataset, cdc_query_wonder. Their descriptions and schemas cost roughly 3,220 tokens of context every time the server is loaded.
Does the io.github.cyanheads/cdc-health-mcp-server server require authentication?
No. We connected to io.github.cyanheads/cdc-health-mcp-server without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.
Is the io.github.cyanheads/cdc-health-mcp-server server still maintained?
io.github.cyanheads/cdc-health-mcp-server is still listed as active in the MCP registry. We last reached this channel on 22 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.