mcpbeat Sign in

Openfda MCP Server

answering

Openfda MCP Server is answering right now. Last checked 12 min ago. 354 installs a week from npm. It exposes 14 tools. Last commit 16 Sep 2026.

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

Installs per day peak 183 · avg 37 · +318% w/w
a month agotoday
Uptime history 47 days of history · worst day 0%
47 days agonow
100.0%
Uptime 24h
91 of 91 checks
14
Tools
read from the server
333 ms
Response time
average over 24h
354
Installs / week
npm and PyPI

What changed 16

Every tool that appeared, vanished or quietly changed what it asks for. Recorded since 25 August 2026. No other catalogue keeps this.

16 Sep a tool changed version
25 Aug 14 tools changed the parameters they ask for openfda_count_values, openfda_dataframe_describe, openfda_dataframe_query and 11 more
25 Aug a tool changed version

Nothing serious here today

Today is the operative word: we check Openfda MCP Server every 15 minutes and re-read its code on every release. Watch it and you find out the day that stops being true.

Three servers free · no card

Connect this server

Endpoint below is the one we actually reach during checks — not the one copied from a README. Last verified 12 min ago.

run in your terminal
claude mcp add openfda-mcp-server --transport http https://openfda.caseyjhand.com/mcp
~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "openfda-mcp-server": {
      "url": "https://openfda.caseyjhand.com/mcp"
    }
  }
}
~/.codex/config.toml
[mcp_servers.openfda-mcp-server]
url = "https://openfda.caseyjhand.com/mcp"
.cursor/mcp.json
{
  "mcpServers": {
    "openfda-mcp-server": {
      "url": "https://openfda.caseyjhand.com/mcp"
    }
  }
}
.vscode/mcp.json
{
  "mcpServers": {
    "openfda-mcp-server": {
      "url": "https://openfda.caseyjhand.com/mcp"
    }
  }
}

This one needs environment variables set before it will start: OPENFDA_API_KEY (Free API key from open.fda.gov — increases daily limit from 1K to 120K requests.), MCP_TRANSPORT_TYPE (Must be set to 'http' for streamable HTTP transport.), MCP_HTTP_HOST (The hostname for the HTTP server.), MCP_HTTP_PORT (The port to run the HTTP server on.), MCP_HTTP_ENDPOINT_PATH (The endpoint path for the MCP server.), MCP_AUTH_MODE (Authentication mode to use: 'none', 'jwt', or 'oauth'.), OPENFDA_MIRROR_ENABLED (Serve exact-key lookups for drug/label, drug/ndc, drug/enforcement, and drug/drugsfda from a local bulk mirror instead of the API. Off by default; the initial harvest runs out-of-band via the mirror:init script.), OPENFDA_MIRROR_PATH (Directory holding one SQLite file per mirrored dataset.), OPENFDA_MIRROR_REFRESH_CRON (Cron expression for the in-process mirror refresh. HTTP transport only; stdio operators run mirror:refresh from the host. Requires the optional node-cron peer dependency.), OPENFDA_MIRROR_FALLBACK_LIVE (Fall back to the live API when the mirror is cold, missing the record, or failing. Disable to fail loudly instead.), OPENFDA_MIRROR_REFRESH_TIMEOUT_MS (Wall-clock budget for one scheduled refresh before it is aborted. Raise it for drug/label, the only multi-partition dataset.), OPENFDA_MIRROR_BASE_URL (Host serving the openFDA bulk download manifest. Override only to harvest from a private mirror of the dumps.), MCP_LOG_LEVEL (Sets the minimum log level for output (e.g., 'debug', 'info', 'warn').). The author declared them in the registry entry; get the values from the project itself.

Available tools 14

Read directly from the server with tools/list, grouped by what they act on. If a tool disappears, we record the date.

