Много бизнес‑информации хранится в электронных письмах, а нужная часть обычно находится во вложении: коммерческое предложение, подписанное дополнение, обновлённый график. GroupDocs.Search.Mcp, работающий локально в Docker, открывает файлы электронной почты и архивы (PST, OST, MSG, EML) и индексирует каждое сообщение и каждое вложение, так что Claude Desktop, Cursor или Copilot могут искать по архиву на месте и точно указывать, из какого вложения пришло совпадение:
Индексировать папку с почтой. Какое сообщение упоминает повышение цены и что именно в нём сказано?
Пошаговая версия с настройкой и устранением неполадок находится в документации: Как искать по архивам электронной почты и вложениям с помощью AI‑агента локально.
Почему электронная почта сложна для агента?
Потому что архив — это контейнер контейнеров. PST содержит папки, папки содержат сообщения, сообщения содержат вложения, а вложения сами по себе являются файлами Word, PDF и электронными таблицами. Агент с файловыми инструментами видит один большой бинарный файл. Экспорт архива в отдельные файлы сначала работает, но он медленный, дублирует конфиденциальные данные на диск и его нужно выполнять заново, когда архив меняется. И модель вообще не может читать PST.
Поисковый движок сам обрабатывает вложенность. Каждое сообщение и каждое вложение становятся отдельными индексируемыми элементами, а результат фиксирует как контейнер, так и место внутри него, где найдено совпадение.
Как выглядит совпадение во вложении?
Ниже показан ответ сервера в нашем тесте с тремя сообщениями EML. Фраза «price increase» встречается только в Word‑коммерческом предложении, вложенном к одному из сообщений; тело сообщения просто гласит «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 — это сообщение; innerPath — вложение. Агент может ответить: «сообщение Re: Q3 pricing от Contoso, во вложенном документе quotation‑Q‑2026‑118: повышение цены на 6 % с 1 ноября», и каждая часть этого предложения прослеживается.
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..."
Вопросы, которые работают с почтой
Обычный язык запросов применяется, а некоторые шаблоны особенно полезны для корреспонденции. Все они проверялись на одной и той же тестовой почтовой коробке:
- «Какое сообщение от Fabrikam упоминает задержку поставки?»:
fabrikam AND delay. Адреса отправителей индексируются вместе с сообщением, поэтомуcontosoтакже нашёл счёт‑фактуру, в тексте которой компания не упоминается. - «Найдите каждое письмо, в котором упоминается заказ 77812»:
77812. Целые числа рассматриваются как слова. - «Какие счета‑фактуры подлежат оплате в октябре?»:
invoice AND content: daterange(2026-10-01 ~~ 2026-10-31). Это совпадает с датами, написанными в тексте сообщения, например «due on 2026-10-22». Префиксcontent:важен: без него диапазон дат также совпадает с датами, которые движок записывает для каждого файла.
Почему локальность важнее для почты, чем для чего‑либо другого
Электронная почта — это место, где находятся конфиденциальные материалы: персональные данные, переговоры, HR‑переписка, юридические консультации. Поисковые инструменты, требующие загрузки или синхронизации почтового ящика в сервис, неприемлемы для многих команд. Здесь архив монтируется только для чтения в контейнер на машине, индексируется там и ищется там. Единственный текст, который покидает контейнер, — это цитата, вставленная агентом в ответ, а при локально развернутой модели даже её нет.
Для более строгой настройки смонтируйте архив только для чтения и дайте индексу собственный том:
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
Ограничение большого архива
Архив из десятков тысяч сообщений индексируется без проблем при наличии лицензии, но стоит подходить к этому осознанно. Индексируйте по папкам или по годам как отдельные пути (mail/2025, mail/2026), чтобы год можно было удалить или пере‑создать отдельно, поскольку движок удаляет целые индексированные пути, а не отдельные файлы. Храните почту в собственном индексе, отдельно от контрактов или отчётов, чтобы вопрос о корреспонденции не просматривал всё остальное. И когда архив растёт, update_index подхватывает новые сообщения без повторного чтения старых.
Честные ограничения
- В режиме оценки индекс содержит не более 100 документов, а поиск возвращает не более 10, и каждое сообщение и вложение считается, поэтому реальный архив требует лицензии. Сначала вызовите
get_license_status. - Большой PST требует времени для индексации: каждое сообщение и вложение открываются. Индексируйте один раз, затем используйте
update_index. - Сканированные вложения без текстового слоя индексируются только по их файловым свойствам; OCR не предусмотрен.
- Только Docker; в Linux добавьте
--user "$(id -u):$(id -g)", если не используете настройку только для чтения, описанную выше.
FAQ
Можно ли искать по PST‑файлу с помощью ИИ без Outlook?
Да. Движок читает PST, OST, MSG и EML напрямую; Outlook не задействован, и ничего не экспортируется.
Ищет ли он внутри вложений писем?
Да. Вложения индексируются как элементы их сообщения, и совпадение внутри вложения возвращается с указанием innerPath, содержащего имя вложения.
Мой почтовый ящик где‑то загружается?
Нет. Он читается внутри локального контейнера; только отрывки, которые агент цитирует, попадают к вашему поставщику модели.
Углубиться
- Документация, канонический how‑to: Как искать по архивам электронной почты и вложениям с помощью AI‑агента локально
- Центр документации: GroupDocs.Search MCP Server
- Начните здесь: Нужна ли вам векторная база данных, чтобы задавать вопросы о папке с документами?
- Связанные материалы: Почему AI‑агент не должен читать 300 контрактов, чтобы ответить на один вопрос
- Связанные материалы: Обоснованные ответы из ваших файлов: цитируйте отрывок, а не память модели
- Связанные материалы: grep не умеет читать PDF: дайте вашему кодирующему агенту индекс документов
- Связанные материалы: Память проекта для AI‑агентов: один индекс на проект, поддерживаемый в актуальном состоянии
- On‑premise и модель безопасности: 3 архитектуры для AI‑обработки документов, и та, что хранит файлы внутри вашей сети
- Вопросы: GroupDocs Search forum
- Исходный код: GroupDocs.Search.Mcp на GitHub