DailyMed MCP by usefulapi
by usefulapi.io · remote · no sign-in to list tools · v1.16.4 · published by io.usefulapi
Search DailyMed drug labels, SPLs, NDCs and packaging.
12 tools: 4 change things and 8 only read.
Scanned Oct 22, 2026
- Deletes or cancels0Claude Code: deny
- Can't be undone0Claude Code: ask
- Changes things4Claude Code: ask: see these tools
- Only reads8Claude Code: allow: see these tools
4 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http dailymed https://dailymed.usefulapi.io/mcpFindings
Matches of fixed checks, with the text they matched.
The server marks "dailymed_label_history" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true}; The name "dailymed_label_history" says "label": a word for a change.
The server marks "dailymed_label_ndcs" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true}; The name "dailymed_label_ndcs" says "label": a word for a change.
The server marks "dailymed_label_media" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true}; The name "dailymed_label_media" says "label": a word for a change.
The server marks "dailymed_label_packaging" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true}; The name "dailymed_label_packaging" says "label": a word for a change.
Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
12 tools
Changes things 4Claude Code: ask
dailymed_label_historyList every published version (spl_version + published_date) of a label for a SETID — useful to see how a drug's labeling has changed over time.1 finding
Why it is in this group
- The name "dailymed_label_history" says "label": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "dailymed_label_history" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true}; The name "dailymed_label_history" says "label": a word for a change.
Description, as the server wrote it List every published version (spl_version + published_date) of a label for a SETID — useful to see how a drug's labeling has changed over time. DailyMed v2: GET /spls/{setid}/history.
Annotations the server declares
- title: Get label version history
- readOnlyHint: true
dailymed_label_mediaList media assets (product/packaging images, with mime_type and URL) for a label's current version, for a SETID.1 finding
Why it is in this group
- The name "dailymed_label_media" says "label": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "dailymed_label_media" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true}; The name "dailymed_label_media" says "label": a word for a change.
Description, as the server wrote it List media assets (product/packaging images, with mime_type and URL) for a label's current version, for a SETID. DailyMed v2: GET /spls/{setid}/media.
Annotations the server declares
- title: Get label media (images)
- readOnlyHint: true
dailymed_label_ndcsList the National Drug Codes (package-level NDCs) associated with a label's current version, for a SETID.1 finding
Why it is in this group
- The name "dailymed_label_ndcs" says "label": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "dailymed_label_ndcs" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true}; The name "dailymed_label_ndcs" says "label": a word for a change.
Description, as the server wrote it List the National Drug Codes (package-level NDCs) associated with a label's current version, for a SETID. DailyMed v2: GET /spls/{setid}/ndcs.
Annotations the server declares
- title: Get NDC codes for a label
- readOnlyHint: true
dailymed_label_packagingGet packaging descriptions plus product names and active ingredients (name + strength) for each product in a label, by SETID.1 finding
Why it is in this group
- The name "dailymed_label_packaging" says "label": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "dailymed_label_packaging" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true}; The name "dailymed_label_packaging" says "label": a word for a change.
Description, as the server wrote it Get packaging descriptions plus product names and active ingredients (name + strength) for each product in a label, by SETID. DailyMed v2: GET /spls/{setid}/packaging.
Annotations the server declares
- title: Get label packaging & ingredients
- readOnlyHint: true
Only reads 8Claude Code: allow
dailymed_get_labelFetch the complete Structured Product Label for a SETID as HL7 v3 SPL XML — the full FDA-approved labeling: indications, dosage, warnings, boxed warning, adverse reactions, active/…No findings
Why it is in this group
- The name "dailymed_get_label" says "get": a word for reading.
Description, as the server wrote it Fetch the complete Structured Product Label for a SETID as HL7 v3 SPL XML — the full FDA-approved labeling: indications, dosage, warnings, boxed warning, adverse reactions, active/inactive ingredients, etc. NOTE: DailyMed serves the full document only as XML (there is no JSON form), so this returns raw XML text. Use dailymed_search_labels first to find the setid. DailyMed v2: GET /spls/{setid}.xml.
Annotations the server declares
- title: Get full SPL label document (XML)
- readOnlyHint: true
dailymed_list_application_numbersList FDA application numbers (NDA/ANDA/BLA) with their marketing category code, across all labels (paginated).No findings
Why it is in this group
- The name "dailymed_list_application_numbers" says "list": a word for reading.
Description, as the server wrote it List FDA application numbers (NDA/ANDA/BLA) with their marketing category code, across all labels (paginated). DailyMed v2: GET /applicationnumbers.
Annotations the server declares
- title: List FDA application numbers
- readOnlyHint: true
dailymed_list_drug_classesList pharmacologic drug classes linked to labels (code, coding system, type — e.g.No findings
Why it is in this group
- The name "dailymed_list_drug_classes" says "list": a word for reading.
Description, as the server wrote it List pharmacologic drug classes linked to labels (code, coding system, type — e.g. EPC Established Pharmacologic Class — and name). DailyMed v2: GET /drugclasses.
Annotations the server declares
- title: List drug classes
- readOnlyHint: true
dailymed_list_drug_namesList drug names in DailyMed (name + name_type B=brand/G=generic).No findings
Why it is in this group
- The name "dailymed_list_drug_names" says "list": a word for reading.
Description, as the server wrote it List drug names in DailyMed (name + name_type B=brand/G=generic). Pass drug_name to filter by a substring — a fast way to discover exact spellings before searching labels. DailyMed v2: GET /drugnames.
Annotations the server declares
- title: List / search drug names
- readOnlyHint: true
dailymed_list_ndcsList National Drug Codes across all labels in DailyMed (paginated; the full set is large).No findings
Why it is in this group
- The name "dailymed_list_ndcs" says "list": a word for reading.
Description, as the server wrote it List National Drug Codes across all labels in DailyMed (paginated; the full set is large). DailyMed v2: GET /ndcs.
Annotations the server declares
- title: List all NDC codes
- readOnlyHint: true
dailymed_list_rxcuisList product-level RxNorm concept identifiers (rxcui + rxstring + rxtty term type) known to DailyMed (paginated).No findings
Why it is in this group
- The name "dailymed_list_rxcuis" says "list": a word for reading.
Description, as the server wrote it List product-level RxNorm concept identifiers (rxcui + rxstring + rxtty term type) known to DailyMed (paginated). DailyMed v2: GET /rxcuis.
Annotations the server declares
- title: List product-level RxCUIs
- readOnlyHint: true
dailymed_list_uniisList FDA UNII codes and their active-moiety names (paginated).No findings
Why it is in this group
- The name "dailymed_list_uniis" says "list": a word for reading.
Description, as the server wrote it List FDA UNII codes and their active-moiety names (paginated). Use a unii_code to filter labels in dailymed_search_labels. DailyMed v2: GET /uniis.
Annotations the server declares
- title: List UNII active moieties
- readOnlyHint: true
dailymed_search_labelsSearch Structured Product Labels (SPLs) — one label per marketed drug product.No findings
Why it is in this group
- The name "dailymed_search_labels" says "search": a word for reading.
Description, as the server wrote it Search Structured Product Labels (SPLs) — one label per marketed drug product. Filter by drug name, NDC, RxCUI, UNII, application (NDA/ANDA) number, marketing category, or publish date. Returns setid, title, spl_version and published_date for each match (use the setid with dailymed_get_label and the label_* tools). DailyMed v2: GET /spls.
Annotations the server declares
- title: Search FDA drug labels (SPLs)
- readOnlyHint: true
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Exfil surface
Which tools read private data, which read text someone else can write, and which can send data out. One of each is a path a prompt injection can use.
No private-data, untrusted-input, outbound path in this server alone: no tool is tagged private-data or untrusted-input or outbound.
- Reads private data0
- Reads files, mail, messages, databases, secrets, calendars or repositories.
- Reads text others write0
- Brings in text someone else can write: web pages, inbound email, messages, issues and comments.
- Can send data out0
- Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.
Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.
Install
Pinned to version 1.16.4. Values in angle brackets are yours to fill in.
claude mcp add --transport http dailymed https://dailymed.usefulapi.io/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change or a way out, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__dailymed__dailymed_search_labels",
"mcp__dailymed__dailymed_get_label",
"mcp__dailymed__dailymed_list_drug_names",
"mcp__dailymed__dailymed_list_ndcs",
"mcp__dailymed__dailymed_list_rxcuis",
"mcp__dailymed__dailymed_list_uniis",
"mcp__dailymed__dailymed_list_drug_classes",
"mcp__dailymed__dailymed_list_application_numbers"
],
"ask": [
"mcp__dailymed__dailymed_label_history",
"mcp__dailymed__dailymed_label_ndcs",
"mcp__dailymed__dailymed_label_media",
"mcp__dailymed__dailymed_label_packaging"
],
"deny": []
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. A read that can send data out (it takes a URL, say) asks first too. It assumes the server is installed as dailymed. Review it before you use it.