Skip to main content
Glama
neosun100

Depth Pro MCP Server

by neosun100

English | 简体中文 | 繁體中文 | 日本語

🔬 Depth Pro Docker

Docker License Python CUDA

Production-ready Docker deployment for Apple's Depth Pro model

Zero-shot monocular metric depth estimation • 2.25MP depth map in 0.3s

Screenshot


✨ Features

Feature

Description

🚀 One-Click Deploy

Docker Compose for instant deployment

🎨 Modern Web UI

Beautiful interface with multiple colormaps

🔌 REST API

Full-featured API with Swagger docs

🤖 MCP Server

Model Context Protocol support for AI assistants

📊 Multiple Outputs

JPG visualization, NPZ data, 16-bit PNG

🎛️ Manual Focal Length

Override auto focal length estimation

🌐 Multi-language

Chinese, English, Japanese UI

💾 GPU Management

Auto memory offload, status monitoring

🚀 Quick Start

# One command to run (All-in-One image, no downloads needed!)
docker run -d --name depth-pro --gpus all -p 8500:8500 neosun/depth-pro:latest

# Open browser
open http://localhost:8500

📦 Installation

Prerequisites

  • Docker 24.0+ with NVIDIA Container Toolkit

  • NVIDIA GPU with 8GB+ VRAM (16GB+ recommended)

  • CUDA 12.1 compatible driver

All-in-One image includes model weights (~5GB), no additional downloads required!

# Pull and run (model included in image)
docker run -d \
  --name depth-pro \
  --gpus all \
  -p 8500:8500 \
  -e GPU_IDLE_TIMEOUT=60 \
  neosun/depth-pro:latest

Method 2: Docker Compose

# Create docker-compose.yml
cat > docker-compose.yml << 'EOF'
services:
  depth-pro:
    image: neosun/depth-pro:latest
    container_name: depth-pro
    ports:
      - "8500:8500"
    environment:
      - GPU_IDLE_TIMEOUT=60
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: 1
              capabilities: [gpu]
    restart: unless-stopped
EOF

# Start service
docker compose up -d

Method 3: Local Development

# Create conda environment
conda create -n depth-pro python=3.9 -y
conda activate depth-pro

# Install dependencies
pip install -e .
pip install flask flask-cors flasgger gunicorn

# Download model
source get_pretrained_models.sh

# Run server
python app.py

⚙️ Configuration

Environment Variables

Variable

Default

Description

PORT

8500

Server port

GPU_IDLE_TIMEOUT

60

Seconds before GPU memory release

NVIDIA_VISIBLE_DEVICES

0

GPU device index

docker-compose.yml

services:
  depth-pro:
    image: neosun/depth-pro:latest
    container_name: depth-pro
    ports:
      - "8500:8500"
    environment:
      - PORT=8500
      - GPU_IDLE_TIMEOUT=60
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: 1
              capabilities: [gpu]
    restart: unless-stopped
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8500/health"]
      interval: 30s
      timeout: 10s
      retries: 3

📖 Usage

Web Interface

Visit http://localhost:8500 for the interactive UI:

  1. Upload an image (JPG/PNG/WebP/HEIC)

  2. Select colormap (Turbo, Viridis, Plasma, etc.)

  3. Optionally set manual focal length

  4. Click "Process" and download results

REST API

Depth Estimation

curl -X POST http://localhost:8500/api/predict \
  -F "file=@image.jpg" \
  -F "colormap=turbo" \
  -F "focal_length=1000"

Response:

{
  "task_id": "abc12345",
  "focal_length_px": 1000.0,
  "min_depth_m": 0.5,
  "max_depth_m": 10.2,
  "mean_depth_m": 3.4,
  "image_size": "1920x1080",
  "depth_image_base64": "...",
  "download_jpg": "/api/download/abc12345/color.jpg",
  "download_npz": "/api/download/abc12345/depth.npz",
  "download_16bit": "/api/download/abc12345/depth16.png"
}

GPU Status

curl http://localhost:8500/api/gpu/status

Release GPU Memory

curl -X POST http://localhost:8500/api/gpu/offload

API Documentation

Swagger UI available at: http://localhost:8500/apidocs/

MCP Server (for AI Assistants)

Add to your Claude Desktop config:

{
  "mcpServers": {
    "depth-pro": {
      "command": "docker",
      "args": ["exec", "-i", "depth-pro", "python3", "mcp_server.py"]
    }
  }
}

Available MCP tools:

  • estimate_depth - Process single image

  • batch_estimate_depth - Process multiple images

  • get_gpu_status - Check GPU status

  • release_gpu - Free GPU memory

📁 Project Structure

depth-pro-docker/
├── app.py                 # Flask web server
├── mcp_server.py          # MCP server for AI assistants
├── gpu_manager.py         # GPU memory management
├── Dockerfile             # Container build file
├── docker-compose.yml     # Docker Compose config
├── checkpoints/           # Model weights (download separately)
│   └── depth_pro.pt
├── src/depth_pro/         # Core model code
├── templates/             # HTML templates
├── static/                # CSS/JS assets
└── docs/                  # Documentation

🛠️ Tech Stack

  • Model: Apple Depth Pro (DINOv2 + Multi-scale ViT)

  • Backend: Flask + Gunicorn

  • Frontend: Vanilla JS + Modern CSS

  • Container: Docker + NVIDIA Container Toolkit

  • GPU: PyTorch + CUDA 12.1

📝 Limitations

  • Far-field scenes (>20m) may have inaccurate absolute depth values

  • Best suited for indoor and close-range outdoor scenes

  • Relative depth ordering is generally reliable even for far scenes

🤝 Contributing

Contributions are welcome! Please read CONTRIBUTING.md first.

  1. Fork the repository

  2. Create feature branch (git checkout -b feature/amazing)

  3. Commit changes (git commit -m 'Add amazing feature')

  4. Push to branch (git push origin feature/amazing)

  5. Open a Pull Request

📄 License

This project is based on Apple's Depth Pro and is licensed under the Apple Sample Code License.

🙏 Acknowledgements


⭐ Star History

Star History Chart

📱 Follow Me

WeChat

Latest Blog Posts

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/neosun100/depth-pro-docker'

If you have feedback or need assistance with the MCP directory API, please join our Discord server