CCM
/MCP
SkillsMCPMarketplacesDigestToolsAdvertise

This week in Claude

Every Monday: Claude Code, Agent SDK, MCP, and the Anthropic platform moves worth your time.

Skills by Category
Frontend DevelopmentBackend & APIsTesting & QASecurityDevOps & CI/CDGit & Pull RequestsDocumentationCode Review & QualityAI & Agent BuildingSkill Development
MCP Servers by Category
Sales & MarketingWeb & Browser AutomationDatabasesAI & LLM ToolsCloud & InfrastructureCommunication & MessagingDeveloper ToolsDesign & CreativeDocuments & KnowledgeSearch & Web Crawling
Marketplaces by Category
AI Agents & OrchestrationLLM IntegrationDevelopment ToolsFrontend & UIBackend & APIsDatabasesTesting & Code QualityDevOps & CloudSecurity & ComplianceGit & Version Control

Claude Code Marketplaces

Discover Claude Code plugins, extensions, and tools. Automatically updated directory of Anthropic Claude AI marketplaces with development tools, productivity plugins, and integrations.

Resources

  • Browse Skills
  • Browse MCP Servers
  • Browse Marketplaces
  • Skill index
  • MCP index
  • Marketplace index
  • Plugins Reference

Community

  • About
  • Tools
  • Feedback
  • Privacy Policy
  • Advertise

Built for the Claude Code community with Claude Code by mertbuilds.com

Independent project, not affiliated with Anthropic
cyanheads avatar

Cdc Health Mcp Server

cyanheads/cdc-health-mcp-server
33 toolsSTDIO, HTTPregistry active
Summary

Connects Claude to the CDC's Socrata SODA API across 1,487+ public health datasets covering mortality, vaccinations, NNDSS surveillance, and behavioral risk factors. Three tools handle the full workflow: discover datasets by keyword or category, fetch column schemas with row counts and types, then execute SoQL queries with filtering, aggregation, and full-text search. All responses return as strings per SODA v2.1 spec, so you'll need the schema metadata to parse correctly. Ships with a guided five-step prompt for trend analysis and two resources for quick dataset orientation. No auth required for basic use, optional app token bumps rate limits. Available as a public hosted instance or self-hosted via stdio, Docker, or Streamable HTTP.

Install to Claude Code

verified
claude mcp add --transport http cdc-health https://cdc.caseyjhand.com/mcp

Run in your terminal. Add --scope user to make it available in every project.

Review the command, arguments, and environment values before installing — MCP servers run with your local permissions.

CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Lid closed, agents working
Lid closed, agents working
Keeps your Mac awake while Claude Code, Codex or Cursor works. Lets it sleep when they are done.
Try free for 7 days →
Block distraction from your iPhone for freeBlock distraction from your iPhone for free
Block distraction from your iPhone for free
Block distracting apps from your iPhone permanently without a 3rd party app. Free and open source.
Block now (100% free) →
Granola, the best AI meeting recorder
Granola, the best AI meeting recorder
Notes, actions and memory. Without a meeting bot. First month 100% off.
Download for free →
belt - the only tool your agent needs
belt - the only tool your agent needs
belt cli automatically finds the best tools and skills for your agent. image, video, music, tts...
one prompt install →
Open Steps
Open Steps
Free an open-source skills that make AI coding agents easier to understand, verify, and control.
Download for free →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →
Agent, connect blockchain
Agent, connect blockchain
Connect your Claude agent to live crypto prices and trading routes via 1inch
Get the MCP →
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Lid closed, agents working
Lid closed, agents working
Keeps your Mac awake while Claude Code, Codex or Cursor works. Lets it sleep when they are done.
Try free for 7 days →
Block distraction from your iPhone for freeBlock distraction from your iPhone for free
Block distraction from your iPhone for free
Block distracting apps from your iPhone permanently without a 3rd party app. Free and open source.
Block now (100% free) →
Granola, the best AI meeting recorder
Granola, the best AI meeting recorder
Notes, actions and memory. Without a meeting bot. First month 100% off.
Download for free →
belt - the only tool your agent needs
belt - the only tool your agent needs
belt cli automatically finds the best tools and skills for your agent. image, video, music, tts...
one prompt install →
Open Steps
Open Steps
Free an open-source skills that make AI coding agents easier to understand, verify, and control.
Download for free →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →
Agent, connect blockchain
Agent, connect blockchain
Connect your Claude agent to live crypto prices and trading routes via 1inch
Get the MCP →

