Molte conoscenze aziendali vivono nelle email, e la parte di cui hai bisogno si trova di solito in un allegato: il preventivo, l’emendamento firmato, il programma rivisto. GroupDocs.Search.Mcp, in esecuzione localmente in Docker, apre file email e archivi (PST, OST, MSG, EML) e indicizza ogni messaggio e ogni allegato, così Claude Desktop, Cursor o Copilot possono cercare un archivio in loco e indicare esattamente da quale allegato proviene una corrispondenza:
Indicizza la cartella di posta. Quale messaggio menziona un aumento dei prezzi, e cosa dice esattamente?
La versione passo‑passo con configurazione e risoluzione dei problemi è nella documentazione: Come cercare archivi email e allegati con un agente IA, localmente.
Perché le email sono difficili per un agente?
Perché un archivio è un contenitore di contenitori. Un PST contiene cartelle, le cartelle contengono messaggi, i messaggi contengono allegati, e gli allegati sono file Word, PDF e fogli di calcolo a tutti gli effetti. Un agente con strumenti per i file vede un unico grande file binario. Esportare l’archivio in file sparsi prima funziona, ma è lento, duplica dati sensibili sul disco e deve essere rifatto quando l’archivio cambia. Inoltre un modello non può leggere affatto un PST.
Il motore di ricerca gestisce il nesting da solo. Ogni messaggio e ogni allegato diventano un elemento ricercabile, e un risultato registra sia dove si trova il contenitore sia dove all’interno è stata trovata la corrispondenza.
Come appare una corrispondenza all’interno di un allegato?
Ecco cosa ha restituito il server nel nostro test con tre messaggi EML. La frase “aumento dei prezzi” appare solo nel preventivo Word allegato a uno di essi; il corpo del messaggio dice semplicemente “si prega di trovare il preventivo aggiornato allegato”.
-> 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 è il messaggio; innerPath è l’allegato. L’agente può rispondere “il messaggio Re: Q3 pricing di Contoso, nel preventivo allegato Q‑2026‑118: un aumento del 6 % dal 1 novembre”, e ogni parte di quella frase è tracciabile.
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..."
Domande che funzionano sulla posta
Il consueto linguaggio di query si applica, e alcuni pattern sono particolarmente utili per la corrispondenza. Tutti questi sono stati verificati sulla stessa casella di prova:
- “Quale messaggio da Fabrikam menziona un ritardo nella consegna?”:
fabrikam AND delay. Gli indirizzi del mittente sono indicizzati con il messaggio, cosìcontosoha anche trovato una fattura il cui corpo non nomina mai l’azienda. - “Trova tutte le email che menzionano l’ordine 77812”:
77812. I numeri interi sono parole. - “Quali fatture scadono in ottobre?”:
invoice AND content: daterange(2026-10-01 ~~ 2026-10-31). Questo corrisponde alle date scritte nel testo del messaggio, qui “due on 2026-10-22”. Il prefissocontent:è importante: senza di esso, un intervallo di date corrisponde anche alle date che il motore registra per ogni file.
Perché il locale è più importante per la posta rispetto a qualsiasi altra cosa
Le email contengono il materiale sensibile: dati personali, negoziazioni, thread HR, consulenze legali. Gli strumenti di ricerca che richiedono il caricamento o la sincronizzazione della casella su un servizio sono inaccettabili per molti team. Qui l’archivio è montato in sola lettura in un contenitore sulla macchina, indicizzato lì e ricercato lì. L’unico testo che esce è quello che l’agente cita nella sua risposta, e con un modello ospitato localmente, nemmeno quello.
Per una configurazione più stretta, monta l’archivio in sola lettura e assegna all’indice un volume dedicato:
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
Delimitare un archivio di grandi dimensioni
Un archivio di decine di migliaia di messaggi si indicizza senza problemi con una licenza, ma è bene essere metodici. Indicizza per cartella o per anno come percorsi separati (mail/2025, mail/2026), così un anno può essere rimosso o ricostruito autonomamente, poiché il motore rimuove interi percorsi indicizzati anziché singoli file. Mantieni la posta nel proprio indice, separato da contratti o report, così una domanda sulla corrispondenza non deve setacciare tutto il resto. E quando l’archivio cresce, update_index rileva i nuovi messaggi senza rileggerli tutti.
Limiti onesti
- In modalità valutazione un indice contiene al massimo 100 documenti e una ricerca restituisce al massimo 10, e ogni messaggio e allegato conta, quindi un archivio reale richiede una licenza. Chiama prima
get_license_status. - Un PST di grandi dimensioni richiede tempo per l’indicizzazione: ogni messaggio e allegato viene aperto. Indicizza una volta, poi usa
update_index. - Gli allegati scansionati senza livello di testo sono indicizzati solo per le loro proprietà di file; non c’è OCR.
- Solo Docker; su Linux aggiungi
--user "$(id -u):$(id -g)"a meno che non usi la configurazione in sola lettura descritta sopra.
FAQ
Posso cercare un file PST con IA senza Outlook?
Sì. Il motore legge PST, OST, MSG ed EML direttamente; Outlook non è coinvolto e nulla viene esportato.
Cerca all’interno degli allegati email?
Sì. Gli allegati sono indicizzati come elementi del loro messaggio, e una corrispondenza all’interno di uno di essi ritorna con innerPath che indica l’allegato.
La mia casella di posta viene caricata da qualche parte?
No. Viene letta all’interno di un contenitore locale; solo i passaggi citati dall’agente raggiungono il provider del modello.
Approfondisci
- Documentazione, guida canonica: Come cercare archivi email e allegati con un agente IA, localmente
- Hub della documentazione: GroupDocs.Search MCP Server
- Inizia qui: Hai bisogno di un database vettoriale per porre domande su una cartella di documenti?
- Correlato: Perché un agente IA non dovrebbe leggere 300 contratti per rispondere a una domanda
- Correlato: Risposte fondate dai tuoi file: cita il passaggio, non la memoria del modello
- Correlato: grep non può leggere PDF: fornisci al tuo agente di codifica un indice dei documenti
- Correlato: Memoria di progetto per agenti IA: un indice per progetto, sempre aggiornato
- Modello on‑premise e di sicurezza: 3 architetture per l’elaborazione di documenti IA, e quella che mantiene i file all’interno della tua rete
- Domande: Forum GroupDocs Search
- Fonte: GroupDocs.Search.Mcp su GitHub