EMA 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., "@EMA MCP Serversearch for authorized diabetes medicines with semaglutide"
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.
Unofficial EMA MCP Server
A Model Context Protocol (MCP) server providing access to the European Medicines Agency (EMA) public JSON API for regulatory intelligence and pharmaceutical research.
Overview
This MCP server complements FDA data sources by providing comprehensive access to EU drug approvals, EPARs (European Public Assessment Reports), orphan designations, supply shortages, safety reviews, and regulatory procedures. Together with FDA coverage, this provides ~70% global pharmaceutical market regulatory intelligence.
Key Features:
Single unified
ema_infotool with method parameter (MCP best practice)14 comprehensive methods covering medicines, safety, documents, and pediatrics
2,641+ EU-approved medicines with 39 fields each
Real-time orphan designations, supply shortages, and safety data
Document search (EPAR, all EMA documents, non-EPAR documents)
Related MCP server: ,APEX MCP Server
Usage
{
"mcpServers": {
"ema-mcp-server": {
"command": "node",
"args": ["/path/to/ema-mcp-server/build/index.js"],
"env": {}
}
}
}API Reference
Methods
1. search_medicines
Search EU-approved medicines database.
Parameters:
active_substance(string, optional): Active substance name (e.g., "semaglutide", "adalimumab")therapeutic_area(string, optional): Disease or therapeutic area (e.g., "diabetes", "cancer")status(string, optional): Medicine status - "Authorised", "Withdrawn", "Refused", "Suspended"orphan(boolean, optional): Filter for orphan medicines onlyprime(boolean, optional): Filter for PRIME (priority) medicines onlybiosimilar(boolean, optional): Filter for biosimilar medicines onlyconditional_approval(boolean, optional): Filter for conditionally approved medicineslimit(number, optional): Maximum results (default: 100, max: 10000)
Example:
{
"method": "search_medicines",
"active_substance": "semaglutide",
"status": "Authorised",
"limit": 10
}Returns: 3 semaglutide medicines (Ozempic, Wegovy, Rybelsus)
2. get_medicine_by_name
Get specific medicine by trade name.
Parameters:
name(string, required): Medicine trade name (case-insensitive, supports partial matching)
Example:
{
"method": "get_medicine_by_name",
"name": "Ozempic"
}Returns: Complete medicine record with EMA product number, active substance, approval details, etc.
3. get_orphan_designations
Get EU orphan drug designations for rare diseases.
Parameters:
therapeutic_area(string, optional): Disease/condition (searches in intended_use field)active_substance(string, optional): Active substance nameyear(number, optional): Designation year (1995-2026)status(string, optional): "Positive", "Negative", "Withdrawn"limit(number, optional): Maximum results (default: 100, max: 10000)
Example:
{
"method": "get_orphan_designations",
"therapeutic_area": "cancer",
"year": 2024,
"status": "Positive"
}Returns: Cancer orphan designations from 2024 with positive status
4. get_supply_shortages
Get medicine supply shortage information.
Parameters:
active_substance(string, optional): Active substance or INNmedicine_name(string, optional): Medicine trade nametherapeutic_area(string, optional): Therapeutic areastatus(string, optional): "Ongoing" or "Resolved" (case-insensitive)limit(number, optional): Maximum results (default: 50, max: 10000)
Example:
{
"method": "get_supply_shortages",
"status": "Ongoing",
"medicine_name": "insulin"
}Returns: Ongoing insulin shortages with affected products and reasons
5. get_referrals
Get EU-wide safety reviews and referrals.
Parameters:
safety(boolean, optional): Filter for safety-related referrals (true=Yes, false=No)active_substance(string, optional): Active substance namestatus(string, optional): Current status (e.g., "Under evaluation", "Completed")year(number, optional): Procedure start year (1995-2026)limit(number, optional): Maximum results (default: 50, max: 10000)
Example:
{
"method": "get_referrals",
"safety": true,
"year": 2024
}Returns: Safety-related referrals started in 2024
Note: The safety_referral field uses "Sì" (Italian) for Yes and "No" for No.
6. get_post_auth_procedures
Get post-authorization procedures (label updates, extensions, etc.).
Parameters:
medicine_name(string, optional): Medicine name to filterlimit(number, optional): Maximum results (default: 50, max: 10000)
Example:
{
"method": "get_post_auth_procedures",
"medicine_name": "Brilique"
}Returns: Post-authorization procedures for Brilique
7. get_dhpcs
Get Direct Healthcare Professional Communications (DHPCs) - safety communications sent to healthcare professionals.
Parameters:
medicine_name(string, optional): Medicine name to filteractive_substance(string, optional): Active substance namedhpc_type(string, optional): Type of DHPCyear(number, optional): Dissemination year (1995-2026)limit(number, optional): Maximum results (default: 50, max: 10000)
Example:
{
"method": "get_dhpcs",
"year": 2024
}Returns: DHPCs from 2024 with safety information for healthcare professionals
8. get_psusas
Get Periodic Safety Update Reports (PSUSAs) - ongoing safety monitoring outcomes.
Parameters:
active_substance(string, optional): Active substance name (searches bothactive_substanceandactive_substances_in_scope_of_procedure)regulatory_outcome(string, optional): Regulatory outcomelimit(number, optional): Maximum results (default: 100, max: 10000)
Example:
{
"method": "get_psusas",
"active_substance": "metformin"
}Returns: PSUSA records for metformin with safety monitoring results
9. get_pips
Get Paediatric Investigation Plans (PIPs) - pediatric development requirements.
Parameters:
active_substance(string, optional): Active substance nametherapeutic_area(string, optional): Therapeutic areadecision_type(string, optional): Type of decisionyear(number, optional): Decision year (1995-2026)limit(number, optional): Maximum results (default: 100, max: 10000)
Example:
{
"method": "get_pips",
"therapeutic_area": "diabetes",
"year": 2024
}Returns: PIPs for diabetes approved in 2024
10. get_herbal_medicines
Get herbal medicine assessments.
Parameters:
substance(string, optional): Herbal substance or botanical nametherapeutic_area(string, optional): Therapeutic arealimit(number, optional): Maximum results (default: 50, max: 10000)
Example:
{
"method": "get_herbal_medicines",
"substance": "valerian"
}Note: EMA does not currently publish herbal medicine data as a JSON endpoint. This method returns empty results until a valid endpoint is identified.
11. get_article58_medicines
Get medicines for use outside EU (Article 58) - positive scientific opinions for non-EU countries.
Parameters:
active_substance(string, optional): Active substance namemedicine_name(string, optional): Medicine namelimit(number, optional): Maximum results (default: 50, max: 10000)
Example:
{
"method": "get_article58_medicines",
"active_substance": "artemether"
}Note: EMA does not currently publish Article 58 data as a JSON endpoint. This method returns empty results until a valid endpoint is identified.
12. search_epar_documents
Search EPAR (European Public Assessment Report) documents with translations.
Parameters:
medicine_name(string, optional): Medicine name to filterdocument_type(string, optional): Document type (e.g., "EPAR - Summary for the public")language(string, optional): Language code (e.g., "en", "fr", "de")limit(number, optional): Maximum results (default: 100, max: 10000)
Example:
{
"method": "search_epar_documents",
"medicine_name": "Ozempic",
"document_type": "Summary for the public"
}Returns: EPAR documents for Ozempic with public summaries and translations
13. search_all_documents
Search all EMA documents (complete repository).
Parameters:
search_term(string, optional): Search in title or document_titledocument_type(string, optional): Document typecategory(string, optional): Document categorylimit(number, optional): Maximum results (default: 100, max: 10000)
Example:
{
"method": "search_all_documents",
"search_term": "guideline"
}Returns: All EMA documents matching "guideline"
14. search_non_epar_documents
Search non-EPAR documents (guidelines, procedures, etc.).
Parameters:
search_term(string, optional): Search in title or document_titledocument_type(string, optional): Document typelimit(number, optional): Maximum results (default: 100, max: 10000)
Example:
{
"method": "search_non_epar_documents",
"search_term": "procedure"
}Returns: Non-EPAR documents matching "procedure"
Response Format
All methods return a consistent format:
{
"total_count": 3,
"results": [...],
"source": "EMA Medicines Database",
"source_url": "https://www.ema.europa.eu/...",
"last_updated": "2025-12-11T10:30:00.000Z"
}Data Sources
The server accesses 14 EMA JSON endpoints organized into 4 categories:
Medicines Data (6 endpoints)
Medicines Database:
medicines-output-medicines_json-report_en.json(2,641+ medicines)Orphan Designations:
medicines-output-orphan_designations-json-report_en.jsonSupply Shortages:
shortages-output-json-report_en.jsonReferrals:
referrals-output-json-report_en.jsonPost-Authorization:
medicines-output-post_authorisation_json-report_en.jsonHerbal Medicines: (placeholder - no JSON endpoint available)
Safety Data (2 endpoints)
DHPCs:
dhpc-output-json-report_en.json(160+ records)PSUSAs:
medicines-output-periodic_safety_update_report_single_assessments-output-json-report_en.json(2,508+ records)
Pediatric Data (1 endpoint)
PIPs:
medicines-output-paediatric_investigation_plans-output-json-report_en.json(3,229+ records)
Document Access (3 endpoints)
EPAR Documents:
documents-output-epar_documents_json-report_en.jsonAll Documents:
documents-output-json-report_en.jsonNon-EPAR Documents:
documents-output-non_epar_documents_json-report_en.json
Specialized (1 endpoint)
Article 58: (placeholder - no JSON endpoint available)
Update Schedule: Twice daily (06:00 and 18:00 CET)
Document Format: Document endpoints return {data: [...]} format, others return [...] array format
EMA ↔ FDA Terminology Mapping
EMA Term | FDA Equivalent |
EPAR (European Public Assessment Report) | Drug Label / Approval Package |
Active Substance | Active Ingredient |
Orphan Designation | Orphan Drug Designation |
PRIME (Priority Medicines) | Breakthrough Therapy |
Conditional Approval | Accelerated Approval |
Referral | Safety Review |
Marketing Authorisation Holder | Sponsor/Applicant |
Medicinal Product | Drug Product |
Available Tools
1 toolema_infoA
Unified tool for EMA (European Medicines Agency) drug information lookup. Provides access to EU drug approvals, EPARs, orphan designations, supply shortages, and regulatory information through EMA's public JSON API.
| Name | Required | Description | Default |
|---|---|---|---|
| method | Yes | The operation to perform: search_medicines (search EU approved drugs), get_medicine_by_name (get specific medicine), get_orphan_designations (EU orphan drugs), get_supply_shortages (medicine shortages), get_referrals (EU safety reviews), get_post_auth_procedures (label updates), get_dhpcs (safety communications), get_psusas (periodic safety reports), get_pips (paediatric plans), get_herbal_medicines (herbal assessments), get_article58_medicines (non-EU use), search_epar_documents (EPAR docs), search_all_documents (all EMA docs), search_non_epar_documents (non-EPAR docs) | |
| active_substance | No | For search_medicines, get_supply_shortages: Active substance name (e.g., "semaglutide", "adalimumab") | |
| therapeutic_area | No | For search_medicines, get_orphan_designations: Therapeutic area or disease (e.g., "diabetes", "cancer", "multiple sclerosis") | |
| status | No | For search_medicines: Medicine status filter. For get_supply_shortages: "ongoing" or "resolved" | |
| orphan | No | For search_medicines: Filter for orphan medicines only | |
| prime | No | For search_medicines: Filter for PRIME (priority) medicines only | |
| biosimilar | No | For search_medicines: Filter for biosimilar medicines only | |
| conditional_approval | No | For search_medicines: Filter for conditionally approved medicines | |
| limit | No | Maximum number of results to return (default: 100 for medicines, 50 for other methods) | |
| name | No | For get_medicine_by_name: Medicine trade name to search (e.g., "Ozempic", "Wegovy", "Humira") | |
| year | No | For get_orphan_designations, get_referrals: Filter by year (e.g., 2024, 2023) | |
| safety | No | For get_referrals: Filter for safety-related referrals (true=Yes, false=No) | |
| medicine_name | No | For get_supply_shortages, get_post_auth_procedures: Medicine name to filter |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the tool accesses EMA's public JSON API, which hints at read-only behavior, but doesn't explicitly state if it's read-only, requires authentication, has rate limits, or describes error handling. For a tool with 13 parameters and no annotations, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded and efficiently structured in two sentences: the first states the unified purpose, and the second lists the accessible information types and API source. Every sentence earns its place without redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (13 parameters, no output schema, no annotations), the description is adequate but incomplete. It covers the purpose and scope well but lacks details on behavioral traits, return values, or usage nuances. With no output schema, it should ideally hint at response formats, but it doesn't, leaving gaps for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds no additional parameter semantics beyond what's in the schema, such as explaining relationships between methods and parameters. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('lookup', 'provides access to') and resources ('EMA drug information', 'EU drug approvals, EPARs, orphan designations, etc.'). It distinguishes this as a unified tool for EMA's public JSON API, making its scope explicit even without sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for EMA-related drug information queries but provides no explicit guidance on when to use specific methods or alternatives. Without sibling tools, it doesn't need to differentiate, but it lacks context on prerequisites or optimal use cases for the various operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
With only one tool, there is no possibility of ambiguity or overlap between tools. The single tool 'ema_info' has a clearly defined and distinct purpose for EMA drug information lookup.
Since there is only one tool, naming consistency is inherently perfect. The tool name 'ema_info' follows a clear and appropriate pattern for its function.
A single tool is too few for the broad scope implied by the description, which covers multiple aspects like drug approvals, EPARs, orphan designations, supply shortages, and regulatory information. This thin surface likely requires agents to handle complex queries within one tool, which is suboptimal for typical MCP server design.
The tool set is severely incomplete for the EMA domain. While 'ema_info' provides a unified lookup, there are obvious gaps such as separate tools for different resource types (e.g., approvals vs. shortages) or operations (e.g., search vs. get details), which could lead to agent confusion or inefficiency in handling specific queries.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Citation-backed regulatory intelligence tools for explicit multi-jurisdiction packs
Regulatory Catalysts MCP — high-value biotech regulatory calendar events (keyless).
EU regulatory compliance data: 17 regulations, deadlines, enforcement actions. EU-hosted.
FDA drug approvals, 510(k) device clearances, recalls and adverse-event reports.
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceProvides comprehensive pharmaceutical intelligence by integrating real-time openFDA data with locally-cached Orange Book and Purple Book databases. It enables users to analyze drug safety, patents, generic equivalents, biosimilars, and regulatory information through natural language queries.3MIT
- FlicenseAqualityDmaintenanceEnables users to search and monitor European regulatory publications including GDPR, ISO27001, and AI Act. Supports creating monitoring topics, generating compliance briefs, and setting up notifications for regulatory updates.5
- AlicenseNot gradedqualityBmaintenancePharmaceutical R\&D Pipeline Intelligence for AI Agents — Clinical trials, FDA approvals, drug information & publications in one MCP server.5MIT
- AlicenseAqualityDmaintenanceMCP server for regulatory submission intelligence — ICH guideline lookup, CTD module mapping, eCTD structure guidance, and FDA/EMA query support6MIT
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/openpharma-org/ema-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server