MCP Hub
Back to servers

Qwen Video Understanding MCP Server

A specialized MCP server that leverages Qwen3-VL on Modal to provide advanced video and image analysis, including timestamp grounding, summarization, and OCR with a 256K context window.

Stars
1
Tools
8
Updated
Dec 27, 2025
Validated
Apr 21, 2026

Qwen Video Understanding MCP Server

An MCP (Model Context Protocol) server that enables Claude and other AI agents to analyze videos and images using Qwen3-VL deployed on Modal.

Highlights

  • Hours-long video support with full recall
  • Timestamp grounding - second-level precision
  • 256K context (expandable to 1M)
  • 32-language OCR support
  • Free/self-hosted on Modal serverless GPU

Features

  • Video Analysis: Analyze videos via URL with custom prompts
  • Image Analysis: Analyze images via URL
  • Video Summarization: Generate brief, standard, or detailed summaries
  • Text Extraction: Extract on-screen text and transcribe speech
  • Video Q&A: Ask specific questions about video content
  • Frame Comparison: Analyze changes and progression in videos

Architecture

Claude/Agent → MCP Server → Modal API → Qwen3-VL (GPU)

The MCP server acts as a bridge between Claude and your Qwen2.5-VL model deployed on Modal's serverless GPU infrastructure.

Prerequisites

  1. Modal Account: Sign up at modal.com
  2. Deployed Qwen Model: Deploy the video understanding model to Modal (see below)
  3. Python 3.10+

Quick Start

1. Deploy the Model to Modal (if not already done)

cd ~/qwen-video-modal
modal deploy qwen_video.py

2. Install the MCP Server

cd ~/qwen-video-mcp-server
pip install -e .

Or with uv:

uv pip install -e .

3. Configure Environment

cp .env.example .env
# Edit .env with your Modal workspace name

4. Add to Claude Desktop

Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "qwen-video": {
      "command": "uv",
      "args": [
        "--directory",
        "/Users/adamanz/qwen-video-mcp-server",
        "run",
        "server.py"
      ],
      "env": {
        "MODAL_WORKSPACE": "adam-31541",
        "MODAL_APP": "qwen-video-understanding"
      }
    }
  }
}

5. Restart Claude Desktop

The qwen-video tools should now be available.

Available Tools

analyze_video

Analyze a video with a custom prompt.

analyze_video(
  video_url="https://example.com/video.mp4",
  question="What happens in this video?",
  max_frames=16
)

analyze_image

Analyze an image with a custom prompt.

analyze_image(
  image_url="https://example.com/image.jpg",
  question="Describe this image"
)

summarize_video

Generate a video summary in different styles.

summarize_video(
  video_url="https://example.com/video.mp4",
  style="detailed"  # brief, standard, or detailed
)

extract_video_text

Extract text and transcribe speech from a video.

extract_video_text(
  video_url="https://example.com/presentation.mp4"
)

video_qa

Ask specific questions about a video.

video_qa(
  video_url="https://example.com/video.mp4",
  question="How many people appear in this video?"
)

compare_video_frames

Analyze changes throughout a video.

compare_video_frames(
  video_url="https://example.com/timelapse.mp4",
  comparison_prompt="How does the scene change?"
)

check_endpoint_status

Check the Modal endpoint configuration.

list_capabilities

List all server capabilities and supported formats.

Configuration

Environment VariableDescriptionDefault
MODAL_WORKSPACEYour Modal workspace/usernameadam-31541
MODAL_APPName of the Modal appqwen-video-understanding
QWEN_IMAGE_ENDPOINTOverride image endpoint URLAuto-generated
QWEN_VIDEO_ENDPOINTOverride video endpoint URLAuto-generated

Supported Formats

Video: mp4, webm, mov, avi, mkv

Image: jpg, jpeg, png, gif, webp, bmp

Limitations

  • Videos must be accessible via public URL
  • Maximum 64 frames extracted per video
  • Recommended video length: under 10 minutes for best results
  • First request may have cold start delay (Modal serverless)

Cost

The Modal backend uses A100-40GB GPUs:

  • ~$3.30/hour while processing
  • Scales to zero when idle (no cost)
  • Only charged for actual processing time

Troubleshooting

"Request timed out"

  • Video may be too large
  • Try a shorter video or reduce max_frames

"HTTP error 502/503"

  • Modal container is starting up (cold start)
  • Wait a few seconds and retry

"Video URL not accessible"

  • Ensure the URL is publicly accessible
  • Check for authentication requirements

Development

# Install dev dependencies
pip install -e ".[dev]"

# Run tests
pytest

License

MIT

Reviews

No reviews yet

Sign in to write a review