Mucho conocimiento empresarial vive en el correo electrónico, y la parte que necesitas suele estar en un adjunto: la cotización, la enmienda firmada, el cronograma revisado. GroupDocs.Search.Mcp, ejecutándose localmente en Docker, abre archivos de correo y archivos (PST, OST, MSG, EML) e indexa cada mensaje y cada adjunto, de modo que Claude Desktop, Cursor o Copilot pueden buscar un archivo en su lugar y decir exactamente de qué adjunto proviene una coincidencia:

Indexa la carpeta de correo. ¿Qué mensaje menciona un aumento de precio y qué dice exactamente?

La versión paso a paso con configuración y solución de problemas está en la documentación: Cómo buscar archivos de correo y adjuntos con un agente de IA, localmente.

¿Por qué el correo electrónico es difícil para un agente?

Porque un archivo es un contenedor de contenedores. Un PST contiene carpetas, las carpetas contienen mensajes, los mensajes contienen adjuntos, y los adjuntos son archivos Word, PDFs y hojas de cálculo por sí mismos. Un agente con herramientas de archivo ve un único archivo binario grande. Exportar el archivo a archivos sueltos primero funciona, pero es lento, duplica datos sensibles en el disco y tiene que repetirse cuando el archivo cambia. Y un modelo no puede leer un PST en absoluto.

El motor de búsqueda maneja el anidamiento por sí mismo. Cada mensaje y cada adjunto se convierten en un elemento buscable, y un resultado registra tanto dónde está el contenedor como dónde dentro de él se encontró la coincidencia.

¿Cómo se ve una coincidencia dentro de un adjunto?

Aquí está lo que el servidor devolvió en nuestra prueba con tres mensajes EML. La frase “price increase” aparece solo dentro de la cotización Word adjunta a uno de ellos; el cuerpo del mensaje solo dice “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.…

El filePath es el mensaje; innerPath es el adjunto. El agente puede responder “el mensaje Re: Q3 pricing de Contoso, en la cotización adjunta Q-2026-118: un aumento del 6 por ciento a partir del 1 de noviembre”, y cada parte de esa frase es rastreable.

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..."

Preguntas que funcionan en correo

El lenguaje de consulta habitual se aplica, y algunos patrones son especialmente útiles para la correspondencia. Todos estos se verificaron contra el mismo buzón de prueba:

  • "¿Qué mensaje de Fabrikam menciona un retraso en la entrega?": fabrikam AND delay. Las direcciones del remitente se indexan con el mensaje, por lo que contoso también encontró una factura cuyo cuerpo nunca nombra a la empresa.
  • “Encuentra cada correo que mencione la orden 77812”: 77812. Los números enteros son palabras.
  • "¿Qué facturas vencen en octubre?": invoice AND content: daterange(2026-10-01 ~~ 2026-10-31). Eso coincide con fechas escritas en el texto del mensaje, aquí “due on 2026-10-22”. El prefijo content: es importante: sin él, un rango de fechas también coincide con las fechas que el motor registra para cada archivo.

Por qué lo local importa más para el correo que para cualquier otra cosa

El correo electrónico es donde está el material sensible: datos personales, negociaciones, hilos de RR.HH., asesoría legal. Las herramientas de búsqueda que requieren que el buzón se cargue o sincronice con un servicio no son una opción para muchos equipos. Aquí el archivo se monta en modo solo lectura dentro de un contenedor en la máquina, se indexa allí y se busca allí. El único texto que sale es lo que el agente cita en su respuesta, y con un modelo alojado localmente, ni siquiera eso.

Para una configuración más ajustada, monta el archivo solo lectura y da al índice su propio volumen:

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

Delimitando un archivo grande

Un archivo de decenas de miles de mensajes se indexa sin problemas con una licencia, pero conviene ser deliberado. Indexa por carpeta o por año como rutas separadas (mail/2025, mail/2026), de modo que un año pueda eliminarse o reconstruirse por sí solo, ya que el motor elimina rutas indexadas completas en lugar de archivos individuales. Mantén el correo en su propio índice, separado de contratos o informes, para que una pregunta sobre correspondencia no tenga que atravesar todo lo demás. Y cuando el archivo crezca, update_index recoge los nuevos mensajes sin volver a leer los antiguos.

Límites honestos

  • En modo de evaluación un índice contiene como máximo 100 documentos y una búsqueda devuelve como máximo 10, y cada mensaje y adjunto cuenta, por lo que un archivo real necesita una licencia. Llama a get_license_status primero.
  • Un PST grande lleva tiempo indexar: cada mensaje y adjunto se abre. Indexa una vez, luego update_index.
  • Los adjuntos escaneados sin capa de texto se indexan solo por sus propiedades de archivo; no hay OCR.
  • Solo Docker; en Linux agrega --user "$(id -u):$(id -g)" a menos que uses la configuración solo lectura anterior.

Preguntas frecuentes

¿Puedo buscar un archivo PST con IA sin Outlook?
Sí. El motor lee PST, OST, MSG y EML directamente; Outlook no interviene, y nada se exporta.

¿Busca dentro de los adjuntos de correo?
Sí. Los adjuntos se indexan como elementos de su mensaje, y una coincidencia dentro de uno vuelve con innerPath nombrando el adjunto.

¿Se sube mi buzón a algún lugar?
No. Se lee dentro de un contenedor local; solo los pasajes que el agente cita llegan a tu proveedor de modelo.

Profundiza