Souvent, non. Pour un dossier de contrats, de rapports ou d’e‑mails, un agent IA doté d’un outil de recherche en texte intégral trouve les bons fichiers, ne lit que les passages correspondants et les cite, et l’index fonctionne localement sans modèle d’embedding et sans magasin de vecteurs. GroupDocs.Search.Mcp fournit à Claude Desktop, Claude Code, Cursor ou Copilot cet outil en une seule commande Docker :
Indexez le dossier des contrats, puis dites‑moi quels contrats mentionnent une pénalité de résiliation et citez la clause.
La version étape par étape avec configuration et dépannage se trouve dans la documentation : Comment rechercher des documents avec des agents IA en utilisant MCP.
Pourquoi tout le monde se tourne d’abord vers les embeddings ?
Parce que la « génération augmentée par récupération » est arrivée comme une recette : diviser les documents en fragments, intégrer chaque fragment, stocker les vecteurs, intégrer la question, prendre les fragments les plus proches et les coller dans le prompt. Cela fonctionne, et pour des questions formulées très différemment des documents, c’est l’outil approprié. Mais c’est un pipeline nécessitant un modèle d’embedding à appeler, un magasin à exécuter, un réglage du découpage, et un travail de ré‑embedding chaque fois que les documents changent. Pour « quels‑uns de mes 300 contrats mentionnent une pénalité de résiliation », cette machinerie répond à une question qu’un index de recherche répond directement.
Les preuves ont rattrapé l’intuition. Une étude publiée sur arXiv fin 2025 (Keyword search is all you need) a donné à un agent uniquement la recherche par mots‑clés et expressions régulières sur un dossier et l’a mesurée contre un pipeline RAG standard : plus de 90 % des scores RAG, sans base de données vectorielle, et mieux adaptée aux collections qui changent souvent. Les agents de codage avaient déjà montré ce schéma en pratique : ils recherchent avec grep, affinent, puis recherchent à nouveau.
Que fait l’agent à la place ?
Trois appels. GroupDocs.Search.Mcp expose huit outils ; la boucle en nécessite trois :
user agent Search MCP server
| "Which contracts mention a termination penalty?" |
|---------------->| |
| |-- add_to_index ------------------------->| reads the
| | {"documentsPath":"contracts", | files once,
| | "indexName":"contracts"} | stores text
| |<- "5 document(s) added, 5 in the index" --|
| |-- search ------------------------------->|
| | {"query":"termination AND penalty"} |
| |<- {"documentsFound":3, "documents":[ ... | which files
| |-- get_text_fragments ------------------->|
| | {"query":"\"termination penalty\""} |
| |<- === contracts/acme-...-agreement.pdf ===| the passages
|<- "Two contracts carry one: Acme (3 monthly fees, 12.3), |
| Globex (50% of the remaining fees). Initech excludes it."|
add_to_index lit les fichiers une fois et conserve le texte dans un index nommé sur le disque. search renvoie les fichiers correspondants sous forme de JSON avec le nombre d’occurrences. get_text_fragments renvoie chaque correspondance avec quelques mots de contexte, ainsi l’agent cite la clause au lieu de charger le contrat entier.
Voici ce que le serveur a réellement renvoyé lors de notre test, sur cinq contrats synthétiques :
-> search {"query":"termination AND penalty","indexName":"contracts"}
<- documentsFound 3: acme-master-services-agreement.pdf,
globex-consulting-agreement.docx, initech-nda.docx
-> get_text_fragments {"query":"\"termination penalty\"",...}
<- === contracts/acme-master-services-agreement.pdf (1 occurrence(s)) ===
…a termination penalty of three monthly fees applies, payable
within 30…
=== contracts/globex-consulting-agreement.docx (1 occurrence(s)) ===
…Early termination penalty: the Client pays 50 percent of the fees…
Remarquez le troisième contrat. Le NDA Initech a correspondé à termination AND penalty parce qu’il indique « il n’y a aucun frais et aucune pénalité associés à la résiliation ». Le passage est ce qui distingue une correspondance d’une simple mention, et un agent qui lit les passages le signale. C’est l’ancrage : chaque affirmation dans la réponse pointe vers un fichier et une phrase que vous pouvez ouvrir.
Où chaque approche l’emporte‑t‑elle ?
Pipeline d'embedding Recherche en texte intégral agentique
------------------------------------- -------------------------------------
diviser, intégrer, stocker dans un magasin de vecteurs add_to_index : un index local en texte intégral
intégrer la question, prendre les k meilleurs fragments l'agent recherche, affine, recherche à nouveau
coller les fragments dans le prompt get_text_fragments : passages cités
ré‑intégrer lorsque les documents changent update_index relit ce qui a changé
nécessite un modèle d'embedding et un magasin aucun appel de modèle, aucun réseau à l'exécution
correspond au sens ; le classement est opaque correspond aux mots ; chaque résultat est explicable
La recherche en texte intégral échoue lorsque la question et le document ne partagent aucun mot : « quels contrats sont risqués pour nous ? » n’a aucun mot‑clé. Elle réussit lorsque le vocabulaire est partagé, ce qui décrit la plupart des questions que les gens posent sur leurs propres documents : le nom d’une clause, un produit, un client, un numéro de facture, une plage de dates. Lorsqu’une requête ne trouve rien, l’agent essaie renewal OR renews, ou une correspondance floue, comme le ferait une personne. Le serveur aide : une requête de deux mots non citée ne correspond à rien dans GroupDocs.Search, et le résultat vide comporte un hint qui indique à l’agent de citer la phrase.
Quel outil pour quelle question ?
| L’utilisateur demande | L’agent appelle |
|---|---|
| “Indexer ce dossier” | add_to_index |
| “Quels fichiers mentionnent X ?” | search |
| “Que dit‑il à propos de X ?” | get_text_fragments |
| “Fichiers modifiés, rafraîchir” | update_index |
| “Oublier le dossier des brouillons” | remove_from_index |
| “Que contient l’index ?” | get_index_info |
| “Créer un index séparé” | create_index |
| “Pourquoi seulement 10 résultats ?” | get_license_status |
L’index comprend 82 formats, dont PDF, Office, OpenDocument, HTML et les archives d’e‑mail (PST, OST, MSG, EML) avec leurs pièces jointes.
Comment l’exécuter ?
claude mcp add groupdocs-search -- docker run --rm -i \
-v /path/to/documents:/data ghcr.io/groupdocs-search/search-net-mcp:latest
Cursor, Claude Desktop, VS Code avec GitHub Copilot et les autres clients utilisent le même conteneur dans leur propre fichier de configuration : Register in AI clients. Sous Linux, ajoutez --user "$(id -u):$(id -g)" afin que le conteneur puisse écrire son index dans votre dossier. Le serveur exécute le moteur GroupDocs.Search 26.10, dont le nouveau format d’index rend les index plus petits et réduit d’environ moitié leur consommation mémoire (release notes).
Limites honnêtes
- En mode évaluation, un index contient au maximum 100 documents et une recherche renvoie au maximum 10 résultats ; chaque réponse l’indique. Appelez d’abord
get_license_status. - C’est une recherche en texte intégral, pas une recherche sémantique : elle correspond aux mots, pas au sens.
- Pas d’OCR : les PDF numérisés sans couche de texte sont indexés uniquement par leurs propriétés de fichier.
- Il est fourni uniquement sous forme d’image Docker (l’outil empaqueté dépasse la limite de taille de NuGet).
FAQ
Claude peut‑il rechercher mes documents locaux sans les télécharger ?
Oui. Le serveur s’exécute dans un conteneur sur votre machine et lit le dossier que vous montez ; seules les passages cités par l’agent atteignent le modèle.
Est‑ce du RAG ?
C’est de la récupération augmentée, mais agentique : le modèle décide quoi rechercher et quand il en a assez, en utilisant un index en texte intégral au lieu d’embeddings.
Que se passe‑t‑il lorsque mes documents changent ?
Demandez à l’agent de rafraîchir. update_index relit uniquement les fichiers modifiés, ajoutés et supprimés.
Approfondir
- Documentation, guide canonique : Comment rechercher des documents avec des agents IA en utilisant MCP
- Hub de documentation : GroupDocs.Search MCP Server
- Pour les agents de codage : grep ne peut pas lire les PDF : donnez à votre agent de codage un index de documents
- Connexe : Pourquoi un agent IA ne devrait pas lire 300 contrats pour répondre à une question
- Connexe : Réponses ancrées à partir de vos fichiers : citez le passage, pas la mémoire du modèle
- Connexe : Recherchez votre archive d’e‑mail avec un agent IA : PST, MSG, EML et les pièces jointes à l’intérieur
- Connexe : Mémoire de projet pour les agents IA : un index par projet, maintenu à jour
- Sur site et modèle de sécurité : 3 architectures pour le traitement de documents IA, et celle qui garde les fichiers dans votre réseau
- Publication du moteur : GroupDocs.Search for .NET 26.10 – October 2026 Release Highlights
- Questions : GroupDocs Search forum
- Source : GroupDocs.Search.Mcp on GitHub