← Back to search

io.github.cyanheads/openfda-mcp-server

cyanheads streamable_http Scanned 20d ago

Query FDA data on drugs, food, devices, and recalls via openFDA. STDIO or Streamable HTTP.

B
80.7 / 100

Versions

0.1.10latest
first seen Jun 5, 2026
0.1.9
first seen May 19, 2026
PermissionsTool SafetyAuthAnnotationsCode QualityStabilitySpecVuln HistoryAuthorTransparencyCommunity

Tools 15

openfda_count_values
annotations: verified low

Aggregate and tally unique values for any field across any openFDA endpoint. Returns ranked term-count pairs sorted by count descending. Pair with openfda_search_adverse_events, openfda_search_drug_approvals, openfda_search_device_clearances, openfda_search_recalls, openfda_get_drug_label, or openfda_lookup_ndc when sample records help interpret the aggregates.

term string count number input object output object termCount number lastUpdated string
readOnlyHint true
openfda_get_drug_label
annotations: verified low

Look up FDA drug labeling (package inserts / SPL documents). Check indications, warnings, dosage, contraindications, active ingredients, or any structured label section. A label runs to tens of thousands of tokens, so a page that exceeds the inline budget returns the list of available sections instead; re-call with sections to pull the ones you need.

skip number input object output object
readOnlyHint true
openfda_dataframe_query
annotations: verified low

Run a read-only SQL SELECT against a DataCanvas table staged by an openFDA search tool (call one with stage=true; its response carries canvas_id + canvas_table). Enables GROUP BY, COUNT/SUM/AVG, time-series, and joins across the staged result set without re-paging the API. Call openfda_dataframe_describe first to get the exact table and column names. Results are capped at the canvas row limit — when truncated is true, page the rest with ORDER BY plus LIMIT/OFFSET. Scalar fields are stored as text (CAST for numeric math); nested objects/arrays are JSON columns — read them with DuckDB json functions, e.g. json_extract_string(openfda, '$.brand_name[0]'). Only SELECT is allowed — DDL, DML, COPY, and file-reading functions are blocked.

input object output object canvas_id string
readOnlyHint true openWorldHint false idempotentHint true
openfda_search_device_clearances
annotations: verified low

Search FDA device premarket notifications — 510(k) clearances and PMA approvals.${STAGING_WORKFLOW}

skip number input object limit number total number output object lastUpdated string
readOnlyHint true
ASPIRIN
annotations: verified low

skip number limit number total number output object lastUpdated string totalResults number
readOnlyHint true
openfda_search_drug_shortages
annotations: verified low

Search FDA drug shortage records. Returns per-product shortage status, availability, therapeutic category, dosage form, manufacturer, and dates. Use to check whether a drug is currently in shortage, find all oncology drugs with supply issues, or retrieve the openfda block (brand_name, product_ndc, rxcui) to chain into openfda_get_drug_label or openfda_lookup_ndc.${STAGING_WORKFLOW}

skip number input object limit number total number output object lastUpdated string
readOnlyHint true
openfda_search_drug_approvals
annotations: verified low

Search the Drugs@FDA database for drug application approvals (NDAs and ANDAs). Returns application details, sponsor info, and full submission history. Pair with openfda_get_drug_label to read the approved label, or openfda_count_values to aggregate by sponsor_name, product_type, or route.${STAGING_WORKFLOW}

skip number input object limit number total number output object lastUpdated string
readOnlyHint true
openfda_search_animal_events
annotations: verified low

Search adverse event reports for veterinary drugs and devices submitted to the FDA Center for Veterinary Medicine. Records include animal species, breed, age, weight, drug name and route, adverse reactions (using VeDDRA terminology), and outcome. Use to investigate safety signals for veterinary products, find reports by animal species or drug, or explore reaction patterns.${STAGING_WORKFLOW}

skip number input object limit number total number output object lastUpdated string
readOnlyHint true
openfda_describe_fields
annotations: mismatch low

Return the searchable field paths for an openFDA endpoint, grouped by category with type and description. Use before constructing a search query to find the correct dotted field path — field names differ per endpoint and are not discoverable from the tool schema alone.

note string path string type string input object label string output object endpoint string queryTips string
readOnlyHint true
openfda_search_adverse_events
annotations: verified low

Search adverse event reports across drugs, food, and devices. Use to investigate safety signals, find reports for a specific product, or explore reactions by demographics.${STAGING_WORKFLOW}

skip number input object limit number total number output object lastUpdated string
readOnlyHint true
openfda_search_tobacco_reports
annotations: verified low

