vlm_mcp_server

camillebrl/vlm_mcp_server

3.2

If you are the rightful owner of vlm_mcp_server 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 for image analysis using the Vision-Language InternVL3 model, enabling image relevance evaluation and text response generation based on visual content.

Tools
4
Resources
0
Prompts
0

VLM MCP Server

Un serveur MCP (Model Context Protocol) pour l'analyse d'images utilisant le modĂšle Vision-Language InternVL3. Ce serveur permet d'Ă©valuer la pertinence d'images par rapport Ă  des requĂȘtes et de gĂ©nĂ©rer des rĂ©ponses textuelles basĂ©es sur le contenu visuel.

Fonctionnalités

  • Analyse d'images avec requĂȘte : Analyse multiple d'images avec vĂ©rification automatique de pertinence
  • VĂ©rification de pertinence : Évalue si une image est pertinente pour une requĂȘte donnĂ©e
  • Analyse d'image unique : Analyse dĂ©taillĂ©e d'une seule image
  • Gestion intelligente de la mĂ©moire : Chargement/dĂ©chargement automatique du modĂšle
  • Support GPU optimisĂ© : Utilisation efficace de la mĂ©moire GPU avec nettoyage automatique

Architecture

Le serveur utilise une architecture modulaire avec :

  • VLMServer : Serveur MCP principal gĂ©rant les outils et les requĂȘtes
  • VLMSModelManager : Gestionnaire singleton pour le chargement/dĂ©chargement du modĂšle
  • VLMSModel : Interface avec le modĂšle InternVL3 pour l'analyse d'images
  • Utilitaires : Scripts de nettoyage GPU et gestion des processus

Configuration client MCP

{
  "mcpServers": {
    "vlm-server": {
      "command": "/path/to/vlm-server/start_vlm_server.sh"
    }
  }
}

Debugging

Pour afficher les logs du server:

tail -n 1000 /tmp/vlm_mcp_startup.log

Installation

Prérequis

  • Python 3.10+
  • CUDA (pour l'accĂ©lĂ©ration GPU)
  • Poetry pour la gestion des dĂ©pendances

Installation des dépendances

# Cloner le repository
git clone <repository-url>
cd vlm-server

# Installer avec Poetry
make install
# ou directement avec Poetry
poetry install

Démarrage du serveur

# Via le script de démarrage
./start_vlm_server.sh

# Ou directement via Poetry
poetry run python -m vlm_server.cli --log-level INFO

Outils disponibles

1. analyze_images_with_query

Analyse multiple d'images avec vérification de pertinence automatique.

ParamĂštres :

  • image_paths (array) : Liste des chemins vers les images
  • query (string) : Question ou requĂȘte sur les images
  • check_relevance (boolean, optionnel) : VĂ©rifier la pertinence (dĂ©faut: true)
  • metadata (array, optionnel) : MĂ©tadonnĂ©es pour chaque image

Exemple :

{
  "image_paths": ["/path/to/image1.jpg", "/path/to/image2.png"],
  "query": "Quels sont les éléments techniques visibles dans ces diagrammes ?",
  "check_relevance": true
}
2. check_image_relevance

VĂ©rifie si une image est pertinente pour une requĂȘte.

ParamĂštres :

  • image_path (string) : Chemin vers l'image
  • query (string) : RequĂȘte pour vĂ©rifier la pertinence

Exemple :

{
  "image_path": "/path/to/document.jpg",
  "query": "Cette image contient-elle des informations sur les ventes ?"
}
3. analyze_single_image

Analyse détaillée d'une seule image.

ParamĂštres :

  • image_path (string) : Chemin vers l'image
  • query (string) : Question sur l'image
4. get_model_status

Obtient l'état actuel du modÚle (chargé/déchargé, mémoire utilisée).

Gestion de la mémoire

Le serveur implémente une gestion intelligente de la mémoire GPU :

Chargement dynamique

  • Le modĂšle n'est chargĂ© qu'au premier usage
  • DĂ©chargement automatique quand aucune rĂ©fĂ©rence active
  • Support de diffĂ©rents modĂšles InternVL3

Nettoyage automatique

  • Garbage collection Python aprĂšs chaque opĂ©ration
  • Vidage agressif du cache CUDA
  • RĂ©initialisation des statistiques mĂ©moire

Formatage du code

# Formater et vérifier le code
make format

# Nettoyer les fichiers temporaires
make clean

ModÚles utilisés

Le serveur utilise par défaut OpenGVLab/InternVL3-1B mais supporte d'autres modÚles InternVL3 :

  • OpenGVLab/InternVL3-1B (recommandĂ©, plus lĂ©ger)
  • OpenGVLab/InternVL3-2B
  • OpenGVLab/InternVL3-8B

Configuration GPU

  • Support multi-GPU avec device_map="auto"
  • Quantification 8-bit pour rĂ©duire l'usage mĂ©moire
  • Flash Attention quand disponible
  • Preprocessing dynamique des images: Taille d'image par dĂ©faut : 448x448 pixels, maximum 12 patches par image pour le preprocessing

Limites

  • Maximum 2 images par requĂȘte pour Ă©viter l'Ă©puisement mĂ©moire GPU (Ă  modifier si plus de mĂ©moire gpu disponible)