Skip to main content
Glama
README.md
# MedVision MCP

Medical Vision AI Tools via Model Context Protocol (MCP)

## Overview

MedVision MCP provides AI-powered medical image analysis tools accessible through the [Model Context Protocol](https://modelcontextprotocol.io/). It enables LLM agents (like Claude, GitHub Copilot) to analyze chest X-rays using Visual RAG (RAD-DINO + FAISS + DenseNet).

## Features

- ✅ **DenseNet Classification**: 18 pathology detection (Lung Opacity, Pneumonia, etc.)
- ✅ **RAD-DINO Embeddings**: 768-dim visual embeddings for similarity search
- ✅ **FAISS Index**: Fast similarity search for similar historical cases
- ✅ **DICOM Support**: Native DICOM file reading
- ✅ **Gradio Canvas**: Interactive ROI drawing/annotation interface
- ✅ **ROI Analysis**: Analyze specific regions drawn on X-rays
- 🔜 **Medical SAM**: SAM-based region segmentation

## Quick Start

```bash
# Clone
git clone https://github.com/u9401066/medvision-mcp.git
cd medvision-mcp

# Install with uv
uv sync

# Test classification
uv run python -c "
import asyncio
from src.medvision_mcp.server import classify_xray

async def main():
    result = await classify_xray('path/to/xray.dcm')
    print(result)
asyncio.run(main())
"
```

## MCP Tools

| Tool | Description |
|------|-------------|
| `analyze_xray` | Full Visual RAG analysis (classification + similarity) |
| `classify_xray` | Quick DenseNet-121 classification (18 pathologies) |
| `search_similar_cases` | RAG similarity search |
| `build_rag_index` | Build FAISS index from image directory |
| `load_rag_index` | Load pre-built index |
| `get_engine_status` | Check model loading status |

## Gradio UI

Launch the interactive web UI:

```bash
# Start Gradio server
uv run python -m src.medvision_mcp.ui.app
# Open http://localhost:7860
```

**UI Tabs:**
| Tab | Description |
|-----|-------------|
| 📊 Analysis | Full image analysis (classification + RAG) |
| ⚡ Quick Classify | Fast 18-pathology classification |
| 🎨 Canvas ROI | **Draw ROIs** and analyze specific regions |
| 🔧 Build Index | Create FAISS index from images |
| 📂 Load Index | Load pre-built index |
| ℹ️ Status | Check model loading status |

## Claude Desktop Configuration

Add to `~/.config/claude/claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "medvision": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/medvision-mcp", "python", "-m", "src.medvision_mcp.server"]
    }
  }
}
```

## Architecture

```
┌─────────────────────────────────────────────────────────┐
│                    MCP Client (Claude, Copilot)         │
└─────────────────────────┬───────────────────────────────┘
                          │ stdio
┌─────────────────────────▼───────────────────────────────┐
│                   MedVision MCP Server                  │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────────┐  │
│  │ classify    │  │ search      │  │ analyze         │  │
│  │ _xray       │  │ _similar    │  │ _xray           │  │
│  └─────────────┘  └─────────────┘  └─────────────────┘  │
│                          │                              │
│  ┌───────────────────────▼────────────────────────────┐ │
│  │               Visual RAG Engine                    │ │
│  │         RAD-DINO │ FAISS │ DenseNet-121            │ │
│  └────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────┘
```

## Development

```bash
# Install dev dependencies  
uv sync --dev

# Run tests
uv run pytest

# Check types
uv run pyright
```

## License

MIT