Query FDA data on drugs, food, devices, and recalls via openFDA. STDIO or Streamable HTTP.
- ✓Open-source license (Apache-2.0)
- ✓Actively maintained (<30d)
- ✓Clear description
- ✓Topics declared
- ✓Documented (README)
git clone https://github.com/cyanheads/openfda-mcp-server{
"mcpServers": {
"openfda": {
"command": "node",
"args": ["/path/to/openfda-mcp-server/dist/index.js"]
}
}
}MCP Servers overview
<div align="center"> <h1>@cyanheads/openfda-mcp-server</h1> <p><b>Query FDA data on drugs, food, devices, and recalls via openFDA. STDIO or Streamable HTTP.</b> <div>14 Tools</div> </p> </div> <div align="center"> [](https://www.npmjs.com/package/@cyanheads/openfda-mcp-server) [](./CHANGELOG.md) [](https://modelcontextprotocol.io/) [](./LICENSE) [](https://www.typescriptlang.org/) [](https://bun.sh/) </div> <div align="center"> [](https://github.com/cyanheads/openfda-mcp-server/releases/latest/download/openfda-mcp-server.mcpb) [](https://cursor.com/en/install-mcp?name=openfda-mcp-server&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsIkBjeWFuaGVhZHMvb3BlbmZkYS1tY3Atc2VydmVyIl0sImVudiI6eyJPUEVORkRBX0FQSV9LRVkiOiJ5b3VyLWFwaS1rZXkifX0=) [](https://vscode.dev/redirect?url=vscode:mcp/install?%7B%22name%22%3A%22openfda-mcp-server%22%2C%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40cyanheads/openfda-mcp-server%22%5D%2C%22env%22%3A%7B%22OPENFDA_API_KEY%22%3A%22your-api-key%22%7D%7D) [](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) </div> <div align="center"> **Public Hosted Server:** [https://openfda.caseyjhand.com/mcp](https://openfda.caseyjhand.com/mcp) </div> --- ## Tools Fourteen tools for querying FDA data across drugs, food, devices, animal/veterinary products, and recalls — plus an optional DataCanvas SQL surface for large result sets: | Tool | Description | |:---|:---| | `openfda_drug_profile` | One drug name → consolidated FDA profile: identity, label, adverse events, recalls, approval, shortage | | `openfda_search_adverse_events` | Search adverse event reports across drugs, food, and devices | | `openfda_search_animal_events` | Search adverse event reports for veterinary drugs and devices | | `openfda_search_drug_shortages` | Search FDA drug shortage records — status, availability, therapeutic category, manufacturer | | `openfda_search_tobacco_reports` | Search problem reports for tobacco products, e-cigarettes, and vaping devices | | `openfda_search_recalls` | Search enforcement reports and recall actions across drugs, food, and devices | | `openfda_count_values` | Aggregate and tally unique values for any field across any openFDA endpoint | | `openfda_describe_fields` | Return searchable field paths for an openFDA endpoint, grouped by category | | `openfda_get_drug_label` | Look up FDA drug labeling (package inserts / SPL documents) | | `openfda_search_drug_approvals` | Search the Drugs@FDA database for NDA/ANDA application approvals | | `openfda_search_device_clearances` | Search FDA device premarket notifications — 510(k) clearances and PMA approvals | | `openfda_lookup_ndc` | Look up drugs in the NDC (National Drug Code) Directory | | `openfda_dataframe_query` | Run read-only SQL over a result set staged on a DataCanvas (opt-in) | | `openfda_dataframe_describe` | List tables and column schemas staged on a DataCanvas (opt-in) | **The nine record-returning tools bound their page at ~24 KB.** openFDA record size is not something a caller can see in advance — a `drug/event` report averages ~34 KB against ~440 bytes for a `food/event` report, so `limit: 10` means very different things per endpoint. The eight multi-row search tools return as many records of the requested window as fit, then report the withheld count on `page_omitted` alongside the byte figure and the routes to the rest (the exact `skip` to continue from, a lower `limit`, `stage: true` for SQL, or `openfda_count_values` for a distribution). Whenever anything matched, at least one record comes back, whatever it measures. `openfda_get_drug_label` returns a section outline instead, since its payload is one document rather than many rows. ### `openfda_drug_profile` Resolve one drug name to its FDA identity, then return a consolidated profile in a single call — replacing four or five chained lookups. - Resolves a brand or generic name to canonical FDA identifiers once (generic name, NDC, RxCUI, SPL set ID), then keys every sub-query off that identity to avoid the identifier drift that breaks naive tool chaining - Single-ingredient resolution: a single-drug query won't resolve to a combination product - Sections: label highlights, adverse-event summary (top reactions, serious count), recall history, Drugs@FDA approval, and current shortage status - Best-effort — a miss on any section returns `null` rather than failing the whole call; use the dedicated tool for a deep dive into any area --- ### `openfda_search_adverse_events` 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. - Category selection: `drug`, `food`, or `device` — each returns different field schemas - Elasticsearch query syntax for filtering by product, reaction, seriousness, date range - Pagination via `limit` (up to 1000) and `skip` (openFDA's ceiling is 25000 — past it the call returns a typed `pagination_limit_reached` error with recovery guidance) - `drug/event` is the largest-record endpoint openFDA serves, so this is where the ~24 KB page budget bites hardest: a default `limit: 10` on drug reports typically returns one to three of them with the rest disclosed on `page_omitted`, where the same call on food reports returns all ten - Formatted output includes report ID, seriousness, patient demographics, reactions, drugs with characterization/indication/route, and all remaining fields --- ### `openfda_count_values` Aggregate and tally unique values for any field across any openFDA endpoint. Returns ranked term-count pairs sorted by count descending. - Works across all 20 openFDA endpoints (drugs, food, devices, animal/veterinary, tobacco, other) - Use `.exact` suffix on field names for whole-phrase counting - Optional `search` filter to scope the aggregation - Returns up to 1000 terms per query --- ### `openfda_search_recalls` Search enforcement reports and recall actions across drugs, food, and devices. - Supports `enforcement` (all categories) and `recall` (devices only) endpoints - Filter by classification (Class I/II/III), recalling firm, reason, status - Formatted output includes recall number, classification, product description, reason, distribution pattern --- ### `openfda_search_device_clearances` Search FDA device premarket notifications — 510(k) clearances and PMA approvals. - Two pathways: `510k` (174K+ records, most common) and `pma` (higher-risk devices) - Filter by applicant, product code, advisory committee, device name - Formatted output adapts to pathway: 510(k) shows K-number/clearance type, PMA shows supplement info --- ### `openfda_get_drug_label` Look up FDA drug labeling (package inserts / SPL documents). Check indications, warnings, dosage, contraindications, active ingredients, or any structured label section. - Search by brand name, generic name, manufacturer, or set ID - Formatted output dynamically renders all label sections and openfda metadata present in the record, in full — `content[]` and `structuredContent` carry the same text - A page over the ~24 KB inline budget returns `kind: "outline"` — the section names and their sizes — instead of the label text; re-call with `sections: [...]` for the ones you need - Outline sizes are summed across the page, so a section's cost scales with `limit` — the re-call guidance names a section measured to fit the budget at the requested limit and quotes its byte size - `sections` narrows each record to the requested keys plus metadata (`openfda`, `set_id`, `id`, `effective_time`, `version`); a selection over the budget is returned whole, never trimmed, with its serialized size reported - Default limit of 5 — labels are large documents (a warfarin label is ~130 KB on its own) --- ### `openfda_search_drug_approvals` Search the Drugs@FDA database for drug application approvals (NDAs and ANDAs). Returns application details, sponsor info, and full submission history. - Filter by brand name, sponsor, submission type, review priority - Formatted output includes products with active ingredients, dosage forms, routes, and marketing status - Full submission history with type, status, date, and review priority - Pagination via `limit` (up to 1000) and `skip` (openFDA's ceiling is 25000 — past it the call returns a typed `pagination_limit_reached` error with recovery guidance) --- ### `openfda_lookup_ndc` Look up drugs in the NDC (National Drug Code) Directory. Identify drug products by NDC code, find active ingredients, packaging details, or manufacturer info. - Search by product NDC, brand name, generic name, manufacturer, or active ingredient - Returns product details, active ingredients with strengths, and packaging information - Sortable by listing expiration date or other fields --- ### `openfda_search_animal_events` Search adverse event reports for veterinary drugs and devices submitted to the FDA Center for Veterinary Medicine (1.3M+ records). - Filter
What people ask about openfda-mcp-server
What is cyanheads/openfda-mcp-server?
+
cyanheads/openfda-mcp-server is mcp servers for the Claude AI ecosystem. Query FDA data on drugs, food, devices, and recalls via openFDA. STDIO or Streamable HTTP. It has 4 GitHub stars and its last recorded update is dated 2026-08-25.
How do I install openfda-mcp-server?
+
You can install openfda-mcp-server by cloning the repository (https://github.com/cyanheads/openfda-mcp-server) or following the README instructions on GitHub. ClaudeWave also provides quick install blocks on this page.
Is cyanheads/openfda-mcp-server safe to use?
+
Our security agent has analyzed cyanheads/openfda-mcp-server and assigned a Trust Score of 95/100 (tier: Verified). See the full breakdown of passed checks and flags on this page.
Who maintains cyanheads/openfda-mcp-server?
+
cyanheads/openfda-mcp-server is maintained by cyanheads. The last recorded GitHub activity is dated 2026-08-25, with 8 open issues.
Are there alternatives to openfda-mcp-server?
+
Yes. On ClaudeWave you can browse similar mcp servers at /categories/mcp, sorted by popularity or recent activity.
Deploy openfda-mcp-server to your cloud
Ship this repo to production in minutes. Each platform spins up its own environment with editable env vars.
Maintain this repo? Add a badge to your README
Drop the badge into your GitHub README to show it's tracked on ClaudeWave. Each badge links back to this page and reflects the live Trust Score.
[](https://claudewave.com/repo/cyanheads-openfda-mcp-server)<a href="https://claudewave.com/repo/cyanheads-openfda-mcp-server"><img src="https://claudewave.com/api/badge/cyanheads-openfda-mcp-server" alt="Featured on ClaudeWave: cyanheads/openfda-mcp-server" width="320" height="64" /></a>More MCP Servers
Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.
User-friendly AI Interface (Supports Ollama, OpenAI API, ...)
An open-source AI agent that brings the power of Gemini directly into your terminal.
Real-time global intelligence dashboard. AI-powered news aggregation, geopolitical monitoring, and infrastructure tracking in a unified situational awareness interface
The fastest path to AI-powered full stack observability, even for lean teams.
🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl!