Milvus MCP Server
officielRecherchez, interrogez et interagissez avec les données de votre base vectorielle Milvus.
Documentation
Serveur MCP pour Milvus
Le Model Context Protocol (MCP) est un protocole ouvert qui permet une intégration transparente entre les applications LLM et les sources de données et outils externes. Que vous construisiez un IDE alimenté par l'IA, amélioriez une interface de chat ou créiez des flux de travail IA personnalisés, MCP fournit un moyen standardisé de connecter les LLM avec le contexte dont ils ont besoin.
Ce dépôt contient un serveur MCP qui donne accès aux fonctionnalités de la base de données vectorielle Milvus.

Prérequis
Avant d'utiliser ce serveur MCP, assurez-vous d'avoir :
- Python 3.10 ou supérieur
- Une instance Milvus en cours d'exécution (locale ou distante)
- uv installé (recommandé pour exécuter le serveur)
Utilisation
La méthode recommandée pour utiliser ce serveur MCP est de l'exécuter directement avec uv sans installation. C'est ainsi que Claude Desktop et Cursor sont configurés pour l'utiliser dans les exemples ci-dessous.
Si vous souhaitez cloner le dépôt :
git clone https://github.com/zilliztech/mcp-server-milvus.git
cd mcp-server-milvus
Ensuite, vous pouvez exécuter le serveur directement :
uv run src/mcp_server_milvus/server.py --milvus-uri http://localhost:19530
Vous pouvez également modifier le fichier .env dans le répertoire src/mcp_server_milvus/ pour définir les variables d'environnement et exécuter le serveur avec la commande suivante :
uv run src/mcp_server_milvus/server.py
Important : le fichier .env aura une priorité plus élevée que les arguments de ligne de commande.
Modes d'exécution
Le serveur prend en charge deux modes d'exécution : stdio (par défaut) et SSE (Server-Sent Events).
Mode Stdio (par défaut)
-
Description : Communique avec le client via l'entrée/sortie standard. C'est le mode par défaut si aucun mode n'est spécifié.
-
Utilisation :
uv run src/mcp_server_milvus/server.py --milvus-uri http://localhost:19530
Mode SSE
-
Description : Utilise les Server-Sent Events HTTP pour la communication. Ce mode permet à plusieurs clients de se connecter via HTTP et convient aux applications web.
-
Utilisation :
uv run src/mcp_server_milvus/server.py --sse --milvus-uri http://localhost:19530 --port 8000--sse: Active le mode SSE.--port: Spécifie le port pour le serveur SSE (par défaut : 8000).
-
Débogage en mode SSE :
Si vous souhaitez déboguer en mode SSE, après avoir démarré le service SSE, entrez la commande suivante :
mcp dev src/mcp_server_milvus/server.pyLa sortie sera similaire à :
% mcp dev src/mcp_server_milvus/merged_server.py Starting MCP inspector... ⚙️ Proxy server listening on port 6277 🔍 MCP Inspector is up and running at http://127.0.0.1:6274 🚀Vous pouvez ensuite accéder à l'inspecteur MCP à l'adresse
http://127.0.0.1:6274pour les tests.
Mode HTTP Streamable
-
Description : Utilise HTTP avec prise en charge du streaming pour la communication. C'est le transport recommandé pour les déploiements en production et prend en charge le fonctionnement avec et sans état.
-
Utilisation :
uv run src/mcp_server_milvus/server.py --streamable-http --milvus-uri http://localhost:19530 --port 8000--streamable-http: Active le mode HTTP Streamable.--port: Spécifie le port du serveur (par défaut : 8000).--stateless: Drapeau optionnel pour le mode sans état (pas de persistance de session).
-
Mode sans état :
uv run src/mcp_server_milvus/server.py --streamable-http --stateless --milvus-uri http://localhost:19530 --port 8000
Applications prises en charge
Ce serveur MCP peut être utilisé avec diverses applications LLM qui prennent en charge le Model Context Protocol :
- Claude Desktop : L'application de bureau d'Anthropic pour Claude
- Cursor : Éditeur de code alimenté par l'IA avec prise en charge MCP
- Clients MCP personnalisés : Toute application implémentant la spécification du client MCP
Utilisation avec Claude Desktop
Configuration pour différents modes
Configuration du mode SSE
Suivez ces étapes pour configurer Claude Desktop pour le mode SSE :
- Installez Claude Desktop depuis https://claude.ai/download.
- Ouvrez votre fichier de configuration Claude Desktop :
- macOS :
~/Library/Application Support/Claude/claude_desktop_config.json
- macOS :
- Ajoutez la configuration suivante pour le mode SSE :
{
"mcpServers": {
"milvus-sse": {
"url": "http://your_sse_host:port/sse",
"disabled": false,
"autoApprove": []
}
}
}
Configuration du mode HTTP Streamable
{
"mcpServers": {
"milvus-streamable-http": {
"url": "http://your_host:port/mcp",
"disabled": false,
"autoApprove": []
}
}
}
- Redémarrez Claude Desktop pour appliquer les modifications.
Configuration du mode Stdio
Pour le mode stdio, suivez ces étapes :
- Installez Claude Desktop depuis https://claude.ai/download.
- Ouvrez votre fichier de configuration Claude Desktop :
- macOS :
~/Library/Application Support/Claude/claude_desktop_config.json
- macOS :
- Ajoutez la configuration suivante pour le mode stdio :
{
"mcpServers": {
"milvus": {
"command": "/PATH/TO/uv",
"args": [
"--directory",
"/path/to/mcp-server-milvus/src/mcp_server_milvus",
"run",
"server.py",
"--milvus-uri",
"http://localhost:19530"
]
}
}
}
- Redémarrez Claude Desktop pour appliquer les modifications.
Utilisation avec Cursor
Cursor prend également en charge les outils MCP. Vous pouvez intégrer votre serveur MCP Milvus avec Cursor en suivant ces étapes :
Étapes d'intégration
- Ouvrez
Cursor Settings>MCP - Cliquez sur
Add new global MCP server - Après avoir cliqué, vous serez automatiquement redirigé vers le fichier
mcp.json, qui sera créé s'il n'existe pas
Configuration du fichier mcp.json
Pour le mode Stdio :
Écrasez le fichier mcp.json avec le contenu suivant :
{
"mcpServers": {
"milvus": {
"command": "/PATH/TO/uv",
"args": [
"--directory",
"/path/to/mcp-server-milvus/src/mcp_server_milvus",
"run",
"server.py",
"--milvus-uri",
"http://127.0.0.1:19530"
]
}
}
}
Pour le mode SSE :
-
Démarrez le service en exécutant la commande suivante :
uv run src/mcp_server_milvus/server.py --sse --milvus-uri http://your_sse_host --port portRemarque : Remplacez
http://your_sse_hostpar votre adresse d'hôte SSE réelle etportpar le numéro de port spécifique que vous utilisez. -
Une fois le service opérationnel, écrasez le fichier
mcp.jsonavec le contenu suivant :{ "mcpServers": { "milvus-sse": { "url": "http://your_sse_host:port/sse", "disabled": false, "autoApprove": [] } } }
Pour le mode HTTP Streamable :
-
Démarrez le service :
uv run src/mcp_server_milvus/server.py --streamable-http --milvus-uri http://your_host --port port -
Mettez à jour
mcp.json:{ "mcpServers": { "milvus-streamable-http": { "url": "http://your_host:port/mcp", "disabled": false, "autoApprove": [] } } }
Finalisation de l'intégration
Après avoir terminé les étapes ci-dessus, redémarrez Cursor ou rechargez la fenêtre pour vous assurer que la configuration prend effet.
Vérification de l'intégration
Pour vérifier que Cursor s'est intégré avec succès à votre serveur MCP Milvus :
- Ouvrez
Cursor Settings>MCP - Vérifiez si "milvus", "milvus-sse" ou "milvus-streamable-http" apparaissent dans la liste (selon le mode que vous avez choisi)
- Confirmez que les outils pertinents sont listés (par exemple, milvus_list_collections, milvus_vector_search, etc.)
- Si le serveur est activé mais affiche une erreur, consultez la section Dépannage ci-dessous
Outils disponibles
Le serveur fournit les outils suivants :
Opérations de recherche et de requête
-
milvus_text_search: Rechercher des documents en utilisant la recherche en texte intégral- Paramètres :
collection_name: Nom de la collection à rechercherquery_text: Texte à rechercherlimit: Le nombre maximum de résultats à retourner (par défaut : 5)output_fields: Champs à inclure dans les résultatsdrop_ratio: Proportion de termes à basse fréquence à ignorer (0.0-1.0) (par défaut : 0.2)
- Paramètres :
-
milvus_vector_search: Effectuer une recherche de similarité vectorielle sur une collection- Paramètres :
collection_name: Nom de la collection à recherchervector: Vecteur de requêtevector_field: Nom du champ pour la recherche vectorielle (par défaut : "vector")limit: Le nombre maximum de résultats à retourner (par défaut : 5)output_fields: Champs à inclure dans les résultatsfilter_expr: Expression de filtremetric_type: Métrique de distance (COSINE, L2, IP) (par défaut : "COSINE")radius: Borne inférieure optionnelle pour la recherche par plage (par défaut : None)range_filter: Borne supérieure optionnelle pour la recherche par plage (par défaut : None)
- Paramètres :
-
milvus_hybrid_search: Effectuer une recherche hybride sur une collection- Paramètres :
collection_name: Nom de la collection à rechercherquery_text: Requête textuelle pour la recherchetext_field: Nom du champ pour la recherche textuellevector: Vecteur de la requête textuellevector_field: Nom du champ pour la recherche vectoriellelimit: Le nombre maximum de résultats à retourner (par défaut : 5)output_fields: Champs à inclure dans les résultatsfilter_expr: Expression de filtresparse_radius: Borne inférieure optionnelle pour la recherche par plage sparse (par défaut : None)sparse_range_filter: Borne supérieure optionnelle pour la recherche par plage sparse (par défaut : None)dense_radius: Borne inférieure optionnelle pour la recherche par plage dense (par défaut : None)dense_range_filter: Borne supérieure optionnelle pour la recherche par plage dense (par défaut : None)
- Paramètres :
-
milvus_text_similarity_search: Effectuer une recherche de similarité textuelle sur une collectionRemarque : Cet outil n'est pris en charge que dans Milvus 2.6.0 et supérieur. Et vous devez définir la fonction d'embedding sur le serveur Milvus. Voir Fonction d'embedding pour plus de détails.
- Paramètres :
collection_name: Nom de la collection à rechercherquery_text: Requête textuelle pour la recherche de similaritéanns_field: Nom du champ pour la recherche textuellelimit: Le nombre maximum de résultats à retourner (par défaut : 5)output_fields: Champs à inclure dans les résultatsmetric_type: Métrique de distance (COSINE, L2, IP) (par défaut : "COSINE")filter_expr: Expression de filtre optionnelleradius: Borne inférieure optionnelle pour la recherche par plage (par défaut : None)range_filter: Borne supérieure optionnelle pour la recherche par plage (par défaut : None)
- Paramètres :
-
milvus_query: Interroger une collection en utilisant des expressions de filtre- Paramètres :
collection_name: Nom de la collection à interrogerfilter_expr: Expression de filtre (par exemple 'age > 20')output_fields: Champs à inclure dans les résultatslimit: Le nombre maximum de résultats à retourner (par défaut : 10)
- Paramètres :
Gestion des collections
-
milvus_list_collections: Lister toutes les collections dans la base de données -
milvus_create_collection: Créer une nouvelle collection avec une configuration rapide ou un schéma personnalisé- Paramètres :
collection_name: Nom de la nouvelle collectionauto_id: s'il faut générer automatiquement l'ID, par défaut Truedimension: dimension du vecteur, par défaut 768 ; pour la configuration rapide et sera ignoré sifield_schemaest fourniprimary_field_name: nom du champ primaire, par défaut "id" ; pour la configuration rapide et sera ignoré sifield_schemaest fournivector_field_name: nom du champ vectoriel, par défaut "vector" ; pour la configuration rapide et sera ignoré sifield_schemaest fournimetric_type: type de métrique, par défaut "COSINE" ; pour la configuration rapide et sera ignoré sifield_schemaest fournifield_schema: Liste des schémas de champ, chaque élément est un dictionnaire avec les clés suivantes :name: nom du champtype: type du champ
index_params: Liste optionnelle des paramètres d'index, chaque élément est un dictionnaire avec les clés suivantes :field_name: nom du champ à indexerindex_type: type d'index**kwargs: autres paramètres d'index optionnels
other_kwargs: Arguments nommés supplémentaires pour la création de la collection
- Paramètres :
-
milvus_load_collection: Charger une collection en mémoire pour la recherche et la requête- Paramètres :
collection_name: Nom de la collection à chargerreplica_number: Nombre de réplicas (par défaut : 1)
- Paramètres :
-
milvus_release_collection: Libérer une collection de la mémoire- Paramètres :
collection_name: Nom de la collection à libérer
- Paramètres :
-
milvus_get_collection_info: Liste des informations détaillées comme le schéma, les propriétés, l'ID de collection et d'autres métadonnées d'une collection spécifique.- Paramètres :
collection_name: Nom de la collection pour laquelle obtenir des informations détaillées
- Paramètres :
Opérations sur les données
-
milvus_insert_data: Insérer des données dans une collection- Paramètres :
collection_name: Nom de la collectiondata: Dictionnaire mappant les noms de champ aux listes de valeurs
- Paramètres :
-
milvus_delete_entities: Supprimer des entités d'une collection en fonction d'une expression de filtre- Paramètres :
collection_name: Nom de la collectionfilter_expr: Expression de filtre pour sélectionner les entités à supprimer
- Paramètres :
Variables d'environnement
MILVUS_URI: URI du serveur Milvus (peut être défini à la place de --milvus-uri)MILVUS_TOKEN: Jeton d'authentification optionnelMILVUS_DB: Nom de la base de données (par défaut "default")
Développement
Pour exécuter le serveur directement :
uv run server.py --milvus-uri http://localhost:19530
Exemples
Utilisation de Claude Desktop
Exemple 1 : Lister les collections
What are the collections I have in my Milvus DB?
Claude utilisera alors MCP pour vérifier ces informations sur votre base de données Milvus.
I'll check what collections are available in your Milvus database.
Here are the collections in your Milvus database:
1. rag_demo
2. test
3. chat_messages
4. text_collection
5. image_collection
6. customized_setup
7. streaming_rag_demo
Exemple 2 : Rechercher des documents
Find documents in my text_collection that mention "machine learning"
Claude utilisera les capacités de recherche en texte intégral de Milvus pour trouver des documents pertinents :
I'll search for documents about machine learning in your text_collection.
> View result from milvus-text-search from milvus (local)
Here are the documents I found that mention machine learning:
[Results will appear here based on your actual data]
Utilisation de Cursor
Exemple : Créer une collection
Dans Cursor, vous pouvez demander :
Create a new collection called 'articles' in Milvus with fields for title (string), content (string), and a vector field (128 dimensions)
Cursor utilisera le serveur MCP pour exécuter cette opération :
I'll create a new collection called 'articles' with the specified fields.
Collection 'articles' has been created successfully with the following schema:
- title: string
- content: string
- vector: float vector[128]
Dépannage
Problèmes courants
Erreurs de connexion
Si vous voyez des erreurs comme "Échec de la connexion au serveur Milvus" :
- Vérifiez que votre instance Milvus est en cours d'exécution :
docker ps(si vous utilisez Docker) - Vérifiez que l'URI est correct dans votre configuration
- Assurez-vous qu'aucune règle de pare-feu ne bloque la connexion
- Essayez d'utiliser
127.0.0.1au lieu delocalhostdans l'URI
Problèmes d'authentification
Si vous rencontrez des erreurs d'authentification :
- Vérifiez que votre
MILVUS_TOKENest correct - Vérifiez si votre instance Milvus nécessite une authentification
- Assurez-vous d'avoir les permissions appropriées pour les opérations que vous essayez d'effectuer
Outil introuvable
Si les outils MCP n'apparaissent pas dans Claude Desktop ou Cursor :
- Redémarrez l'application
- Consultez les journaux du serveur pour détecter d'éventuelles erreurs
- Vérifiez que le serveur MCP fonctionne correctement
- Appuyez sur le bouton d'actualisation dans les paramètres MCP (pour Cursor)
Obtenir de l'aide
Si vous continuez à rencontrer des problèmes :
- Consultez les problèmes GitHub pour des problèmes similaires
- Rejoignez le Discord de la communauté Milvus pour obtenir de l'aide
- Ouvrez un nouveau ticket avec des informations détaillées sur votre problème