Search problem reports submitted to the FDA for tobacco products, including e-cigarettes, vaping products, cigarettes, and smokeless tobacco. Reports capture product type, reported health problems (e.g. seizure, chest pain), product problems (e.g. exploding battery), whether a non-user was affected, and submission date. Use to investigate safety signals, find reports by product type, or analyze health effects.${STAGING_WORKFLOW}

skip number input object limit number total number output object lastUpdated string
readOnlyHint true
openfda_dataframe_describe
annotations: verified low

List the tables and column schemas on a DataCanvas staged by an openFDA search tool. Call before openfda_dataframe_query to discover the exact table name, column names, and DuckDB types needed for valid SQL. row_count is the full staged result set, not the inline preview count. Columns typed JSON hold nested openFDA objects/arrays — query them with DuckDB json functions.

input object output object
readOnlyHint true openWorldHint false idempotentHint true
openfda_search_recalls
annotations: verified low

Search enforcement reports and recall actions across drugs, food, and devices.${STAGING_WORKFLOW}

skip number input object limit number total number output object lastUpdated string
readOnlyHint true
drug
annotations: verified low

drug string term string rxcui string total number dosage string output object brand_names array indications string product_ndc string seriousCount number
readOnlyHint true
openfda_reserved_key_probe
annotations: verified low

Probe definition asserting the reserved-key guard fires.

q string error string input object output object
readOnlyHint true

Permissions 3

network medium
Server uses network capabilities via: fetch()
shell high
Server uses shell capabilities via: child_process, spawn(), spawnSync()
env_vars low
Server uses env_vars capabilities via: process.env

Scan Findings 41

info
Tool 'openfda_count_values' annotations are consistent annotation_checker · 80%
info
Tool 'openfda_get_drug_label' annotations are consistent annotation_checker · 80%
info
Tool 'openfda_dataframe_query' annotations are consistent annotation_checker · 80%
info
Tool 'openfda_search_device_clearances' annotations are consistent annotation_checker · 80%
info
Tool 'ASPIRIN' annotations are consistent annotation_checker · 80%
info
Tool 'openfda_search_drug_shortages' annotations are consistent annotation_checker · 80%
info
Tool 'openfda_search_drug_approvals' annotations are consistent annotation_checker · 80%
info
Tool 'openfda_search_animal_events' annotations are consistent annotation_checker · 80%
medium
Tool 'openfda_describe_fields' claims readOnly but schema suggests write operation annotation_checker · 70%
info
Tool 'openfda_search_adverse_events' annotations are consistent annotation_checker · 80%
info
Tool 'openfda_search_tobacco_reports' annotations are consistent annotation_checker · 80%
info
Tool 'openfda_dataframe_describe' annotations are consistent annotation_checker · 80%
info
Tool 'openfda_search_recalls' annotations are consistent annotation_checker · 80%
info
Tool 'drug' annotations are consistent annotation_checker · 80%
info
Tool 'openfda_reserved_key_probe' annotations are consistent annotation_checker · 80%
medium
OAuth implementation without PKCE auth_checker · 75%
info
Sandbox failed to start for behavioral verification behavioral_verifier · 100%
info
package.json metadata manifest_parser · 100%
info
Tool: openfda_count_values manifest_parser · 75%
info
Tool: openfda_get_drug_label manifest_parser · 75%
info
Tool: openfda_dataframe_query manifest_parser · 75%
info
Tool: openfda_search_device_clearances manifest_parser · 75%
info
Tool: ASPIRIN manifest_parser · 75%
info
Tool: openfda_search_drug_shortages manifest_parser · 75%
info
Tool: openfda_search_drug_approvals manifest_parser · 75%
info
Tool: openfda_search_animal_events manifest_parser · 75%
info
Tool: openfda_describe_fields manifest_parser · 75%
info
Tool: openfda_search_adverse_events manifest_parser · 75%
info
Tool: openfda_search_tobacco_reports manifest_parser · 75%
info
Tool: openfda_dataframe_describe manifest_parser · 75%
info
Tool: openfda_search_recalls manifest_parser · 75%
info
Tool: drug manifest_parser · 75%
info
Tool: openfda_reserved_key_probe manifest_parser · 75%
info
Required env vars (4) manifest_parser · 80%
info
Sandbox failed to start for output poisoning scan output_poisoning · 100%
medium
Permission: network access detected permission_analyzer · 70%
high
Permission: shell access detected permission_analyzer · 95%
low
Permission: env_vars access detected permission_analyzer · 90%
info
SBOM generated: 16 components sbom_generator · 100%
high
Hardcoded Password found in cyanheads-openfda-mcp-server-93b55f8/framework-skills/api-utils/references/security.md secret_scanner · 65%
medium
No build provenance detected (SLSA L0) slsa_assessor · 90%