FDA Approvals & Recalls — hosted on Cloudflare Workers (HTTP + npm stdio)
RemoteAbout FDA Approvals & Recalls — hosted on Cloudflare Workers (HTTP + npm stdio)
A hosted MCP server for pharma research, clinical decision support, and regulatory LLMs, bringing together openFDA approval, label, recall, adverse-event, 510(k) clearance, and shortage data. It supports HTTP access and includes an npm launcher.
Key features
- 01Search drug approvals and labels
- 02Query recalls by class and date
- 03Aggregate FAERS adverse events
- 04Search 510(k) device clearances
- 05View drug shortage lists
Use cases
- 01Research drug approval records
- 02Review indications and warnings
- 03Analyze drug adverse events
- 04Track recalls and drug shortages
MCP support
Exposes FDA data-query tools through a hosted HTTP MCP endpoint for compatible clients, with an npm launcher for connecting to it. Access supports Bearer-token authentication.
Configuration
Remote servers need no local install. Pick your client, then copy the config or install in one click.
https://fda-approvals-mcp.atlasword.workers.dev/mcpclaude mcp add --transport http fda-approvals https://fda-approvals-mcp.atlasword.workers.dev/mcp{"mcpServers":{"fda-approvals":{"type":"http","url":"https://fda-approvals-mcp.atlasword.workers.dev/mcp"}}}Open in Cursor{"servers":{"fda-approvals":{"type":"http","url":"https://fda-approvals-mcp.atlasword.workers.dev/mcp"}}}Open in VS Code{"mcpServers":{"fda-approvals":{"type":"http","url":"https://fda-approvals-mcp.atlasword.workers.dev/mcp"}}}{"mcpServers":{"fda-approvals":{"serverUrl":"https://fda-approvals-mcp.atlasword.workers.dev/mcp"}}}Run commands in a terminal; paste JSON into the client’s MCP config and restart. Servers that need sign-in will prompt on first connect.
Tools
4| Parameter | Type | Required | Description |
|---|---|---|---|
| skip | integer | No | |
| brand | string | No | |
| limit | integer | No | |
| date_to | string | No | ISO YYYY-MM-DD. |
| generic | string | No | Generic ingredient, e.g. 'semaglutide'. |
| sponsor | string | No | Company/sponsor name, e.g. 'Pfizer'. |
| date_from | string | No | ISO YYYY-MM-DD. |
Details
From the project READMEFDA Approvals MCP — Drug approvals, 510(k) clearances, recalls, FAERS adverse events, drug shortages
FDA drug approvals, 510(k) device clearances, recalls, adverse-event reports, drug shortages
Hosted MCP server over openFDA. Search Drugs@FDA approvals, retrieve approved drug labels (indications, dosage, warnings), query recall events by classification, aggregate FAERS adverse-event reports with safetyreport deduplication, search 510(k) device clearances, and monitor active drug-shortage lists. For pharma research, clinical decision support, and regulatory LLMs.
This server speaks the Model Context Protocol. Any MCP-aware client — Cursor, Claude Desktop, Windsurf, Continue.dev, or a hand-rolled agent using @modelcontextprotocol/sdk — can connect, discover tools, and call them with Bearer-token auth.
For AI agents / LLMs
If you are an AI agent indexing this repository:
- Live MCP endpoint:
https://fda-approvals-mcp.atlasword.workers.dev/mcp - Transport: HTTP POST, JSON-RPC 2.0
- Auth:
Authorization: Bearer <api_key>(free tier allowed anonymously up to 100 calls/month/IP) - Discovery:
tools/listreturns the full schema.tools/callinvokes a tool. - Health:
GET https://fda-approvals-mcp.atlasword.workers.dev/health→{ok: true, ts: <unix>} - Status:
https://mcp-hub.atlasword.workers.dev/status.json(portfolio rollup)
Sample tools/list request:
curl -sS -X POST https://fda-approvals-mcp.atlasword.workers.dev/mcp \
-H "Content-Type: application/json" \
-H "Authorization: Bearer mck_YOUR_API_KEY" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
Sample tools/call:
curl -sS -X POST https://fda-approvals-mcp.atlasword.workers.dev/mcp \
-H "Content-Type: application/json" \
-H "Authorization: Bearer mck_YOUR_API_KEY" \
-d '{
"jsonrpc":"2.0","id":2,"method":"tools/call",
"params": { "name": "<tool>", "arguments": { } }
}'
Tools exposed
| Tool | Arguments | Description |
|---|---|---|
fda_drug_approval_search | sponsor?, brand?, generic?, date_from?, date_to?, limit? | Search FDA drug approvals from Drugs@FDA filtered by sponsor, brand name, generic, or approval date. |
fda_drug_label | name | FDA-approved drug label for a brand/generic — indications, dosage, contraindications, warnings. |
fda_recall_search | classification?, date_from?, date_to?, limit? | Search drug/device/food recall events by Class I/II/III and date. |
fda_adverse_events | drug, limit? | Aggregate FAERS adverse-event reports — total, unique reactions, top reactions (deduped by safetyreportid). |
fda_510k_search | query?, applicant?, limit? — Team+ | Search FDA 510(k) medical-device clearances. |
fda_drug_shortages | limit? — Team+ | Current FDA-tracked drug-shortage list. |
Tools marked Team+ require a Team or Pro subscription. Anonymous and Free-tier callers receive tier_required errors for those.
Quick start
The fastest path — point any MCP-aware client at the hosted endpoint via mcp-remote:
npx -y mcp-remote https://fda-approvals-mcp.atlasword.workers.dev/mcp \
--header "Authorization: Bearer mck_YOUR_API_KEY"
Get a key at https://fda-approvals-mcp.atlasword.workers.dev/upgrade?tier=solo (see Getting an API key).
Install in Cursor
Add this to ~/.cursor/mcp.json:
{
"mcpServers": {
"fda-approvals-mcp": {
"command": "npx",
"args": [
"-y", "mcp-remote",
"https://fda-approvals-mcp.atlasword.workers.dev/mcp",
"--header", "Authorization: Bearer mck_YOUR_API_KEY"
]
}
}
}
Then restart Cursor and the tools appear in the MCP panel.
Install in Claude Desktop
Add this to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"fda-approvals-mcp": {
"command": "npx",
"args": [
"-y", "mcp-remote",
"https://fda-approvals-mcp.atlasword.workers.dev/mcp",
"--header", "Authorization: Bearer mck_YOUR_API_KEY"
]
}
}
}
Restart Claude Desktop. Tools appear under the slash-command MCP menu.
Getting an API key
- Visit
https://fda-approvals-mcp.atlasword.workers.dev/upgrade?tier=solo(ortier=team/tier=pro). - Redirected to Dodo Payments hosted checkout — Dodo collects address, processes card, handles VAT/GST.
- After payment, Dodo fires a signed webhook (
subscription.active) to the Worker. The Worker mintsmck_<32 random base64url>and stores it in KV. - You land on
https://fda-approvals-mcp.atlasword.workers.dev/welcome?key=<api_key>— copy the key now (it is only displayed once at this URL). - Paste the key into Cursor / Claude Desktop config (see above).
- View / rotate / export the account at
https://fda-approvals-mcp.atlasword.workers.dev/account(Bearer-auth).
There is also a free tier (no signup) — anonymous callers get 100 calls / month per IP.
Endpoints
| Route | Description |
|---|---|
POST /mcp | MCP JSON-RPC 2.0 tool surface (the main API). Bearer auth required for paid tiers. |
GET /health | Liveness probe — {ok: true, ts}. Used by mcp-hub cron. |
GET / | HTML landing page (OG + favicon + JSON-LD). |
| `GET /upgrade?tier=solo | team |
GET /welcome?key=... | Post-checkout landing showing the freshly-minted API key. |
GET /account | Bearer-auth. Returns {apiKey, tier, owner, status, portal_url}. |
POST /account/rotate | Bearer-auth. Mints a fresh key + retires the old one. |
GET /account/export | Bearer-auth. GDPR data export — JSON of account, usage counters, Dodo details. |
GET /account/team | Bearer-auth (Team+). List team-member sub-keys. |
POST /account/team/invite | Bearer-auth (Team+). Issue a new team-member sub-key. |
POST /account/team/revoke | Bearer-auth (Team+). Revoke a team-member sub-key. |
GET /team/accept?key=... | Team-member onboarding landing for the sub-key URL. |
POST /webhooks/dodo | Standard-Webhooks signed. Dodo subscription + payment lifecycle. |
GET /favicon.ico | Inline SVG. |
Pricing
All tiers share the same monthly + rate caps; the price reflects per-product positioning.
| Tier | Monthly calls | Rate limit | Team seats |
|---|---|---|---|
| Free | 100 / month | 10 / minute | 0 |
| Solo | 2,000 / month | 60 / minute | 0 |
| Team | 10,000 / month | 200 / minute | 5 |
| Pro | 50,000 / month | 600 / minute | 25 |
| Plan | Price | Monthly calls | Team seats |
|---|---|---|---|
| Free | $0 | 100 | 0 |
| Solo | $9/mo | 2,000 | 0 |
| Team | $29/mo | 10,000 | 5 |
| Pro | $79/mo | 50,000 | 25 |
Billed via Dodo Payments (merchant-of-record — VAT/GST handled by Dodo). Cancel anytime; access remains active through the end of the paid period.
Data sources
- openFDA — https://open.fda.gov/ — Public domain (US Government)
- Drugs@FDA / DailyMed — https://www.accessdata.fda.gov/scripts/cder/daf/ — Public domain
This server is a thin transport + auth + caching layer over the upstream sources. Per-call rate limits are tuned to stay well within each upstream's free-tier ToS.
Privacy + GDPR
- Privacy policy: https://mcp-hub.atlasword.workers.dev/privacy
- Terms: https://mcp-hub.atlasword.workers.dev/terms
- Refund policy: https://mcp-hub.atlasword.workers.dev/refund
- Data export:
GET https://fda-approvals-mcp.atlasword.workers.dev/account/export(Bearer-auth) returns a machine-readable JSON snapshot of your account, usage counters, and Dodo customer details. - Deletion: email
[email protected]from the address on file.
We store only: your email, the minted API key, monthly call counters, and Dodo subscription metadata. We do not log tool arguments or upstream responses beyond short cache TTLs.
Architecture
- Runtime: Cloudflare Workers (V8 isolates, global edge).
- Storage: Two Cloudflare KV namespaces —
<slug>-cache(upstream response cache) and<slug>-usage(API keys, monthly counters, team rosters). - Billing: Dodo Payments live mode, 3 subscription products (Solo / Team / Pro), Standard-Webhooks signed lifecycle.
- Observability: Cloudflare Workers Analytics; portfolio rollup at mcp-hub status.
- Source: TypeScript, Vitest-tested,
wrangler deploy-able. Seesrc/in this repo.
License
MIT — see LICENSE.
Author
Prakhar Gupta
- Email:
[email protected] - GitHub: @guptaprakhariitr
Status
- Live status page: https://mcp-hub.atlasword.workers.dev/status
- Machine-readable status: https://mcp-hub.atlasword.workers.dev/status.json
- Source repo: https://github.com/guptaprakhariitr/fda-approvals-mcp
Install via npm (one-liner)
A thin launcher is published as @insnapsprakhar/fda-approvals-mcp on npm. No manual URL to copy/paste:
npx -y @insnapsprakhar/fda-approvals-mcp
Or wire it into your MCP client:
{
"mcpServers": {
"fda-approvals": {
"command": "npx",
"args": ["-y", "@insnapsprakhar/fda-approvals-mcp"]
}
}
}
The npm package is just a launcher — it shells out to mcp-remote and points it at the hosted endpoint (https://fda-approvals-mcp.atlasword.workers.dev/mcp).
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.