A document review workflow with an AI agent can follow the same steps every round: list what is open, reply in threads, resolve, carry the comments to the next draft, and produce a clean copy. The GroupDocs.Annotation.Mcp server exposes each step as a tool, so an LLM in Claude, Cursor or GitHub Copilot can run the round locally while a person approves the outcome:
List the annotations in output/contract_annotated.pdf. Which ones have no replies?
The step‑by‑step version with config and troubleshooting is in the documentation: How to run a document review cycle with an AI agent.
Чому раунди перегляду відхиляються без фіксованої послідовності?
Раунд перегляду рідко обмежується лише «додати коментар». Це: що ще залишилося відкритим, хто це підняв, відповідь, рішення та чиста копія для наступної аудиторії. Коли люди роблять це вручну, порядок варіюється, відповіді залишаються без підпису, і наступний чернетка втрачає коментарі з попередньої.
Агент, який щоразу дотримується однієї й тієї ж послідовності, усуває цю варіативність. Він також залишає слід всередині документа, а не в чат‑транскрипті, що саме буде перевіряти аудит.
Робочий процес, крок за кроком
Кожен крок має один запит і один інструмент.
- Знайти, що залишилося відкритим. Запит: «List the annotations in output/contract_annotated.pdf. Which ones have no replies?» Агент викликає
get_annotations, який повертає кожну анотацію з їїid, типом, повідомленням, сторінкою, координатами, користувачем та відповідями. Коментар без відповіді — це той, у якого порожній масивreplies, тому агент фільтрує вже отриманий список. - Відповісти в темі. Запит: «Reply to Maria’s comment that finance approved the terms on 12 March. Sign it as Alex.» Агент викликає
add_replyз параметрамиannotationId,commentтаuserName. За замовчуванням ім’я —mcp-user, тому потрібно вказати реальне. - Вирішити, що завершено. Виберіть конвенцію і вкажіть її в запиті: залишити тему як запис, видалити анотацію за допомогою
remove_annotationsабо відредагувати повідомлення за допомогоюupdate_annotation, додавши префікс[RESOLVED]. - Перенести раунд у наступний чернеток. Запит: «Export the annotations from the reviewed copy, then import them into contract-v3.pdf.» Агент викликає
export_annotations, який записує XML‑файл, а потімimport_annotations. - Надати чисту копію. Запит: «Remove all annotations and give me a clean copy for the counterparty.»
remove_annotationsбез параметраidsочищає всі анотації у новому файлі.
Що вирішує агент, а що робить движок?
| Рішення або дія | Агент | Движок |
|---|---|---|
| Які коментарі потребують відповіді | Читає результат get_annotations і фільтрує його |
Повертає кожну анотацію з id, авторами та відповідями |
| Що саме містить відповідь | Формує її за вашою інструкцією | Зберігає під вказаним userName |
| Яка конвенція вирішення застосовується | Дотримується правила, зазначеного у вашому запиті | Виконує редагування або видалення, про яке просять |
| Чи завершено раунд | Повідомляє підрахунок; людина затверджує | Зберігає результат кожної зміни у сховище |
Движок ніколи не вирішує, що вважається вирішеним. У моделі анотації немає прапорця «resolved»; вирішення — це конвенція, яку ви обираєте і називаєте у запиті.
Де людина залишається в процесі?
У двох місцях. Перед кроком 5 попросіть агента вказати, скільки анотацій він збирається видалити, і дочекайтеся вашої відповіді. Видалення всіх анотацій — це єдиний виклик у робочому процесі без можливості скасування. Перш ніж будь‑що виходить за межі команди, перегляньте відповіді, які підготував агент. Текст анотації походить від інших людей, тому розглядайте коментар як контент для підсумку, а не як інструкцію для агента.
Приклад сесії (скорочений)
This is an illustration built from the documented behavior of the tools, not a captured screenshot.
You: List the annotations in output/contract_annotated.pdf. Which ones have no replies?
Agent: [calls get_annotations on output/contract_annotated.pdf]
Found 4 annotations. Two have no replies:
- id 2, page 2, Maria: "Confirm the payment terms with finance."
- id 4, page 5, Maria: "Delivery date conflicts with Schedule B."
You: Reply to the first one that finance approved the terms on 12 March.
Sign it as Alex.
Agent: [calls add_reply: annotationId=2, userName="Alex",
comment="Finance approved the terms on 12 March."]
Added reply to annotation 2 in output/contract_annotated.pdf.
(The agent uses the saved file name in the next call.)
Як запустити сервер для Claude, Cursor або Copilot?
Запустіть Docker‑образ, підключивши папку з документами та окрему папку виводу, відмінну від папки сховища:
docker run --rm -i -v $(pwd)/documents:/data \
-e GROUPDOCS_MCP_OUTPUT_PATH=/data/output \
ghcr.io/groupdocs-annotation/annotation-net-mcp:latest
Те саме команду та альтернативу dnx GroupDocs.Annotation.Mcp --yes пояснено в статті AI review that lands in the document, not in the chat log. На головній сторінці хабу є реєстрація для Claude Desktop, Claude Code, VS Code з GitHub Copilot, Cursor, Windsurf та інших клієнтів.
Чесні обмеження
- Режим оцінки. Без ліцензії на кожній сторінці ставиться значок trial, що не підходить для надсилання контрагенту. Перевірте
get_license_statusперед офіційним переглядом. - Кожен інструмент записує результат назад у сховище. Тому раунд створює ланцюжок файлів. Попросіть агента передавати назву файлу з попереднього результату далі і перечитати його за допомогою
get_annotationsперед будь‑яким редагуванням, бо id належать саме тому документу, який ви щойно прочитали. ВстановітьGROUPDOCS_MCP_OUTPUT_PATHу папку, відмінну від папки сховища, перед ланцюжком правок над створеним файлом. За замовчуванням (вивід у папку сховища) друге записання завершується помилкоюbeing used by another process; при окремій папці виводуadd_reply,update_annotationіremove_annotationsна створеному файлі успішно виконуються. - Координати переносяться без змін. При повторному форматуванні чернетки імпортована нотатка може опинитися поруч із оригінальним текстом, а не на ньому. Перевірте розташування після імпорту.
- Попередній перегляд у Linux.
generate_pages_previewнаразі не працює для PDF‑файлів у Linux, включаючи Docker‑образ (TypeInitializationExceptionдляGdip:System.Drawing.Commonне підтримується на не‑Windows платформах); Word та інші документи Office рендеряться, а у Windows зdnxусі формати рендеряться. Інші десять інструментів не постраждали. Інструменти перегляду в цьому дописі не використовують рендерер попереднього перегляду.
Питання та відповіді
Чи може ШІ автоматично відповідати на коментарі в PDF? Так. Агент читає коментарі за допомогою get_annotations і відповідає за допомогою add_reply, який приймає id анотації, текст відповіді та ім’я автора.
Чи існує статус «вирішено» для коментарів? Ні. У інструментів немає прапорця resolved, тому ви обираєте конвенцію, наприклад залишати тему, видаляти анотацію або додавати префікс [RESOLVED].
Чи можу я зберегти коментарі при оновленні документа? Так. Експортуйте анотації в XML з переглянутої копії та імпортуйте їх у новий чернеток. Така пара інструментів об’єднує два варіанти рецензій в один.
Поглибити
- Документація, канонічний посібник: How to run a document review cycle with an AI agent
- Хаб документації: GroupDocs.Annotation MCP Server
- Почати тут: AI review that lands in the document, not in the chat log
- Пов’язано: 3 ways to extract every comment from a document set with MCP
- Пов’язано: Show the agent what it did
- On‑premise та модель безпеки: 3 architectures for AI document processing, and the one that keeps files inside your network
- Питання: GroupDocs Annotation forum
- Джерело: GroupDocs.Annotation.Mcp on GitHub