healthcare-mcp-public
If you are the rightful owner of healthcare-mcp-public and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
A Model Context Protocol (MCP) server providing AI assistants with access to healthcare data and medical information tools.
Healthcare MCP Server
A Model Context Protocol (MCP) server providing AI assistants with access to healthcare data and medical information tools.
Overview
Healthcare MCP Server is a specialized server that implements the Model Context Protocol (MCP) to provide AI assistants with access to healthcare data and medical information tools. It enables AI models to retrieve accurate, up-to-date medical information from authoritative sources.
Features
- FDA Drug Information: Search and retrieve comprehensive drug information from the FDA database
- PubMed Research: Search medical literature from PubMed's database of scientific articles
- Health Topics: Access evidence-based health information from Health.gov
- Clinical Trials: Search for ongoing and completed clinical trials
- Medical Terminology: Look up ICD-10 codes and medical terminology definitions
- Caching: Efficient caching system with connection pooling to reduce API calls and improve performance
- Usage Tracking: Anonymous usage tracking to monitor API usage
- Error Handling: Robust error handling and logging
- Multiple Interfaces: Support for both stdio (for CLI) and HTTP/SSE interfaces
- API Documentation: Interactive API documentation with Swagger UI
- Comprehensive Testing: Extensive test suite with pytest and coverage reporting
Installation
Installing via Smithery
To install Healthcare Data and Medical Information Server for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install @Cicatriiz/healthcare-mcp-public --client claude
Manual Installation
-
Clone the repository:
git clone https://github.com/Cicatriiz/healthcare-mcp-public.git cd healthcare-mcp-public
-
Create a virtual environment:
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
-
Install dependencies:
pip install -r requirements.txt
-
Set up environment variables (optional):
# Create .env file from example cp .env.example .env # Edit .env with your API keys (optional)
-
Run the server:
python run.py
Usage
Running in Different Transport Modes
-
stdio mode (default, for Cline):
python run.py
-
HTTP/SSE mode (for web clients):
python run.py --http --port 8000
Testing the Tools
You can test the MCP tools using the new pytest-based test suite:
# Run all tests with pytest and coverage
python -m tests.run_tests --pytest
# Run a specific test file
python -m tests.run_tests --test test_fda_tool.py
# Test the HTTP server
python -m tests.run_tests --server --port 8000
For backward compatibility, you can still run the old tests:
# Run all tests (old style)
python -m tests.run_tests
# Test individual tools (old style)
python -m tests.run_tests --fda # Test FDA drug lookup
python -m tests.run_tests --pubmed # Test PubMed search
python -m tests.run_tests --health # Test Health Topics
python -m tests.run_tests --trials # Test Clinical Trials search
python -m tests.run_tests --icd # Test ICD-10 code lookup
API Reference
The Healthcare MCP Server provides both a programmatic API for direct integration and a RESTful HTTP API for web clients.
RESTful API Endpoints
When running in HTTP mode, the following endpoints are available:
Health Check
GET /health
Returns the status of the server and its services.
FDA Drug Lookup
GET /api/fda?drug_name={drug_name}&search_type={search_type}
Parameters:
drug_name
: Name of the drug to search forsearch_type
: Type of information to retrievegeneral
: Basic drug information (default)label
: Drug labeling informationadverse_events
: Reported adverse events
Example Response:
{
"status": "success",
"drug_name": "aspirin",
"search_type": "general",
"total_results": 25,
"results": [
{
"brand_name": "ASPIRIN",
"generic_name": "ASPIRIN",
"manufacturer": "Bayer Healthcare",
"product_type": "HUMAN OTC DRUG",
"route": "ORAL",
"active_ingredients": [
{
"name": "ASPIRIN",
"strength": "325 mg/1"
}
]
}
]
}
PubMed Search
GET /api/pubmed?query={query}&max_results={max_results}&date_range={date_range}
Parameters:
query
: Search query for medical literaturemax_results
: Maximum number of results to return (default: 5, max: 50)date_range
: Limit to articles published within years (e.g. '5' for last 5 years)
Example Response:
{
"status": "success",
"query": "diabetes treatment",
"total_results": 123456,
"date_range": "5",
"articles": [
{
"pmid": "12345678",
"title": "New advances in diabetes treatment",
"authors": ["Smith J", "Johnson A"],
"journal": "Journal of Diabetes Research",
"publication_date": "2023-01-15",
"abstract": "This study explores new treatment options...",
"url": "https://pubmed.ncbi.nlm.nih.gov/12345678/"
}
]
}
Health Topics
GET /api/health_finder?topic={topic}&language={language}
Parameters:
topic
: Health topic to search for informationlanguage
: Language for content (en or es, default: en)
Example Response:
{
"status": "success",
"search_term": "diabetes",
"language": "en",
"total_results": 15,
"topics": [
{
"title": "Diabetes Type 2",
"url": "https://health.gov/myhealthfinder/topics/health-conditions/diabetes/diabetes-type-2",
"last_updated": "2023-05-20",
"section": "Health Conditions",
"description": "Information about managing type 2 diabetes",
"content": ["Diabetes is a disease...", "Treatment options include..."]
}
]
}
Clinical Trials Search
GET /api/clinical_trials?condition={condition}&status={status}&max_results={max_results}
Parameters:
condition
: Medical condition or disease to search forstatus
: Trial status (recruiting, completed, active, not_recruiting, or all)max_results
: Maximum number of results to return (default: 10, max: 100)
Example Response:
{
"status": "success",
"condition": "breast cancer",
"search_status": "recruiting",
"total_results": 256,
"trials": [
{
"nct_id": "NCT12345678",
"title": "Study of New Treatment for Breast Cancer",
"status": "Recruiting",
"phase": "Phase 2",
"study_type": "Interventional",
"conditions": ["Breast Cancer", "HER2-positive Breast Cancer"],
"locations": [
{
"facility": "Memorial Hospital",
"city": "New York",
"state": "NY",
"country": "United States"
}
],
"sponsor": "National Cancer Institute",
"url": "https://clinicaltrials.gov/study/NCT12345678",
"eligibility": {
"gender": "Female",
"min_age": "18 Years",
"max_age": "75 Years",
"healthy_volunteers": "No"
}
}
]
}
ICD-10 Code Lookup
GET /api/medical_terminology?code={code}&description={description}&max_results={max_results}
Parameters:
code
: ICD-10 code to look up (optional if description is provided)description
: Medical condition description to search for (optional if code is provided)max_results
: Maximum number of results to return (default: 10, max: 50)
Example Response:
{
"status": "success",
"search_type": "description",
"search_term": "diabetes",
"total_results": 25,
"codes": [
{
"code": "E11",
"description": "Type 2 diabetes mellitus",
"category": "Endocrine, nutritional and metabolic diseases"
},
{
"code": "E10",
"description": "Type 1 diabetes mellitus",
"category": "Endocrine, nutritional and metabolic diseases"
}
]
}
Generic Tool Execution
POST /mcp/call-tool
Request Body:
{
"name": "fda_drug_lookup",
"arguments": {
"drug_name": "aspirin",
"search_type": "general"
},
"session_id": "optional-session-id"
}
Programmatic API
When using the MCP server programmatically, the following functions are available:
FDA Drug Lookup
fda_drug_lookup(drug_name: str, search_type: str = "general")
Parameters:
drug_name
: Name of the drug to search forsearch_type
: Type of information to retrievegeneral
: Basic drug information (default)label
: Drug labeling informationadverse_events
: Reported adverse events
PubMed Search
pubmed_search(query: str, max_results: int = 5, date_range: str = "")
Parameters:
query
: Search query for medical literaturemax_results
: Maximum number of results to return (default: 5)date_range
: Limit to articles published within years (e.g. '5' for last 5 years)
Health Topics
health_topics(topic: str, language: str = "en")
Parameters:
topic
: Health topic to search for informationlanguage
: Language for content (en or es, default: en)
Clinical Trials Search
clinical_trials_search(condition: str, status: str = "recruiting", max_results: int = 10)
Parameters:
condition
: Medical condition or disease to search forstatus
: Trial status (recruiting, completed, active, not_recruiting, or all)max_results
: Maximum number of results to return
ICD-10 Code Lookup
lookup_icd_code(code: str = None, description: str = None, max_results: int = 10)
Parameters:
code
: ICD-10 code to look up (optional if description is provided)description
: Medical condition description to search for (optional if code is provided)max_results
: Maximum number of results to return
Data Sources
This MCP server utilizes several publicly available healthcare APIs:
- FDA OpenFDA API
- PubMed E-utilities API
- Health.gov API
- ClinicalTrials.gov API
- NLM Clinical Table Search Service for ICD-10-CM
Premium Version (still being built)
This is the free version of Healthcare MCP Server with usage limits. For advanced features and higher usage limits, check out our premium version:
- Unlimited API calls
- Advanced healthcare data tools
- Custom integrations
- Priority support
License
MIT License