Tools

Verified live against the running server on Jun 10, 2026.

verified live3 tools
cdc_discover_datasetsSearch the CDC dataset catalog by keyword, category, or tag. Returns dataset IDs, names, descriptions, column lists, and update timestamps.5 params

Search the CDC dataset catalog by keyword, category, or tag. Returns dataset IDs, names, descriptions, column lists, and update timestamps.

Parameters* required
categorystring
Filter by domain category (e.g., "NNDSS", "Vaccinations", "Behavioral Risk Factors").
limitinteger
Results to return (default 10, max 100).default: 10
offsetinteger
Pagination offset for browsing beyond first page (max 9999).default: 0
querystring
Full-text search across dataset names and descriptions (e.g., "diabetes mortality", "lead exposure children").
tagsarray
Filter by domain tags (e.g., ["covid19", "surveillance"]).
cdc_get_dataset_schemaFetch the full column schema for a CDC dataset — names, data types, descriptions, row count, and last-updated timestamp. Get dataset IDs from cdc_discover_datasets.1 params

Fetch the full column schema for a CDC dataset — names, data types, descriptions, row count, and last-updated timestamp. Get dataset IDs from cdc_discover_datasets.

Parameters* required
datasetId*string
Four-by-four dataset identifier (e.g., "bi63-dtpu"). Obtain from cdc_discover_datasets.
cdc_query_datasetExecute 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.9 params

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.

Parameters* required
datasetId*string
Four-by-four dataset identifier (e.g., "bi63-dtpu"). Obtain from cdc_discover_datasets.
groupstring
SoQL GROUP BY clause. Requires aggregate functions in select.
havingstring
SoQL HAVING clause. Filters aggregated results.
limitinteger
Max rows to return (default 100, max 5000).default: 100
offsetinteger
Row offset for pagination.default: 0
orderstring
SoQL ORDER BY clause. Field name with optional ASC/DESC: "total_deaths DESC".
searchstring
Full-text search across all text columns. For precise filtering use the where parameter instead.
selectstring
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...
wherestring
SoQL WHERE clause. Strings must be single-quoted: "state='California' AND year=2020".

@cyanheads/cdc-health-mcp-server

Search and query CDC public health data — mortality, vaccinations, surveillance, behavioral risk (Socrata SODA API) via MCP. STDIO or Streamable HTTP.

5 Tools • 2 Resources • 1 Prompt

Version License Docker MCP SDK npm TypeScript Bun

Install in Claude Desktop Install in Cursor Install in VS Code

Framework

Public Hosted Server: https://cdc.caseyjhand.com/mcp


Overview

CDC public health data from two systems: the Socrata-based CDC Open Data portal and CDC WONDER, a separate CDC system for national mortality statistics. Search the catalog, inspect dataset schemas, and run SoQL queries across vaccination, surveillance, and behavioral-risk data, or query WONDER for deaths, population, and death rates by year, age, sex, and race. Runs as a stdio process, a local Streamable HTTP server, or the public hosted endpoint above.

Tools

ToolDescription
cdc_discover_datasetsSearch the CDC dataset catalog by keyword, category, or tag
cdc_get_dataset_schemaFetch column schema, row count, and metadata for a dataset
cdc_list_catalog_vocabularyList the catalog's category and tag values with their entry counts
cdc_query_datasetExecute SoQL queries — filter, aggregate, sort, full-text search, select fields
cdc_query_wonderQuery CDC WONDER for national mortality, population, and death rates across five databases