openfda
openfda_count_values
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.
openfda_dataframe_describe
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.
openfda_dataframe_query
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.
openfda_describe_fields
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.
openfda_drug_profile
Resolve one drug name to its FDA identity, then fan out in parallel across the bounded per-drug openFDA endpoints and merge into one profile: identity, label highlights, adverse-event summary, recall history, Drugs@FDA approval, and shortage status. Replaces chaining openfda_get_drug_label, openfda_search_adverse_events, openfda_search_recalls, openfda_search_drug_approvals, and openfda_search_drug_shortages — and reconciles the identifier drift between endpoints that makes that chaining error-prone. Each section is best-effort: a miss returns null rather than failing the call. For deep dives into any one area, use the dedicated tool.
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. 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.
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. Pair with openfda_get_drug_label using the returned brand_name or set_id to read the package insert.
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.
openfda_search_animal_events
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.
openfda_search_device_clearances
Search FDA device premarket notifications — 510(k) clearances and PMA approvals.
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. Pair with openfda_get_drug_label to read the approved label, or openfda_count_values to aggregate by sponsor_name, product_type, or route.
openfda_search_drug_shortages
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.
openfda_search_recalls
Search enforcement reports and recall actions across drugs, food, and devices.
openfda_search_tobacco_reports
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.

Endpoints

URLTransportStateLatencyChecked
https://openfda.caseyjhand.com/mcp streamable-http answering 428 ms 12 min ago

Alternatives to Openfda MCP Server

same job, measured the same way
I
OpenFDA Safety Data
by taru0208

Search FDA safety data: drug adverse events, recalls, and device events.

answering
Secedgar MCP Server
by cyanheads

Query SEC EDGAR filings, XBRL financials, and company data through MCP. STDIO & Streamable HTTP.

716 installs/wk 16 tools answering
Npi Providers MCP Server
by cyanheads

Search NPPES providers and resolve NUCC specialty codes via MCP over STDIO or Streamable HTTP.

78 installs/wk 3 tools answering
FDA Recall Alerts — Food & Product Safety (fdarecall)
by a2awire

FDA recalls: food, drugs, devices; safety alerts. Register in-session — free testnet funds.

16 tools answering
DevExpress Documentation
by devexpress

Streamable HTTP MCP server for DevExpress documentation search and retrieval.

2 tools answering
Usgs Water MCP Server
by cyanheads

Query real-time and historical USGS water data from ~8,000 stream gages and groundwater wells.

81 installs/wk 7 tools answering
Sfda Drugs
by pipeworx-io

SFDA Drugs — Saudi Food and Drug Authority drug data

answering
C
Reviewable Artifacts
by bereviewable

Reviewable workspace discovery and private HTML review creation via stdio MCP.

local only

Openfda MCP Server — questions

Answers built from our own checks of this server.

What can Openfda MCP Server do?
It exposes 14 tools, read directly from the server on our last check. Among them: openfda_count_values, openfda_dataframe_describe, openfda_dataframe_query, openfda_describe_fields, openfda_drug_profile, openfda_get_drug_label and 8 more. The full list with descriptions is on this page — we take it from the server itself via tools/list, not from a README. How MCP servers expose tools in the first place →
Is Openfda MCP Server working right now?
We send a real MCP handshake every 15 minutes. Over the last 24 hours 91 of 91 checks got a reply (100.0%), average response time 333 ms. The bar chart above shows every period we have measured.
How do I connect Openfda MCP Server?
Copy the ready config from this page — we generate it for Claude Code, Claude Desktop, Codex, Cursor and VS Code, each with the file path that client actually reads. It is a remote server, so there is nothing to install — the client connects to the address.
Does Openfda MCP Server need an API key?
No. Openfda MCP Server completed a full MCP handshake with us as an anonymous client and listed its tools without asking for anything. All 14 of them are readable on this page. This is what we observed, not what the docs claim.
How fast is Openfda MCP Server?
It answers our handshake in 333 ms on average, which is faster than 46% of all working MCP servers we measure. The comparison comes from our own checks across the whole registry, every 15 minutes.
How many people use Openfda MCP Server?
The npm package @cyanheads/openfda-mcp-server was installed 354 times in the last week. Week over week that is +318%. We show installs rather than GitHub stars on purpose: a star is a bookmark, an install is someone actually running it.
Is Openfda MCP Server open source?
Yes — it is published under the Apache-2.0 licence, written in TypeScript, 4 stars on GitHub and 8 open issues. The source link is on this page, so you can read exactly what it does with your data before you connect it.