Beaucoup de connaissances métier résident dans les e‑mails, et la partie dont vous avez besoin se trouve généralement dans une pièce jointe : le devis, l’amendement signé, le planning révisé. GroupDocs.Search.Mcp, exécuté localement dans Docker, ouvre les fichiers e‑mail et les archives (PST, OST, MSG, EML) et indexe chaque message ainsi que chaque pièce jointe, de sorte que Claude Desktop, Cursor ou Copilot puissent rechercher une archive sur place et indiquer exactement de quelle pièce jointe provient la correspondance :

Indexez le dossier de messagerie. Quel message mentionne une hausse de prix, et que dit‑il exactement ?

La version pas à pas avec configuration et dépannage se trouve dans la documentation : Comment rechercher des archives d’e‑mail et des pièces jointes avec un agent IA, localement.

Pourquoi les e‑mails sont-ils difficiles pour un agent ?

Parce qu’une archive est un conteneur de conteneurs. Un PST contient des dossiers, les dossiers contiennent des messages, les messages contiennent des pièces jointes, et les pièces jointes sont elles‑mêmes des fichiers Word, PDF ou feuilles de calcul. Un agent équipé d’outils de fichiers ne voit qu’un gros fichier binaire. Exporter l’archive en fichiers séparés fonctionne, mais c’est lent, cela duplique les données sensibles sur le disque, et il faut recommencer chaque fois que l’archive change. De plus, un modèle ne peut pas lire un PST du tout.

Le moteur de recherche gère lui‑même l’imbrication. Chaque message et chaque pièce jointe devient un élément interrogeable, et un résultat indique à la fois où se trouve le conteneur et où, à l’intérieur, la correspondance a été trouvée.

À quoi ressemble une correspondance à l’intérieur d’une pièce jointe ?

Voici ce que le serveur a renvoyé lors de notre test avec trois messages EML. L’expression « price increase » apparaît uniquement dans le devis Word joint à l’un d’eux ; le corps du message indique simplement « please find the updated quotation attached ».

-> add_to_index {"documentsPath":"mail","indexName":"mail"}
<- Indexed 'mail' into index 'mail': 3 document(s) added, 3 in the index.

-> search {"query":"\"price increase\"","indexName":"mail"}
<- { "documentsFound": 1, "documents": [
     { "filePath": "mail/2026-09-18-re-q3-pricing.eml",
       "innerPath": "quotation-Q-2026-118.docx",
       "occurrences": 1 } ] }

-> get_text_fragments {"query":"\"price increase\"","indexName":"mail"}
<- === mail/2026-09-18-re-q3-pricing.eml → quotation-Q-2026-118.docx
   (1 occurrence(s)) ===
     …Due to raw material costs we announce a price increase
   of 6 percent from 2026-11-01.…

filePath correspond au message ; innerPath correspond à la pièce jointe. L’agent peut répondre : « le message Re : Q3 pricing de Contoso, dans la pièce jointe quotation Q‑2026‑118 : une hausse de 6 % à partir du 1er novembre », et chaque partie de cette phrase est traçable.

mail/2026-09-18-re-q3-pricing.eml          <- filePath
  |- body: "please find the updated quotation attached"
  '- attachment: quotation-Q-2026-118.docx  <- innerPath
        "...we announce a price increase of 6 percent..."

Questions qui fonctionnent sur le courrier

Le langage de requête habituel s’applique, et certains modèles sont particulièrement utiles pour la correspondance. Tous ont été testés sur la même boîte aux lettres :

  • « Which message from Fabrikam mentions a delivery delay? » : fabrikam AND delay. Les adresses d’expéditeur sont indexées avec le message, ainsi contoso a également trouvé une facture dont le corps ne mentionne jamais l’entreprise.
  • « Find every email that mentions order 77812 » : 77812. Les nombres entiers sont traités comme des mots.
  • « Which invoices fall due in October? » : invoice AND content: daterange(2026-10-01 ~~ 2026-10-31). Cela correspond aux dates écrites dans le texte du message, ici « due on 2026-10-22 ». Le préfixe content: est important : sans lui, une plage de dates correspond également aux dates que le moteur enregistre pour chaque fichier.

Pourquoi le local compte davantage pour le courrier que pour tout autre chose

Les e‑mails contiennent les informations sensibles : données personnelles, négociations, fils RH, conseils juridiques. Les outils de recherche qui exigent que la boîte aux lettres soit téléchargée ou synchronisée avec un service sont inacceptables pour de nombreuses équipes. Ici, l’archive est montée en lecture‑seule dans un conteneur sur la machine, indexée là‑bas, et recherchée sur place. Le seul texte qui sort est celui que l’agent cite dans sa réponse, et avec un modèle hébergé localement, même cela ne quitte pas la machine.

Pour une configuration plus stricte, montez l’archive en lecture‑seule et donnez à l’index son propre volume :

docker run --rm -i \
  -v /srv/mail:/data:ro \
  -v /srv/mail-index:/index -e GROUPDOCS_MCP_INDEX_PATH=/index \
  ghcr.io/groupdocs-search/search-net-mcp:latest

Délimiter une grande archive

Une archive contenant des dizaines de milliers de messages s’indexe correctement avec une licence, mais il faut procéder de façon réfléchie. Indexez par dossier ou par année en tant que chemins séparés (mail/2025, mail/2026), de sorte qu’une année puisse être supprimée ou reconstruite indépendamment, le moteur supprimant des chemins entiers plutôt que des fichiers isolés. Conservez le courrier dans son propre index, séparé des contrats ou rapports, afin qu’une question sur la correspondance ne doive pas parcourir tout le reste. Et lorsque l’archive grossit, update_index récupère les nouveaux messages sans relire les anciens.

Limites honnêtes

  • En mode évaluation, un index ne contient au maximum que 100 documents et une recherche renvoie au plus 10 résultats, et chaque message et chaque pièce jointe comptent, donc une vraie archive nécessite une licence. Appelez get_license_status d’abord.
  • Un gros PST prend du temps à indexer : chaque message et chaque pièce jointe est ouvert. Indexez une fois, puis utilisez update_index.
  • Les pièces jointes scannées sans couche texte sont indexées uniquement par leurs propriétés de fichier ; il n’y a pas d’OCR.
  • Docker uniquement ; sous Linux ajoutez --user "$(id -u):$(id -g)" sauf si vous utilisez la configuration en lecture‑seule ci‑dessus.

FAQ

Puis‑je rechercher un fichier PST avec l’IA sans Outlook ?
Oui. Le moteur lit directement PST, OST, MSG et EML ; Outlook n’est pas impliqué et rien n’est exporté.

Recherche‑t‑il à l’intérieur des pièces jointes d’e‑mail ?
Oui. Les pièces jointes sont indexées comme des éléments de leur message, et une correspondance à l’intérieur d’une pièce jointe revient avec le champ innerPath indiquant la pièce jointe.

Ma boîte aux lettres est‑elle téléchargée quelque part ?
Non. Elle est lue à l’intérieur d’un conteneur local ; seules les extraits cités par l’agent atteignent votre fournisseur de modèle.

Approfondir