Borrowing it
Nothing to install: this file belongs to cyanheads/cdc-health-mcp-server. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/cyanheads/cdc-health-mcp-server/main/AGENTS.mdgit clone --depth 1 https://github.com/cyanheads/cdc-health-mcp-serverWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/instructions/cyanheads/cdc-health-mcp-server/agents-md)<a href="https://agentmods.dev/instructions/cyanheads/cdc-health-mcp-server/agents-md"><img src="https://agentmods.dev/badge/instructions/cyanheads/cdc-health-mcp-server/agents-md/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/instructions/cyanheads/cdc-health-mcp-server/agents-md"><img src="https://agentmods.dev/badge/instructions/cyanheads/cdc-health-mcp-server/agents-md.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.15111 | $0.15111 |
| Opus 5.5 | $0.06044 | $0.06044 |
| Sonnet 5.5 | $0.03022 | $0.03022 |
| Haiku 4.5 | $0.01511 | $0.01511 |
Grade A, and why
cdc-health-mcp-server AGENTS.md scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 4d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 518 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Agent Protocol
Server: cdc-health-mcp-server
Version: 0.11.0
Framework: @cyanheads/mcp-ts-core ^0.13.18
Engines: Bun ≥1.4.0, Node ≥24.0.0
MCP SDK: @modelcontextprotocol/server ^2.4.0
Zod: ^4.6.7
Read the framework docs first:
node_modules/@cyanheads/mcp-ts-core/CLAUDE.mdcontains the full API reference — builders, Context, error codes, exports, patterns. This file covers server-specific conventions only.
Domain
Wraps the CDC Open Data portal (~1,080 datasets) via the Socrata SODA API v2.1. No auth required — optional app token for higher rate limits.
Core workflow: discover → inspect schema → query. The catalog is heterogeneous (disease surveillance, mortality, behavioral risk, vaccinations, environmental, injury, etc.), so the server provides a discovery-first approach rather than hard-coding dataset knowledge.
API Surface
Design doc: docs/design.md — full parameter tables, error modes, API endpoints, and implementation notes.
The four Socrata tools take an allowlisted domain input (data.cdc.gov default, chronicdata.cdc.gov) — Zod z.enum rejects any other host before the handler runs (the SSRF guard). The two cdc://datasets… resources stay on the default host. cdc_query_wonder hits a different CDC system and takes no domain; its database enum picks the dataset code in the upstream path, and is the same kind of guard.
| Definition | Type | Purpose |
|---|---|---|
cdc_discover_datasets |
tool | Search catalog by keyword/category/tag/asset type. Entry point. Trimmed payload — assetType, permalink, columnCount + an 8-name columnSample and a 300-char description, cut after the markup comes off, plus accessPoints (the publisher-labelled URLs of a link entry) and parentIds (the datasets a chart, map, filter, or story is built on); full column detail comes from cdc_get_dataset_schema. limit is the page (default 10, up to 10,000, never clamped): offset + limit above 10,000 fails page_out_of_range, checked on the raw limit. asset_types (the assetType values) sends their plurals as one only parameter. order defaults to relevance when query is set and dataset_id otherwise, at every offset; a relevance page with matches remaining carries a notice that offset paging can repeat or skip entries. |
cdc_get_dataset_schema |
tool | Fetch column schema, row count, metadata for a dataset ID. Full-detail surface, windowed — column_limit (default 100, no maximum: it slices a schema fetched whole) / column_offset, with totalCount/truncated/nextOffset enrichment. The dataset description is capped at 4,000 characters by default (truncatePlainText), with descriptionTruncated/descriptionLength set when cut; full_description: true returns it whole. Column descriptions are never shortened. rowCount prefers a live count(*), with rowCountSource naming live or the cached fallback. Provenance, where the publisher recorded it: parentId (a filter's source dataset), and temporalCoverage, updateFrequency, geographicCoverage, citation, license, attribution as the publisher's own text, never parsed. Fails not_queryable on a non-tabular asset instead of returning empty columns; a chart or map's failure names its parent dataset (parentId) in the message and recovery hint. |
cdc_list_catalog_vocabulary |
tool | The catalog's category and tags vocabularies with entry counts, per allowlisted domain. Categories whole; tags ranked by count and paged — tag_limit (default 50, no maximum: it slices a vocabulary fetched whole) / tag_offset, with vocabularySize/categoryCount/tagCount/truncated/truncationCeiling/nextOffset enrichment. truncationCeiling bounds only the tags from nextOffset on — on a later page the tags before tag_offset outrank it. filter narrows both vocabularies before the page is cut. |
cdc_query_dataset |
tool | Execute SoQL queries — filter, aggregate, sort, full-text search. limit is the page, clamped to 1,000 rows — effectiveQuery echoes $limit=1000, and the notice names the clamp when rows remain past the page (SODA sets no maximum of its own; select narrows each row of a wide dataset); up to the clamp a page ends short of limit only at the end of the result set. Continuation is measured by an over-fetch probe, not the row count; discloses truncated/shown/cap/nextOffset, never a totalCount. An empty page at offset > 0 spends one probe at offset 0 to tell an offset past the end from a no-match. Fails not_queryable when every row comes back with no fields and the asset has no columns, naming the chart or map's parent dataset. |
cdc_query_wonder |
tool | Query CDC WONDER for national deaths, population, crude/age-adjusted rates, each rate with its 95% confidence interval (<rate>_lower/<rate>_upper). Grouped by year, month, age group, sex, race, Hispanic origin, or underlying cause (ICD chapter or sub-chapter, the 113-cause list, the 15 leading causes, injury intent), filtered by ICD-10 cause. A database enum selects one of five mortality databases — D76 (default), D176 provisional, D158, D77, D157. limit is the page, lowered to a 10,000-row per-call ceiling — the table-size bound, so one call holds any table the handler accepts; an omitted limit returns the rest of the table from offset. limit/offset page the parsed rows with exact totalCount/truncated/nextOffset, re-basing cellNotes onto the page while caveats/messages stay whole. |
cdc://datasets |
resource | 50 most-viewed catalog entries for orientation — carries assetType + columnCount, since the page mixes charts/stories/filters in with datasets. |
cdc://datasets/{datasetId} |
resource | Dataset metadata + the first 100 columns and a description capped at 4,000 characters, carrying columnCount/truncated/descriptionTruncated/descriptionLength, the same parentId and publisher provenance fields as cdc_get_dataset_schema, and one composed notice naming column_offset and full_description: true on cdc_get_dataset_schema. Takes no selector — the SDK's UriTemplate.match compiles RFC 6570 query variables as required, so {?column_limit,column_offset} would stop the bare URI matching at all. |
analyze_health_trend |
prompt | Guided workflow: pick the source (WONDER for national mortality, leading-cause, Hispanic-origin, and seasonal questions; Socrata otherwise), then discover → inspect → query → compare (rates by their confidence intervals) → synthesize (provisional partial year, updateFrequency/temporalCoverage). Routing is prose the reader acts on — the handler never classifies the topic. |
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 4d ago Changed · +22 lines · +2,736 tokens per session 8a938130d194
- 25d ago Changed · +3 lines · +846 tokens per session df79ac283c43
- 1mo ago Changed · +2 lines · +439 tokens per session 698704fe5655
- 1mo ago Changed · +2 lines · +526 tokens per session c0b678a0a268
- 1mo ago Changed · +12 lines · +1,219 tokens per session aeede9654a1e
- 1mo ago First seen · 477 lines · 9,345 tokens per session scan A 54ecf09b3dbe
cdc-health-mcp-server AGENTS.md is an instructions file published in the GitHub repository cyanheads/cdc-health-mcp-server (5 stars, last pushed 5d ago), licensed Apache-2.0. It adds 15,111 tokens to every session, about $0.0604 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-17.
cdc-health-mcp-server AGENTS.md compared with instructions from other repositories
| Mod | Type | Stars | Last push | Licence | Scan | Tokens | Works with |
|---|---|---|---|---|---|---|---|
| cdc-health-mcp-server AGENTS.mdcyanheads/cdc-health-mcp-server | Instructions file | 5 | 5d ago | Apache-2.0 | A | 15,111 | Codex, OpenCode |
| vscode buildNext.instructions.mdmicrosoft/vscode | Instructions file | 195k | yesterday | MIT | A | 9,719 | GitHub Copilot |
| next.js AGENTS.mdvercel/next.js | Instructions file | 143k | yesterday | MIT | A | 7,461 | Codex, OpenCode |
| langchain AGENTS.mdlangchain-ai/langchain | Instructions file | 149k | yesterday | MIT | A | 4,680 | Codex, OpenCode |
| vscode oss-third-party-notices.instructions.mdmicrosoft/vscode | Instructions file | 195k | yesterday | MIT | A | 5,516 | GitHub Copilot |
| vscode copilot-instructions.mdmicrosoft/vscode | Instructions file | 195k | yesterday | MIT | A | 3,093 | GitHub Copilot |
| deepseek-harness AGENTS.mddeepseek-ai/deepseek-harness | Instructions file | 274k | 2d ago | MIT | A | 4,313 | Codex, OpenCode |