Resources

ResourceDescription
cdc://datasetsTop 50 most-viewed catalog entries, for orientation
cdc://datasets/{datasetId}Dataset metadata and the first 100 columns for a specific dataset

Both resources mirror data also reachable via cdc_discover_datasets and cdc_get_dataset_schema, for clients that surface resources but not tools.

Prompts

PromptDescription
analyze_health_trendGuided workflow for investigating a public health question across CDC data

Capability reference

cdc_discover_datasets tool

  • query, category, and tags filters (tags union, the other two intersect with them); up to 100 results per page (default 10; a larger limit, up to 10,000, is capped at 100 and the notice says so with the offset to continue from), with offset + limit capped at 10,000 (page_out_of_range past it); order is dataset_id (default, stable paging) or relevance
  • Results carry assetType, columnCount (0 marks a chart, map, story, file, or link that yields no data), an 8-name columnSample, and a description cut to 300 characters (cdc_get_dataset_schema with full_description: true returns the whole text); enrichment adds totalCount and appliedFilters
  • When a category or tags value matches nothing, the notice names the closest catalog values with their entry counts, e.g. Vaccination → "Vaccinations" (89 datasets)

cdc_get_dataset_schema tool

  • Four-by-four datasetId (e.g. bi63-dtpu); column_limit (default 100, any larger value up to the whole schema) and column_offset page wide schemas, reporting totalCount, truncated, and nextOffset
  • The dataset description is capped at 4,000 characters by default, ending in … with descriptionTruncated and descriptionLength set when cut; full_description: true returns the whole text. Column descriptions are never shortened
  • Columns carry fieldName, dataType, and description; rowCountSource says whether rowCount is a live count or Socrata's cached figure, which can lag an active dataset. A non-tabular asset fails with not_queryable

cdc_list_catalog_vocabulary tool

  • Every category comes back whole; the ~1,600 tags are ranked by entry count and paged with tag_limit (default 50; a value at or above the tag count returns them all) and tag_offset. filter (3+ characters) narrows both by word containment in either direction, not fuzzy matching
  • Each value carries datasetCount; enrichment reports vocabularySize, categoryCount, tagCount, truncated, and nextOffset, with truncationCeiling bounding the count of every tag after the page — the tags before tag_offset rank at or above the first tag shown

cdc_query_dataset tool

  • select, where, group, having, order, and full-text search; up to 5,000 rows per call (default 100; a larger limit is capped at 5,000 and says so), offset up to 1,000,000. Pair offset paging with an order, set from the first page, ending in a per-row tie-breaker: :id on ungrouped rows, the grouped columns on a grouped query. When the order lacks one, the notice says to restart from offset 0 with it
  • effectiveQuery echoes the SoQL clauses as sent, unencoded; truncated and nextOffset come from a one-row over-fetch, with no totalCount. A chart or map ID fails with not_queryable

cdc_query_wonder tool

databaseCDC databaseYearsRace groupsmcd_icd10
underlying_1999_2020 (default)D76 — Underlying Cause of Death1999–20204 bridged—
provisionalD176 — Provisional Mortality Statistics2018 → current year6 single-raceyes
underlying_2018_2024D158 — Underlying Cause of Death, Single Race2018–20246 single-race—
multiple_1999_2020D77 — Multiple Cause of Death1999–20204 bridgedyes
multiple_2018_2024D157 — Multiple Cause of Death, Single Race2018–20246 single-raceyes
  • group_by takes 1–4 of year, age_group, sex, race, national only. cause_icd10 and mcd_icd10 take an ICD-10 code, a chapter or block range (X40-X49), or a list of up to 50 matched as one union (an empty list reads as all causes). age_groups takes NS (age not stated) alone or with all eleven known groups, never beside only some of them, which CDC refuses. limit (any positive integer; the response budget bounds the page) and offset (max 10,000) page the table, and an empty page's notice says whether nothing matched or the offset ran past the end
  • Rows carry deaths, population, crude_rate, and age_adjusted_rate where age can be standardized. Cells CDC returns as Suppressed, Unreliable, or Not Applicable read null and are listed in cellNotes; messages reports whole rows CDC hid, and totalCount is exact
  • CDC rejects requests less than 15 seconds apart, so calls are spaced 16 seconds apart and queued one at a time

