Medical Diagnosis AI MCP
by kalevikas
README.md
# Medical Diagnosis & Literature Analysis AI (MCP & FastAPI)
An AI-powered patient symptom analysis and medical literature research assistant. This repository provides a dual interface: a **Model Context Protocol (MCP)** server for seamless integration with AI agents (like Claude Desktop or Cursor) and a **FastAPI REST API** endpoint.
It automatically extracts symptoms from natural language text, uses OpenAI's GPT-4 to suggest potential diagnoses/cures, retrieves relevant medical literature directly from PubMed (via NCBI Entrez APIs), and summarizes the scientific abstracts.
---
## Features
- **Symptom Extraction:** Uses regex-based text processing to extract symptoms (headache, fever, nausea, fatigue, pain) from patient descriptions.
- **AI-Driven Diagnosis:** Leverages OpenAI GPT-4 to analyze symptoms, suggest potential diagnoses, and recommend management strategies/cures.
- **PubMed Integration:** Queries NCBI Entrez APIs to fetch titles, authors, dates, URLs, and abstracts of the latest matching scientific literature.
- **Scientific Abstract Summarization:** Utilizes GPT-4 to compile a structured summary of the retrieved PubMed publications.
- **Model Context Protocol (MCP) Support:** Built with `FastMCP` for quick integration with modern LLM clients.
- **FastAPI Endpoint:** Exposes a POST endpoint `/diagnosis` for standard HTTP client integration.
---
## Project Structure
```text
medical_diagnosis_ai_mcp/
├── tools/
│ ├── diagnosis_tools.py # OpenAI GPT-4 interface for suggesting diagnoses/cures
│ ├── symptom_extractor.py # Regex-based symptom extractor
│ ├── pubmed_fetcher.py # NCBI Entrez utility for searching and fetching articles
│ └── summarizer.py # OpenAI GPT-4 interface for summarizing abstracts
├── mcp_tools.py # FastMCP server definition & entrypoint
├── fastapi_app.py # FastAPI server & route handlers
├── pyproject.toml # Project configuration and basic package dependencies
├── uv.lock # Locked dependencies
└── .env # Environment variables (OpenAI keys, base URLs)
```
---
## Prerequisites
- **Python:** `3.12` or higher
- **OpenAI API Key** (or OpenRouter/compatible LLM provider API Key)
---
## Installation & Setup
1. **Clone the repository:**
```bash
git clone <your-repo-url>
cd medical_diagnosis_ai_mcp
```
2. **Set up environment variables:**
Create a `.env` file in the root directory (or edit the existing one) with your credentials:
```ini
OPENAI_API_KEY="your-api-key-here"
OPENAI_BASE_URL="https://api.openai.com/v1" # Or OpenRouter/alternative endpoint
```
3. **Install dependencies:**
We recommend using [uv](https://github.com/astral-sh/uv) or standard `pip`:
```bash
# Using uv
uv sync
# Or using pip
pip install mcp[cli] fastapi uvicorn openai requests beautifulsoup4 lxml python-dotenv
```
---
## How to Run
### 1. Model Context Protocol (MCP) Server
To run the server in development/dev mode or standard mode:
- **Run directly:**
```bash
python mcp_tools.py
```
- **Run with MCP CLI (Dev Mode):**
```bash
mcp dev mcp_tools.py
```
### 2. FastAPI REST Server
To start the REST API server with live reloading:
```bash
uvicorn fastapi_app:app --reload
```
Once running, the interactive Swagger documentation will be available at `http://127.0.0.1:8000/docs`.
---
## Usage Examples
### FastAPI API Call
Send a POST request to `/diagnosis` to run the complete diagnostic analysis:
**Request:**
```bash
curl -X POST "http://127.0.0.1:8000/diagnosis" \
-H "Content-Type: application/json" \
-d '{"description": "The patient complains of severe headache, recurring fever, and extreme fatigue."}'
```
**Response Schema:**
```json
{
"symptom": [
"headache",
"fever",
"fatigue"
],
"diabnosis": "Based on the symptoms of severe headache, recurring fever, and extreme fatigue, possible diagnoses include...\n\nSuggested cures/treatment...",
"pubmed_summary": "Unified summary of PubMed studies concerning headache, fever, and fatigue..."
}
```
---
## Integrating with Claude Desktop
To expose the tool in Claude Desktop, add the following configuration to your `claude_desktop_config.json`:
**On Windows:**
File path: `%APPDATA%\Claude\claude_desktop_config.json`
```json
{
"mcpServers": {
"medical-diagnosis-ai-mcp": {
"command": "uv",
"args": [
"run",
"--path",
"C:\\path\\to\\your\\medical_diagnosis_ai_mcp",
"mcp_tools.py"
],
"env": {
"OPENAI_API_KEY": "your-api-key-here",
"OPENAI_BASE_URL": "https://api.openai.com/v1"
}
}
}
}
```
*(Replace `C:\\path\\to\\your\\medical_diagnosis_ai_mcp` with the absolute path to your project folder.)*
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues