Health Canada Drug Product Database MCP Server
Enables querying the Health Canada Drug Product Database for information on approximately 47,000 approved drugs, including human pharmaceuticals, biologics, veterinary drugs, radiopharmaceuticals, and disinfectants.
README
Health Canada Drug Product Database MCP Server
An MCP (Model Context Protocol) server that exposes the Health Canada Drug Product Database (DPD) APIs as tools. Query information on ~47,000 drugs approved for use in Canada including human pharmaceuticals, biologics, veterinary drugs, radiopharmaceuticals, and disinfectants.
Features
- 15 tools exposing all DPD API endpoints
- 4 resources providing reference documentation
- 4 prompts for guided workflows
- Async HTTP requests with httpx
- Support for English and French responses
- JSON and XML response formats
- Comprehensive drug product queries
Available Tools
| Tool | Description |
|---|---|
get_active_ingredients |
Get active ingredients for a drug by drug code |
search_active_ingredients |
Search ingredients by name across all products |
get_company |
Get company/manufacturer information |
get_drug_product |
Get drug product by drug code |
search_drug_by_din |
Search by Drug Identification Number (DIN) |
search_drug_by_brand_name |
Search by brand name (e.g., "Tylenol") |
get_dosage_form |
Get dosage forms (tablet, capsule, etc.) |
get_packaging |
Get package sizes and UPC codes |
get_pharmaceutical_standard |
Get manufacturing standard |
get_route_of_administration |
Get administration routes (oral, IV, etc.) |
get_schedule |
Get drug schedules (prescription, OTC, etc.) |
get_product_status |
Get product status (marketed, cancelled, etc.) |
get_therapeutic_class |
Get ATC therapeutic classification |
get_veterinary_species |
Get approved species for veterinary drugs |
get_all_drug_info |
Get comprehensive info in one call |
Available Resources
Resources provide reference data that agents can read for context:
| Resource URI | Description |
|---|---|
dpd://documentation/overview |
API overview, key identifiers, and typical workflows |
dpd://reference/status-codes |
Drug status code meanings (Approved, Marketed, Cancelled, etc.) |
dpd://reference/schedules |
Drug schedule classifications (Prescription, OTC, Narcotic, etc.) |
dpd://reference/routes |
Routes of administration reference (Oral, IV, Topical, etc.) |
Available Prompts
Prompts provide guided workflows for common tasks:
| Prompt | Arguments | Description |
|---|---|---|
drug_lookup |
drug_name |
Comprehensive lookup of a drug by name |
compare_drugs |
drug1, drug2 |
Side-by-side comparison of two drugs |
find_alternatives |
drug_name |
Find generic alternatives with same active ingredient |
check_din |
din |
Verify a DIN and get product status/details |
Installation
Prerequisites
- Python 3.11 or higher
- pip or uv package manager
Quick Start
-
Clone the repository
git clone https://github.com/yourusername/PharmacyMCP.git cd PharmacyMCP -
Create a virtual environment
Using venv (built-in):
python -m venv .venvOr using uv (faster):
uv venv .venv -
Activate the virtual environment
Windows (PowerShell):
.\.venv\Scripts\Activate.ps1Windows (Command Prompt):
.venv\Scripts\activate.batmacOS/Linux:
source .venv/bin/activate -
Install dependencies
Using pip:
pip install -r requirements.txtOr using uv:
uv pip install -r requirements.txt -
Verify installation
python src/dpd_server.pyThe server will start and listen at
http://localhost:8000/mcp. PressCtrl+Cto stop.
Usage
Running the server
python src/dpd_server.py
The server starts on http://localhost:8000/mcp using the MCP Streamable HTTP transport.
Running with FastMCP CLI
fastmcp run src/dpd_server.py
Connecting from Claude Desktop
Start the server first (python src/dpd_server.py), then add to your Claude Desktop configuration (claude_desktop_config.json):
{
"mcpServers": {
"pharmacy-dpd": {
"url": "http://localhost:8000/mcp"
}
}
}
Installing in VS Code with GitHub Copilot
Start the server first, then add to your VS Code settings.json:
{
"github.copilot.chat.mcpServers": {
"pharmacy-dpd": {
"url": "http://localhost:8000/mcp"
}
}
}
Connecting from Postman
Create a new MCP request in Postman and set the URL to:
http://localhost:8000/mcp
Example Queries
Once connected, you can ask questions like:
- "Search for drugs with the brand name Tylenol"
- "What are the active ingredients in drug code 48905?"
- "Find drugs containing acetaminophen"
- "What is the status of DIN 00326925?"
- "Get all information about drug code 2049"
- "Compare Tylenol and Advil"
- "Find generic alternatives to Lipitor"
How Agents Use Resources and Prompts
Resources
Agents automatically have access to reference data without making API calls. For example, when interpreting a status code like "4", the agent can read dpd://reference/status-codes to understand it means "Cancelled Post-Market".
Prompts
Prompts guide multi-step workflows. When you ask to look up a drug, the drug_lookup prompt provides a structured approach:
- Search by brand name
- Get the drug_code from results
- Fetch comprehensive details
- Present information in a clear format
API Reference
This server wraps the Health Canada DPD API:
- Base URL:
https://health-products.canada.ca/api/drug/ - Documentation: DPD API Guide
Drug Status Codes
| Code | Status |
|---|---|
| 1 | Approved |
| 2 | Marketed |
| 3 | Cancelled Pre Market |
| 4 | Cancelled Post Market |
| 6 | Dormant |
| 9 | Cancelled (Unreturned Annual) |
| 10 | Cancelled (Safety Issue) |
| 11 | Authorized By Interim Order |
| 12 | Authorization By Interim Order Revoked |
| 13 | Restricted Access |
| 14 | Authorization By Interim Order Expired |
| 15 | Cancelled (Transitioned to Biocides) |
License
MIT
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.