cdc://datasets resource

  • Top 50 catalog entries by popularity, each with id, name, assetType, category, columnCount, and updatedAt, plus the catalog totalCount
  • columnCount: 0 marks a non-tabular entry; cdc_discover_datasets searches and pages the full catalog

cdc://datasets/{datasetId} resource

  • Dataset metadata plus the first 100 columns as application/json, with columnCount and truncated; the description is capped at 4,000 characters, with descriptionTruncated and descriptionLength set when cut
  • Takes no selector; continue a wider schema with cdc_get_dataset_schema and column_offset, and read a cut description whole with its full_description: true. The notice names both when they apply

analyze_health_trend prompt

  • Arguments: topic required; timeRange and geography optional
  • Returns one user message that routes the question to cdc_query_wonder (national mortality) or the Socrata tools (everything else), then walks discover → inspect → baseline → compare → synthesize

Features

Built on @cyanheads/mcp-ts-core: stdio and Streamable HTTP transports, pluggable auth (none / jwt / oauth), swappable storage (in-memory, filesystem, Supabase, Cloudflare KV/R2/D1), structured logging with optional OpenTelemetry tracing.

CDC-specific:

  • The Socrata SODA API v2.1 over the CDC Open Data portal (~1,080 datasets); no auth required, and an optional app token raises rate limits
  • CDC WONDER mortality data from five databases covering 1999 through the current year, reached over its XML request API
  • The three Socrata tools take a domain input, allowlisted to data.cdc.gov (default) and chronicdata.cdc.gov. Both front the same catalog, so it picks the host that answers, not the datasets you can reach
  • category and tags match the catalog's controlled vocabularies (categories case-sensitively, tags case-insensitively), so a near miss returns nothing; cdc_list_catalog_vocabulary lists the real values
  • Socrata returns every value as a string, and a column like year is numeric in some datasets and text in others. Match WHERE literals to the column's dataType from the schema: numbers bare, strings single-quoted

Agent-friendly output:

  • Paging disclosed rather than implied: totalCount, truncated, nextOffset, and shown/cap. Both query tools bound each page by a 200,000-character budget over structuredContent and content[] together, so a wide page can end short of limit
  • Typed error contracts with a recovery hint on every declared reason, such as not_queryable, page_out_of_range, and invalid_query
  • Upstream gaps stay visible: WONDER status tokens per cell in cellNotes, hidden-row notices in messages, and rowCountSource on schema row counts
  • effectiveQuery echoes the SoQL clauses or a WONDER query summary, so a result can be reproduced

Getting started

Public Hosted Instance

A public instance is available at https://cdc.caseyjhand.com/mcp — no installation required. Point any MCP client at it via Streamable HTTP:

{
  "mcpServers": {
    "cdc-health-mcp-server": {
      "type": "streamable-http",
      "url": "https://cdc.caseyjhand.com/mcp"
    }
  }
}

Self-Hosted / Local

Add the following to your MCP client configuration file.

{
  "mcpServers": {
    "cdc-health-mcp-server": {
      "type": "stdio",
      "command": "bunx",
      "args": ["@cyanheads/cdc-health-mcp-server@latest"],
      "env": {
        "MCP_TRANSPORT_TYPE": "stdio",
        "MCP_LOG_LEVEL": "info"
      }
    }
  }
}

Or with npx (no Bun required):

{
  "mcpServers": {
    "cdc-health-mcp-server": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@cyanheads/cdc-health-mcp-server@latest"],
      "env": {
        "MCP_TRANSPORT_TYPE": "stdio",
        "MCP_LOG_LEVEL": "info"
      }
    }
  }
}

