cdc-health-mcp-server

v0.6.10 pre-1.0

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

cdc.caseyjhand.com/mcp
claude mcp add --transport http cdc-health-mcp-server https://cdc.caseyjhand.com/mcp
codex mcp add cdc-health-mcp-server --url https://cdc.caseyjhand.com/mcp
{
  "mcpServers": {
    "cdc-health-mcp-server": {
      "url": "https://cdc.caseyjhand.com/mcp"
    }
  }
}
gemini mcp add --transport http cdc-health-mcp-server https://cdc.caseyjhand.com/mcp
{
  "mcpServers": {
    "cdc-health-mcp-server": {
      "command": "bunx",
      "args": [
        "mcp-remote",
        "https://cdc.caseyjhand.com/mcp"
      ]
    }
  }
}
{
  "mcpServers": {
    "cdc-health-mcp-server": {
      "type": "http",
      "url": "https://cdc.caseyjhand.com/mcp"
    }
  }
}
curl -X POST https://cdc.caseyjhand.com/mcp \
  -H "Content-Type: application/json" \
  -H "MCP-Protocol-Version: 2025-11-25" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-11-25","capabilities":{},"clientInfo":{"name":"curl","version":"1.0.0"}}}'

Tools

3

cdc_discover_datasets

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

read
invocation
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "cdc_discover_datasets",
    "arguments": {}
  }
}
schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "query": {
      "description": "Full-text search across dataset names and descriptions (e.g., \"diabetes mortality\", \"lead exposure children\").",
      "type": "string"
    },
    "category": {
      "description": "Filter by domain category (e.g., \"NNDSS\", \"Vaccinations\", \"Behavioral Risk Factors\").",
      "type": "string"
    },
    "tags": {
      "description": "Filter by domain tags (e.g., [\"covid19\", \"surveillance\"]).",
      "type": "array",
      "items": {
        "type": "string",
        "description": "Tag value"
      }
    },
    "limit": {
      "default": 10,
      "description": "Results to return (default 10, max 100).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "offset": {
      "default": 0,
      "description": "Pagination offset for browsing beyond first page (max 9999).",
      "type": "integer",
      "minimum": 0,
      "maximum": 9999
    }
  },
  "required": [
    "limit",
    "offset"
  ],
  "additionalProperties": false
}
view source ↗

cdc_get_dataset_schema

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.

read
invocation
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "cdc_get_dataset_schema",
    "arguments": {
      "datasetId": "<datasetId>"
    }
  }
}
schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "datasetId": {
      "type": "string",
      "pattern": "^[a-z0-9]{4}-[a-z0-9]{4}$",
      "description": "Four-by-four dataset identifier (e.g., \"bi63-dtpu\"). Obtain from cdc_discover_datasets."
    }
  },
  "required": [
    "datasetId"
  ],
  "additionalProperties": false
}
view source ↗

cdc_query_dataset

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.

read
invocation
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "cdc_query_dataset",
    "arguments": {
      "datasetId": "<datasetId>"
    }
  }
}
schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "datasetId": {
      "type": "string",
      "pattern": "^[a-z0-9]{4}-[a-z0-9]{4}$",
      "description": "Four-by-four dataset identifier (e.g., \"bi63-dtpu\"). Obtain from cdc_discover_datasets."
    },
    "search": {
      "description": "Full-text search across all text columns. For precise filtering use the where parameter instead.",
      "type": "string"
    },
    "select": {
      "description": "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 count\" with group=\"{column}\" and order=\"count DESC\".",
      "type": "string"
    },
    "where": {
      "description": "SoQL WHERE clause. Strings must be single-quoted: \"state='California' AND year=2020\".",
      "type": "string"
    },
    "group": {
      "description": "SoQL GROUP BY clause. Requires aggregate functions in select.",
      "type": "string"
    },
    "having": {
      "description": "SoQL HAVING clause. Filters aggregated results.",
      "type": "string"
    },
    "order": {
      "description": "SoQL ORDER BY clause. Field name with optional ASC/DESC: \"total_deaths DESC\".",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Max rows to return (default 100, max 5000).",
      "type": "integer",
      "minimum": 1,
      "maximum": 5000
    },
    "offset": {
      "default": 0,
      "description": "Row offset for pagination.",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    }
  },
  "required": [
    "datasetId",
    "limit",
    "offset"
  ],
  "additionalProperties": false
}
view source ↗

Resources

2

Top 50 CDC datasets by popularity with names, categories, and update timestamps. Provides an overview of the CDC data landscape for orientation. Use cdc_discover_datasets for full catalog search with filtering and pagination.

uri cdc://datasets mime application/json

Dataset metadata and column schema for a specific CDC dataset, addressable by URI. Same payload as cdc_get_dataset_schema.

uri cdc://datasets/{datasetId} mime application/json

Prompts

1

Structured workflow for investigating a public health question across CDC data. Guides through: discover relevant datasets, inspect schemas, query for baseline data, compare across time/geography/demographics, and synthesize findings.

  • topicrequired — The health topic or question to investigate (e.g., "diabetes mortality trends by state", "childhood vaccination coverage over time").
  • timeRange — Time period of interest (e.g., "2015-2023", "last 10 years"). Defaults to all available years.
  • geography — Geographic scope — "national", a specific state name (e.g., "California"), or "all states" for comparison. Defaults to national.