Health Canada Drug Product Database MCP Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Health Canada Drug Product Database MCP ServerSearch for drugs with the brand name Tylenol"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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 for a drug by drug code |
| Search ingredients by name across all products |
| Get company/manufacturer information |
| Get drug product by drug code |
| Search by Drug Identification Number (DIN) |
| Search by brand name (e.g., "Tylenol") |
| Get dosage forms (tablet, capsule, etc.) |
| Get package sizes and UPC codes |
| Get manufacturing standard |
| Get administration routes (oral, IV, etc.) |
| Get drug schedules (prescription, OTC, etc.) |
| Get product status (marketed, cancelled, etc.) |
| Get ATC therapeutic classification |
| Get approved species for veterinary drugs |
| Get comprehensive info in one call |
Available Resources
Resources provide reference data that agents can read for context:
Resource URI | Description |
| API overview, key identifiers, and typical workflows |
| Drug status code meanings (Approved, Marketed, Cancelled, etc.) |
| Drug schedule classifications (Prescription, OTC, Narcotic, etc.) |
| Routes of administration reference (Oral, IV, Topical, etc.) |
Available Prompts
Prompts provide guided workflows for common tasks:
Prompt | Arguments | Description |
|
| Comprehensive lookup of a drug by name |
|
| Side-by-side comparison of two drugs |
|
| Find generic alternatives with same active ingredient |
|
| 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 PharmacyMCPCreate a virtual environment
Using venv (built-in):
python -m venv .venvOr using uv (faster):
uv venv .venvActivate the virtual environment
Windows (PowerShell):
.\.venv\Scripts\Activate.ps1Windows (Command Prompt):
.venv\Scripts\activate.batmacOS/Linux:
source .venv/bin/activateInstall dependencies
Using pip:
pip install -r requirements.txtOr using uv:
uv pip install -r requirements.txtVerify 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.pyThe server starts on http://localhost:8000/mcp using the MCP Streamable HTTP transport.
Running with FastMCP CLI
fastmcp run src/dpd_server.pyConnecting 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/mcpExample 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
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/wkurzatz/PharmacyMCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server