Or with Docker:

{
  "mcpServers": {
    "cdc-health-mcp-server": {
      "type": "stdio",
      "command": "docker",
      "args": ["run", "-i", "--rm", "-e", "MCP_TRANSPORT_TYPE=stdio", "ghcr.io/cyanheads/cdc-health-mcp-server:latest"]
    }
  }
}

For Streamable HTTP, set the transport and start the server:

MCP_TRANSPORT_TYPE=http MCP_HTTP_PORT=3010 bun run start:http
# Server listens at http://localhost:3010/mcp

Prerequisites

  • Bun v1.4.0 or higher (or Node.js v24+).
  • Optional: a Socrata app token for higher rate limits.

Installation

  1. Clone the repository:
git clone https://github.com/cyanheads/cdc-health-mcp-server.git
  1. Navigate into the directory:
cd cdc-health-mcp-server
  1. Install dependencies:
bun install
  1. Configure environment:
cp .env.example .env
# optionally set CDC_APP_TOKEN

Configuration

VariableDescriptionDefault
CDC_APP_TOKENSocrata app token; raises rate limits.none
CDC_BASE_URLSODA host for requests that name no domain, in practice only the cdc://datasets/{datasetId} resource. The Socrata tools choose their host with domain.https://data.cdc.gov
CDC_CATALOG_URLSocrata Discovery API base URL.https://api.us.socrata.com/api/catalog/v1
MCP_TRANSPORT_TYPETransport: stdio or http.stdio
MCP_HTTP_PORTHTTP server port.3010
MCP_SESSION_MODEHTTP session mode: stateless, stateful, or auto.stateless
MCP_AUTH_MODEAuthentication: none, jwt, or oauth.none
MCP_LOG_LEVELLog level (debug, info, warning, error, etc.).info
OTEL_ENABLEDEnable OpenTelemetry.false

See .env.example for the full list of optional overrides.

Running the server

Local development

  • Build and run the production version:

    # One-time build
    bun run rebuild
    
    # Run the built server
    bun run start:http
    # or
    bun run start:stdio
    
  • Run checks and tests:

    bun run devcheck  # Lints, formats, type-checks, and more
    bun run test      # Runs the test suite
    

Docker

docker build -t cdc-health-mcp-server .
docker run --rm -p 3010:3010 cdc-health-mcp-server

The Dockerfile defaults to HTTP transport, stateless session mode, and logs to /var/log/cdc-health-mcp-server. OpenTelemetry peer dependencies are installed by default; build with --build-arg OTEL_ENABLED=false to omit them.

Project structure

DirectoryPurpose
src/index.tscreateApp() entry point — registers tools/resources/prompts and inits services.
src/configServer-specific environment variable parsing and validation with Zod.
src/mcp-server/toolsTool definitions (*.tool.ts). Four Socrata tools and one WONDER tool.
src/mcp-server/resourcesResource definitions. Catalog overview and dataset detail.
src/mcp-server/promptsPrompt definitions. Health trend analysis workflow.
src/services/socrataSocrata service — catalog search, vocabularies, metadata, SoQL queries.
src/services/wonderCDC WONDER service — XML request builder, response parser, request spacing.
src/utilsShared helpers — HTML-to-text, table-cell escaping, vocabulary matching, response budget.
tests/Unit and integration tests mirroring src/.

Development guide

See CLAUDE.md for development guidelines and architectural rules. The short version:

  • Handlers throw, framework catches — no try/catch in tool logic
  • Use ctx.log for logging, ctx.state for storage
  • Register new tools and resources in the createApp() arrays in src/index.ts
  • Wrap external API calls: validate raw → normalize to domain type → return output schema; never fabricate missing fields

Contributing

Issues are welcome. Run checks and tests before submitting:

bun run devcheck
bun run test

License

Apache-2.0 — see LICENSE for details.

