Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

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.

0 this week 81 Trust /100
Trust breakdown (7 categories)

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
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
Install

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

# add to Claude Code
claude mcp add --transport http cyanheads-cdc-health-mcp-server 'https://cdc.caseyjhand.com/mcp'
// .cursor/mcp.json
{
  "mcpServers": {
    "cyanheads-cdc-health-mcp-server": {
      "url": "https://cdc.caseyjhand.com/mcp"
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "cyanheads-cdc-health-mcp-server": {
      "type": "http",
      "url": "https://cdc.caseyjhand.com/mcp"
    }
  }
}
# ~/.codex/config.toml
[mcp_servers.cyanheads-cdc-health-mcp-server]
url = "https://cdc.caseyjhand.com/mcp"
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "cyanheads-cdc-health-mcp-server": {
      "type": "remote",
      "url": "https://cdc.caseyjhand.com/mcp",
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add cyanheads-cdc-health-mcp-server --url 'https://cdc.caseyjhand.com/mcp' --transport streamable-http
# ~/.hermes/config.yaml
mcp_servers:
  cyanheads-cdc-health-mcp-server:
    url: "https://cdc.caseyjhand.com/mcp"
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "cyanheads-cdc-health-mcp-server": {
      "Transport": "http",
      "Url": "https://cdc.caseyjhand.com/mcp"
    }
  }
}
# add to Vellum
assistant mcp add cyanheads-cdc-health-mcp-server -t streamable-http -u 'https://cdc.caseyjhand.com/mcp'
// mcp.json
{
  "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.

Changelog

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
Diagnostics

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
MCP tools · 5 exposed · ~3,220 tokens

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 →

Tool Tokens
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.

NameTypeReqDescription
categorystringFilter 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…
domainstringCDC 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…
limitintegerResults to return (default 10, max 100). offset plus limit must not exceed 10000.
offsetintegerPagination 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…
orderstringResult 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…
querystringFull-text search across dataset names and descriptions (e.g., "diabetes mortality", "lead exposure children").
tagsarrayFilter 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,…
NameTypeReqDescription
appliedFiltersobjectFilters applied to this query; absent fields indicate no filter on that dimension. Query, category, and tags intersect with each other, but multiple tags union.
datasetsarrayMatching datasets.
errorobjectPresent when the call failed. Absent on success.
noticestringGuidance 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…
totalCountnumberTotal matching datasets in the catalog (for pagination).

No examples provided.

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.

NameTypeReqDescription
column_limitintegerColumns 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_offsetintegerIndex 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…
datasetIdstringyesFour-by-four dataset identifier (e.g., "bi63-dtpu"). Obtain from cdc_discover_datasets.
domainstringCDC 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…
NameTypeReqDescription
capnumberThe column_limit that bounded this response.
columnsarrayThe 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.
descriptionstringDataset 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.
errorobjectPresent when the call failed. Absent on success.
namestringDataset display name from the catalog (e.g., "Provisional COVID-19 Deaths by Sex and Age").
nextOffsetnumberValue to pass as column_offset on the next call to continue after the last column returned. Present only when columns remain beyond this window.
noticestringGuidance 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.
rowCountnumberTotal 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-…
rowCountSourcestringProvenance 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…
shownnumberNumber of columns returned in this response.
totalCountnumberTotal columns in the dataset schema, before column_limit/column_offset.
truncatedbooleanTrue when the returned columns are a subset of the schema. Absent means every column of the dataset is in this response.
updatedAtstringLast data update timestamp when provided.

No examples provided.

cdc_list_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.

NameTypeReqDescription
domainstringCDC 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…
filterstringNarrow 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_limitintegerTags 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_offsetintegerIndex 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…
NameTypeReqDescription
capnumberThe tag_limit that bounded this response.
categoriesarrayEvery domain category matching the filter, ranked by entry count. Pass a value to cdc_discover_datasets' category input exactly as spelled here.
categoryCountnumberCategories matching the filter. Every one of them is in this response.
domainstringCDC Socrata host this vocabulary was read from.
errorobjectPresent when the call failed. Absent on success.
nextOffsetnumberValue to pass as tag_offset on the next call to continue after the last tag returned. Present only while matching tags remain.
noticestringGuidance 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.
shownnumberNumber of tags returned in this response.
tagCountnumberTags matching the filter, before tag_limit and tag_offset.
tagsarrayThe 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.
truncatedbooleanTrue when the returned tags are a subset of the matching ones. Absent means every matching tag is in this response.
truncationCeilingnumberUpper 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.
vocabularySizeobjectSize of each full vocabulary on this host, before any filter was applied.

No examples provided.

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.

NameTypeReqDescription
datasetIdstringyesFour-by-four dataset identifier (e.g., "bi63-dtpu"). Obtain from cdc_discover_datasets.
domainstringCDC 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…
groupstringSoQL GROUP BY clause. Requires aggregate functions in select.
havingstringSoQL HAVING clause. Filters aggregated results.
limitintegerMax 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.
offsetintegerRow offset for pagination (max 1,000,000). Pair with a deterministic order clause — an offset walk over unordered results can skip or repeat rows.
orderstringSoQL 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…
searchstringFull-text search across all text columns. For precise filtering use the where parameter instead.
selectstringSoQL 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…
wherestringSoQL 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…
NameTypeReqDescription
capnumberThe requested limit that bounded this response.
effectiveQuerystringThe 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…
errorobjectPresent when the call failed. Absent on success.
nextOffsetnumberOffset 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…
noticestringGuidance 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.
rowCountnumberNumber of rows returned in this response.
rowsarrayResult rows with requested fields. Most values are strings (including numbers/dates); geo columns return GeoJSON objects.
shownnumberNumber of rows returned in this response.
truncatedbooleanTrue 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 ~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…

NameTypeReqDescription
age_groupsarrayRestrict 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_icd10Filter 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…
databasestringWhich 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_byarrayDimensions 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…
limitintegerRows 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_icd10Filter 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…
offsetintegerIndex 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…
sexstringFilter by sex.
year_rangeobjectInclusive 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…
NameTypeReqDescription
capnumberThe requested limit that bounded this response.
caveatsarrayCDC-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…
cellNotesarrayOne 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…
databasestringWONDER dataset code the rows came from — e.g. "D76", "D176", "D157".
databaseTitlestringCDC'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.
effectiveQuerystringHuman-readable summary of the grouping and filters sent to WONDER.
errorobjectPresent when the call failed. Absent on success.
messagesarrayNotices 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."…
nextOffsetnumberOffset to pass on the next call to resume immediately after the last row returned. Present only when further rows remain.
noticestringGuidance 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.
rowCountnumberNumber of rows returned in this response — the page size when limit or offset is set.
rowsarrayResult 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…
shownnumberNumber of rows returned in this response.
suppressedCountnumberHow 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.
totalCountnumberRows 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.
truncatedbooleanTrue 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.

Common questions

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.