camillebrl/vlm_mcp_server
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.
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 imagesquery
(string) : Question ou requĂȘte sur les imagescheck_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'imagequery
(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'imagequery
(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)