Featured
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Lid closed, agents working
Lid closed, agents working
Keeps your Mac awake while Claude Code, Codex or Cursor works. Lets it sleep when they are done.
Try free for 7 days →
Block distraction from your iPhone for freeBlock distraction from your iPhone for free
Block distraction from your iPhone for free
Block distracting apps from your iPhone permanently without a 3rd party app. Free and open source.
Block now (100% free) →
Granola, the best AI meeting recorder
Granola, the best AI meeting recorder
Notes, actions and memory. Without a meeting bot. First month 100% off.
Download for free →
belt - the only tool your agent needs
belt - the only tool your agent needs
belt cli automatically finds the best tools and skills for your agent. image, video, music, tts...
one prompt install →
Open Steps
Open Steps
Free an open-source skills that make AI coding agents easier to understand, verify, and control.
Download for free →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →
Agent, connect blockchain
Agent, connect blockchain
Connect your Claude agent to live crypto prices and trading routes via 1inch
Get the MCP →

Configuration

CDC_APP_TOKEN

Socrata app token for higher rate limits.

MCP_LOG_LEVELdefault: info

Sets the minimum log level for output (e.g., 'debug', 'info', 'warn').

MCP_HTTP_HOSTdefault: 127.0.0.1

The hostname for the HTTP server.

MCP_HTTP_PORTdefault: 3010

The port to run the HTTP server on.

MCP_HTTP_ENDPOINT_PATHdefault: /mcp

The endpoint path for the MCP server.

MCP_AUTH_MODEdefault: none

Authentication mode to use: 'none', 'jwt', or 'oauth'.

Categories
Search & Web CrawlingData & Analytics
Registryactive
Package@cyanheads/cdc-health-mcp-server
TransportSTDIO, HTTP
Resources3
Prompts1
Tools verifiedJun 10, 2026
UpdatedJun 4, 2026
View on GitHub

More from cyanheads

  • Met Museum Mcp Server3
  • Mcp Ts Core145
  • Courtlistener Mcp Server2
  • Open Meteo Mcp Server2
  • Treasury Fiscaldata Mcp Server2
  • Usaspending Mcp Server2
  • Worldbank Mcp Server2
  • Bls Labor Mcp Server1
  • Cpsc Recalls Mcp Server1
  • Devops Status Mcp Server1
  • Earthquake Mcp Server1
  • Eia Energy Mcp Server1
  • Eurostat Mcp Server1
  • Fcc Broadband Mcp Server1
  • Gdelt Mcp Server1
  • Onebusaway Mcp Server1
  • Openfda Mcp Server1
  • Openfec Mcp Server1
  • Openfoodfacts Mcp Server1
  • Openlibrary Mcp Server1
  • Openstates Mcp Server1
  • Orcid Mcp Server1
  • Reliefweb Mcp Server1
  • Smithsonian Mcp Server1

Related Search & Web Crawling MCP Servers

View all →
cyanheads avatar
Hn Mcp Server

cyanheads/hn-mcp-server

Browse Hacker News feeds, threads, and user profiles with full-text search.
3
domdomegg avatar
Open Food Facts

domdomegg/openfoodfacts-mcp

Search and contribute to the Open Food Facts database.
3
elnora-ai avatar
Elnora MCP Server

elnora-ai/elnora-mcp-server

AI-powered bioprotocol optimization — generate, search, and manage lab protocols via MCP
3
geiserx avatar
Telegram Archive Mcp

geiserx/telegram-archive-mcp

MCP server for Telegram Archive — search messages, browse chats, and access history
3
hampsterx avatar
Codex Mcp Bridge

hampsterx/codex-mcp-bridge

Wraps Codex CLI as MCP tools: query, review, search, assess, structured, sessions.
3
iamvibhorsingh avatar
Bbox Mcp Server

iamvibhorsingh/bbox-mcp-server

Geospatial toolkit for AI: spatial queries, coord conversion, H3, OSM search, map verification links
3