# cdc-health-mcp-server

Lets your agent search the CDC open data catalog, read dataset schemas, run SoQL queries and pull mortality figures from CDC WONDER.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 5
- Author: cyanheads
- License: Apache-2.0 · policy=link-only · description only; the file stays with the author
- Source: https://github.com/cyanheads/cdc-health-mcp-server
- Updated: 2026-10-17
- HTML: https://affpapa.org/en/nevibecode/mcp/cdc-health-mcp-server

## What it does

The server sits between your agent and two CDC sources: the open data portal and CDC WONDER. Five tools come with it. One searches the dataset catalog, another returns a dataset's columns and row count, a third lists the catalog's categories and tags with entry counts, a fourth runs SoQL queries with filtering, grouping and full-text search, and the fifth queries WONDER for national mortality, population and death rates. Two resources mirror part of that: `cdc://datasets` for the most-viewed catalog entries and `cdc://datasets/{datasetId}` for one dataset's metadata. A prompt named `analyze_health_trend` walks through a health question step by step.

Transport is STDIO or Streamable HTTP. A public host at `https://cdc.caseyjhand.com/mcp` means you can skip running anything locally. The local route needs `npx` and a CDC app token passed as `CDC_APP_TOKEN`, alongside `MCP_LOG_LEVEL`, `MCP_TRANSPORT_TYPE`, `MCP_HTTP_HOST` and `MCP_HTTP_PORT`.

Watch the identifiers. `cdc_get_dataset_schema` expects a four-by-four `datasetId` such as `bi63-dtpu`, and charts or maps in the catalog are not tabular — querying one fails with `not_queryable`. Paging through rows without a unique tie-breaker in `order` gives unstable results, and the response tells you when that is the case.

## Requirements
- Needs: Node.js (commands run via npx)
- Remote server: `https://cdc.caseyjhand.com/mcp`
- Environment variables: `CDC_APP_TOKEN`, `MCP_LOG_LEVEL`, `MCP_TRANSPORT_TYPE`, `MCP_HTTP_HOST`, `MCP_HTTP_PORT`, `MCP_HTTP_ENDPOINT_PATH`, `MCP_AUTH_MODE` — keys and tokens: ask the human for the values, never commit them or put them in shared files.

## Install

### Claude Code (native platform)

1. **Platform CLI: remote server**
```bash
claude mcp add --transport http cdc-health-mcp-server https://cdc.caseyjhand.com/mcp
```

2. **Platform CLI**
```bash
claude mcp add --env CDC_APP_TOKEN=<CDC_APP_TOKEN> --env MCP_LOG_LEVEL=<MCP_LOG_LEVEL> --env MCP_TRANSPORT_TYPE=<MCP_TRANSPORT_TYPE> --env MCP_HTTP_HOST=<MCP_HTTP_HOST> --env MCP_HTTP_PORT=<MCP_HTTP_PORT> --transport stdio cdc-health-mcp-server -- npx -y @cyanheads/cdc-health-mcp-server
```
Replace <…> with your own values. 2 more environment variables are in the server README

### Codex

1. **Platform CLI: remote server**
```bash
codex mcp add cdc-health-mcp-server --url https://cdc.caseyjhand.com/mcp
```

2. **Platform CLI**
```bash
codex mcp add cdc-health-mcp-server --env CDC_APP_TOKEN=<CDC_APP_TOKEN> --env MCP_LOG_LEVEL=<MCP_LOG_LEVEL> --env MCP_TRANSPORT_TYPE=<MCP_TRANSPORT_TYPE> --env MCP_HTTP_HOST=<MCP_HTTP_HOST> --env MCP_HTTP_PORT=<MCP_HTTP_PORT> -- npx -y @cyanheads/cdc-health-mcp-server
```
Replace <…> with your own values. 2 more environment variables are in the server README

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "cdc-health-mcp-server": {
            "url": "https://cdc.caseyjhand.com/mcp"
        }
    }
}
```
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "cdc-health-mcp-server": {
            "command": "npx",
            "args": [
                "-y",
                "@cyanheads/cdc-health-mcp-server"
            ],
            "env": {
                "CDC_APP_TOKEN": "<CDC_APP_TOKEN>",
                "MCP_LOG_LEVEL": "<MCP_LOG_LEVEL>",
                "MCP_TRANSPORT_TYPE": "<MCP_TRANSPORT_TYPE>",
                "MCP_HTTP_HOST": "<MCP_HTTP_HOST>",
                "MCP_HTTP_PORT": "<MCP_HTTP_PORT>"
            }
        }
    }
}
```
Replace <…> with your own values. 2 more environment variables are in the server README

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "cdc-health-mcp-server": {
            "type": "http",
            "url": "https://cdc.caseyjhand.com/mcp"
        }
    }
}
```
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "cdc-health-mcp-server": {
            "type": "stdio",
            "command": "npx",
            "args": [
                "-y",
                "@cyanheads/cdc-health-mcp-server"
            ],
            "env": {
                "CDC_APP_TOKEN": "<CDC_APP_TOKEN>",
                "MCP_LOG_LEVEL": "<MCP_LOG_LEVEL>",
                "MCP_TRANSPORT_TYPE": "<MCP_TRANSPORT_TYPE>",
                "MCP_HTTP_HOST": "<MCP_HTTP_HOST>",
                "MCP_HTTP_PORT": "<MCP_HTTP_PORT>"
            }
        }
    }
}
```
Replace <…> with your own values. 2 more environment variables are in the server README

### Gemini CLI

1. **Platform CLI: remote server**
```bash
gemini mcp add -t http cdc-health-mcp-server https://cdc.caseyjhand.com/mcp
```

2. **Platform CLI**
```bash
gemini mcp add -e CDC_APP_TOKEN=<CDC_APP_TOKEN> -e MCP_LOG_LEVEL=<MCP_LOG_LEVEL> -e MCP_TRANSPORT_TYPE=<MCP_TRANSPORT_TYPE> -e MCP_HTTP_HOST=<MCP_HTTP_HOST> -e MCP_HTTP_PORT=<MCP_HTTP_PORT> cdc-health-mcp-server npx -y @cyanheads/cdc-health-mcp-server
```
Replace <…> with your own values. 2 more environment variables are in the server README

## When to use it
- find a CDC dataset by keyword, category or tag
- inspect a dataset's columns and row count before querying
- pull mortality by year, sex and race from CDC WONDER
- filter and aggregate catalog data with SoQL
- list catalog categories and tags with entry counts

## Example prompts
- Find CDC datasets about vaccination and show me their schemas
- Pull mortality by year and sex from the `underlying_2018_2024` database
- Count catalog entries per category in the CDC catalog

## Similar
- [World Monitor](https://affpapa.org/en/nevibecode/mcp/world-monitor.md) — MCP server · ★ 89408
- [Scrapling MCP Server](https://affpapa.org/en/nevibecode/mcp/scrapling-mcp-server.md) — MCP server · ★ 89433
- [MCP Toolbox for Databases](https://affpapa.org/en/nevibecode/mcp/googleapis-mcp-toolbox-for-databases.md) — MCP server · ★ 16717
- [PostHog MCP Server](https://affpapa.org/en/nevibecode/mcp/posthog-mcp-server.md) — MCP server · ★ 40409
- [dbx](https://affpapa.org/en/nevibecode/mcp/dbx.md) — MCP server · ★ 27669
- [Metabase](https://affpapa.org/en/nevibecode/mcp/metabase.md) — MCP server · ★ 49845

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
