
Security News
/Research
Wallet-Draining npm Package Impersonates Nodemailer to Hijack Crypto Transactions
Malicious npm package impersonates Nodemailer and drains wallets by hijacking crypto transactions across multiple blockchains.
@uh-joan/fda-mcp-server
Advanced tools
MCP server for FDA drug information lookup and safety data. Provides access to FDA drug labels, adverse events, and regulatory information through the openFDA API.
A Model Context Protocol (MCP) server that provides access to the FDA's openFDA database with advanced query capabilities. This server enables AI assistants and applications to search for drug information, safety data, adverse events, recalls, and regulatory information using powerful boolean logic, field targeting, wildcards, and complex multi-condition queries.
child*
, *5*
), range queries ([65+TO+*]
), special modifiers (_exists_
, _missing_
)npm install -g @uh-joan/fda-mcp-server
git clone https://github.com/uh-joan/fda-mcp-server.git
cd fda-mcp-server
npm install
npm link
Add the following to your Claude Desktop configuration file:
Location:
~/Library/Application Support/Claude/claude_desktop_config.json
%APPDATA%\Claude\claude_desktop_config.json
Configuration:
{
"mcpServers": {
"fda": {
"command": "fda-mcp-server",
"env": {
"FDA_API_KEY": "your_api_key_here"
}
}
}
}
FDA_API_KEY
(optional): Your FDA API key for higher rate limits. Register at https://open.fda.gov/apis/fda_drug_info
Unified tool for FDA drug information lookup and safety data.
Parameter | Type | Required | Default | Description |
---|---|---|---|---|
method | string | Yes | - | Operation type: lookup_drug |
search_term | string | Yes | - | Search term or complex query (supports AND/OR, wildcards, ranges, field combinations) |
search_type | string | No | general | Type of search: general , label , adverse_events , recalls , shortages |
fields_for_general | string | No | - | Specific field for general drug data searches (34 available fields) |
fields_for_adverse_events | string | No | - | Specific field for adverse events searches (66 available fields) |
fields_for_label | string | No | - | Specific field for label searches (167 available fields) |
fields_for_recalls | string | No | - | Specific field for recalls and enforcement searches (39 available fields) |
fields_for_shortages | string | No | - | Specific field for drug shortages searches (44 available fields) |
limit | integer | No | 10 | Maximum results to return (1-100) |
lookup_drug
)Search for comprehensive drug information with different search types and optional field targeting:
Comprehensive Search (All Fields):
{
"method": "lookup_drug",
"search_term": "aspirin",
"search_type": "general"
}
Field-Specific Search:
{
"method": "lookup_drug",
"search_term": "Discontinued",
"search_type": "general",
"fields_for_general": "products.marketing_status"
}
Complex Boolean Query:
{
"method": "lookup_drug",
"search_term": "openfda.generic_name:aspirin+AND+products.dosage_form:TABLET",
"search_type": "general"
}
Drug Labels and Prescribing Information:
{
"method": "lookup_drug",
"search_term": "Lipitor",
"search_type": "label"
}
Label Field-Specific Search:
{
"method": "lookup_drug",
"search_term": "pregnancy",
"search_type": "label",
"fields_for_label": "warnings"
}
Adverse Events and Safety Data:
{
"method": "lookup_drug",
"search_term": "metformin",
"search_type": "adverse_events",
"limit": 25
}
Drug Recalls and Safety Alerts:
{
"method": "lookup_drug",
"search_term": "insulin",
"search_type": "recalls",
"limit": 20
}
Drug Shortages:
{
"method": "lookup_drug",
"search_term": "bupivacaine",
"search_type": "shortages",
"limit": 10
}
The FDA MCP Server supports powerful openFDA query syntax for advanced searches:
AND Queries - Find results matching multiple criteria:
{
"method": "lookup_drug",
"search_term": "openfda.generic_name:ibuprofen+AND+products.dosage_form:TABLET",
"search_type": "general"
}
OR Queries - Find results matching any criteria:
{
"method": "lookup_drug",
"search_term": "openfda.generic_name:ibuprofen+OR+openfda.brand_name:advil",
"search_type": "general"
}
Prefix wildcards - Find names starting with a pattern:
{
"method": "lookup_drug",
"search_term": "child*",
"search_type": "general",
"fields_for_general": "openfda.brand_name"
}
General wildcards - Find any field containing a pattern:
{
"method": "lookup_drug",
"search_term": "*5*",
"search_type": "general"
}
Age ranges - Find adverse events for specific age groups:
{
"method": "lookup_drug",
"search_term": "patient.patientonsetage:[65+TO+*]",
"search_type": "adverse_events"
}
Date ranges - Find events within date ranges:
{
"method": "lookup_drug",
"search_term": "receiptdate:[2023-01-01+TO+2023-12-31]",
"search_type": "adverse_events"
}
Field exists - Find records where a field has any value:
{
"method": "lookup_drug",
"search_term": "_exists_:serious",
"search_type": "adverse_events"
}
Field missing - Find records where a field is empty:
{
"method": "lookup_drug",
"search_term": "_missing_:companynumb",
"search_type": "adverse_events"
}
Advanced adverse events - Serious events in elderly patients:
{
"method": "lookup_drug",
"search_term": "patient.drug.medicinalproduct:acetaminophen+AND+serious:1+AND+patient.patientonsetage:[65+TO+*]",
"search_type": "adverse_events"
}
Grouped conditions - Multiple drug names with conditions:
{
"method": "lookup_drug",
"search_term": "(patient.drug.medicinalproduct:(cetirizine+OR+loratadine))+AND+serious:2",
"search_type": "adverse_events"
}
Geographic filtering - Events by country with drug and severity:
{
"method": "lookup_drug",
"search_term": "occurcountry:US+AND+patient.drug.medicinalproduct:lipitor+AND+serious:1",
"search_type": "adverse_events"
}
// Search across all FDA database fields (267 total fields)
{
"method": "lookup_drug",
"search_term": "aspirin",
"search_type": "general"
}
General Search Fields (34 available):
// Find all discontinued drugs
{
"method": "lookup_drug",
"search_term": "Discontinued",
"search_type": "general",
"fields_for_general": "products.marketing_status"
}
// Search by manufacturer
{
"method": "lookup_drug",
"search_term": "Pfizer",
"search_type": "general",
"fields_for_general": "openfda.manufacturer_name"
}
// Find drugs by dosage form
{
"method": "lookup_drug",
"search_term": "TABLET",
"search_type": "general",
"fields_for_general": "products.dosage_form"
}
Adverse Events Fields (66 available):
// Find headache reactions
{
"method": "lookup_drug",
"search_term": "headache",
"search_type": "adverse_events",
"fields_for_adverse_events": "patient.reaction.reactionmeddrapt"
}
// Find serious adverse events
{
"method": "lookup_drug",
"search_term": "1",
"search_type": "adverse_events",
"fields_for_adverse_events": "serious"
}
// Find events by patient gender (1=male, 2=female)
{
"method": "lookup_drug",
"search_term": "1",
"search_type": "adverse_events",
"fields_for_adverse_events": "patient.patientsex"
}
Label Search Fields (167 available):
// Find labels with specific warnings
{
"method": "lookup_drug",
"search_term": "pregnancy",
"search_type": "label",
"fields_for_label": "warnings"
}
// Search for drug interactions
{
"method": "lookup_drug",
"search_term": "warfarin",
"search_type": "label",
"fields_for_label": "drug_interactions"
}
// Find dosage information for specific conditions
{
"method": "lookup_drug",
"search_term": "pediatric",
"search_type": "label",
"fields_for_label": "dosage_and_administration"
}
Recalls Fields (39 available):
// Find recalls by recalling firm
{
"method": "lookup_drug",
"search_term": "Pfizer",
"search_type": "recalls",
"fields_for_recalls": "recalling_firm"
}
// Find Class I recalls (most serious)
{
"method": "lookup_drug",
"search_term": "I",
"search_type": "recalls",
"fields_for_recalls": "classification"
}
// Search recalls by product description
{
"method": "lookup_drug",
"search_term": "tablet",
"search_type": "recalls",
"fields_for_recalls": "product_description"
}
Shortages Fields (44 available):
// Find current shortages by status
{
"method": "lookup_drug",
"search_term": "Currently+in+Shortage",
"search_type": "shortages",
"fields_for_shortages": "status"
}
// Search shortages by therapeutic category
{
"method": "lookup_drug",
"search_term": "CEPHALOSPORIN",
"search_type": "shortages",
"fields_for_shortages": "therapeutic_category"
}
// Find shortages by company name
{
"method": "lookup_drug",
"search_term": "Pfizer",
"search_type": "shortages",
"fields_for_shortages": "company_name"
}
// Get FDA-approved prescribing information for Tylenol
{
"method": "lookup_drug",
"search_term": "Tylenol",
"search_type": "label"
}
// Check adverse events for ibuprofen
{
"method": "lookup_drug",
"search_term": "ibuprofen",
"search_type": "adverse_events"
}
// Search for recalls related to blood pressure medications
{
"method": "lookup_drug",
"search_term": "lisinopril",
"search_type": "recalls",
"limit": 10
}
// Monitor current drug supply shortages
{
"method": "lookup_drug",
"search_term": "bupivacaine",
"search_type": "shortages",
"limit": 10
}
The API supports searching across 350+ FDA database fields total. Use field-specific parameters for targeted searches:
fields_for_general
: 34 fields for general drug data searchesfields_for_adverse_events
: 66 fields for adverse events searchesfields_for_label
: 167 fields for drug label searchesfields_for_recalls
: 39 fields for recalls and enforcement searchesfields_for_shortages
: 44 fields for drug shortages searchesopenfda.application_number
- FDA application numberopenfda.brand_name
- Brand/trade name of the drugopenfda.generic_name
- Generic name of the drugopenfda.manufacturer_name
- Name of the manufactureropenfda.nui
- Numeric identifier for ingredientsopenfda.package_ndc
- Package-level National Drug Codeopenfda.pharm_class_cs
- Chemical structure pharmacologic classopenfda.pharm_class_epc
- Established pharmacologic classopenfda.pharm_class_pe
- Physiologic effect pharmacologic classopenfda.pharm_class_moa
- Mechanism of action pharmacologic classopenfda.product_ndc
- Product-level National Drug Codeopenfda.route
- Route of administrationopenfda.rxcui
- RxNorm concept unique identifieropenfda.spl_id
- Structured Product Labeling identifieropenfda.spl_set_id
- SPL document set identifieropenfda.substance_name
- Name of the active substanceopenfda.unii
- Unique Ingredient Identifierproducts.active_ingredients.name
- Name of active ingredientproducts.active_ingredients.strength
- Strength of active ingredientproducts.dosage_form
- Dosage form (e.g., "TABLET", "CAPSULE")products.marketing_status
- Marketing status (e.g., "Discontinued", "Prescription")products.product_number
- Product number within applicationproducts.reference_drug
- Reference drug designationproducts.reference_standard
- Reference standard designationproducts.route
- Route of administrationproducts.te_code
- Therapeutic equivalence evaluation codesubmissions.application_docs
- Application documentationsubmissions.review_priority
- Review priority designationsubmissions.submission_class_code
- Submission classification codesubmissions.submission_class_code_description
- Description of submission classsubmissions.submission_number
- Sequential submission numbersubmissions.submission_property_type.code
- Property type codesubmissions.submission_public_notes
- Public notes about submissionsubmissions.submission_status
- Current status of submissionsubmissions.submission_status_date
- Date of status changesubmissions.submission_type
- Type of submissionSearch by Marketing Status:
{
"method": "lookup_drug",
"search_term": "Discontinued",
"search_type": "general",
"fields_for_general": "products.marketing_status"
}
Search by Manufacturer:
{
"method": "lookup_drug",
"search_term": "Pfizer",
"search_type": "general",
"fields_for_general": "openfda.manufacturer_name"
}
Search by Dosage Form:
{
"method": "lookup_drug",
"search_term": "INJECTION",
"search_type": "general",
"fields_for_general": "products.dosage_form"
}
Search by Active Ingredient:
{
"method": "lookup_drug",
"search_term": "acetaminophen",
"search_type": "general",
"fields_for_general": "products.active_ingredients.name"
}
All responses include:
{
"success": true,
"query": "aspirin",
"search_type": "general",
"total_results": 150,
"results": [...],
"metadata": {
"total": 150,
"skip": 0,
"limit": 10
}
}
child*
for children's medications)general
: Comprehensive search across all FDA database fields (34 fields available)label
: Detailed prescribing information and FDA-approved labels (167 fields available)adverse_events
: Safety data and adverse reaction reports (66 fields available)recalls
: Drug recalls and safety alerts (39 fields available)shortages
: Current drug supply shortages and availability (44 fields available)AND
/OR
operatorsopenfda.field_name:value
syntax for precise searches[min+TO+max]
for age, date, or numeric ranges*
for pattern matching (*5*
, MEF*
)_exists_:field
or _missing_:field
for data completenessfields_for_general
for general drug data (34 options)fields_for_adverse_events
for adverse events (66 options)fields_for_label
for drug label searches (167 options)fields_for_recalls
for recalls and enforcement (39 options)fields_for_shortages
for drug shortages (44 options)products.marketing_status
, patient.reaction.reactionmeddrapt
, warnings
, recalling_firm
, status
drug:aspirin+AND+form:TABLET+AND+status:active
patient.patientonsetage:[18+TO+65]
for adultsoccurcountry:US+AND+serious:1
for US serious eventsreceiptdate:[2023-01-01+TO+2023-12-31]
for 2023 datagit clone https://github.com/uh-joan/fda-mcp-server.git
cd fda-mcp-server
npm install
# Test the server directly
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | node src/index.js
# Test with a drug lookup
echo '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"fda_drug_info","arguments":{"method":"lookup_drug","search_term":"aspirin"}}}' | node src/index.js
fda-mcp-server/
├── src/
│ ├── index.js # Main MCP server
│ └── fda-search.js # FDA API integration
├── package.json # Project configuration
├── README.md # Documentation
└── LICENSE # MIT License
git checkout -b feature/amazing-feature
)git commit -m 'Add some amazing feature'
)git push origin feature/amazing-feature
)This project is licensed under the MIT License - see the LICENSE file for details.
Built with ❤️ for safer medication information access
FAQs
MCP server for FDA drug information lookup and safety data. Provides access to FDA drug labels, adverse events, and regulatory information through the openFDA API.
We found that @uh-joan/fda-mcp-server demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
/Research
Malicious npm package impersonates Nodemailer and drains wallets by hijacking crypto transactions across multiple blockchains.
Security News
This episode explores the hard problem of reachability analysis, from static analysis limits to handling dynamic languages and massive dependency trees.
Security News
/Research
Malicious Nx npm versions stole secrets and wallet info using AI CLI tools; Socket’s AI scanner detected the supply chain attack and flagged the malware.