AI‑агент повинен запитати у документа три речі перед тим, як він відобразить одну сторінку: скільки сторінок у нього, який розмір кожної сторінки і чи потрібен пароль. Сервер GroupDocs.Viewer.Mcp відповідає на перші два за допомогою одного дешевого виклику (get_view_info), який виконується локально на вашій машині, а питання про пароль вирішується у підказці. Потім агент відображає лише потрібні сторінки:

Що це за contract.docx — скільки сторінок і який розмір сторінки?

Покрокова версія з налаштуванням та усуненням проблем знаходиться в документації: Як перевірити сторінки документа перед їх відображенням.

Чому спочатку перевіряти?

Кожна сторінка, яку створює інструмент render_page, повертається агенту у вигляді вбудованого PNG, часто кілька сотень кілобайт. Агент, який відображає 60‑сторінковий файл, щоб знайти одну таблицю, платить за 59 зайвих зображень — і в часі, і в контекстному вікні. Інструмент перевірки, get_view_info, нічого не відображає. Він повертає невеликий JSON‑об’єкт, тому рішення про те, що відображати, приймається на підставі фактів, а не здогадок.

Цей шаблон можна використовувати в будь‑якому клієнті: Claude Desktop, Claude Code, Cursor, VS Code з GitHub Copilot або Windsurf. Це звичка, яку ви додаєте в підказку, а не функція, яку налаштовують.

Питання 1: Скільки сторінок?

get_view_info повертає pageCount. Це єдина захисна міра проти задокументованого гострого краю: render_page не перевіряє номер сторінки щодо документа. Якщо запросити сторінку 40 у 12‑сторінкового файлу, ви все одно отримаєте зображення, збережене як <name>_page40.png, сторінки, якої насправді немає.

Підказка, що створює захист:

Скільки сторінок у звіті? Потім покажи мені останню.

Для електронних таблиць кількість має ще більше значення. Двигун розбиває лист на сторінки, і їх кількість може бути значно більшою, ніж здається. Знаючи це заздалегідь, агент не буде відображати їх усі.

Питання 2: Який розмір кожної сторінки?

Який розмір сторінок у цьому PDF — Letter чи A4?

Відповідь містить number, width і height для кожної сторінки у пунктах. 612 × 792 — це US Letter; приблизно 595 × 842 — A4. Документ з однією альбомною сторінкою серед портретних показує це у розмірах, і саме ця сторінка часто містить таблицю або креслення, про які запитують.

Ще два поля, name і visible, заповнюються, якщо формат їх підтримує, наприклад назви листів і приховані слайди або листи. В іншому випадку вони мають значення null і true.

Питання 3: Чи потрібен файлу пароль?

get_view_info не має поля захисту, тому тип файлу та кількість сторінок не підкажуть, чи потрібен пароль. Файл, захищений паролем, потребує його при кожному виклику будь‑якого інструменту. Вкажіть його одразу в підказці:

Пароль для contract.pdf знаходиться в моєму повідомленні. Перевір, скільки сторінок у нього, потім покажи мені сторінку 2.

Без пароля виклик завершується помилкою, і агент може запитати його у вас замість того, щоб гадати. Якщо виклик не вдається, get_view_info повертає текст, що починається з View-info lookup failed for, після чого йде тип виключення та повідомлення, тож агент може прочитати причину і попросити пароль або правильну назву файлу.

Повторно використовувана підказка «перевір‑потім‑відобрази»

Перш ніж відображати будь‑що з файлу, назву якого вказано нижче, перевірте його тип, кількість сторінок і розміри сторінок. Скажіть, що ви знайшли, а потім відобразіть лише ті сторінки, які потрібні для відповіді на моє запитання. Файл: contract.docx. Питання: де пункт про розірвання договору?

Агент викликає get_view_info, повідомляє тип файлу та кількість сторінок, обирає сторінки і викликає render_page для кожної. Інструмент get_license_status — третій інструмент на сервері; використовуйте його, коли потрібно дізнатися, чи будуть відображені сторінки водяними знаками.

Приклад сеансу

Ілюстрація, заснована на задокументованій формі відповіді, а не на реальному скріншоті.

You:   Inspect report.pdf before rendering anything.

Agent: [calls get_view_info on report.pdf]
       report.pdf: Portable Document Format File (.pdf), 2 pages.
       Page 1: 612 x 792 points (US Letter). Page 2: 612 x 792 points.
       Which page would you like me to render?

Що вирішує агент і що робить двигун?

Крок Агент Двигун
Вибір файлу Береться назва файлу з вашої підказки Шукає його у папці сховища, виводить список доступних файлів, якщо назва не збігається
Перевірка Визначає, які питання мають значення Повертає тип файлу, кількість сторінок і розміри сторінок
Вибір сторінок Перетворює ваше питання у номери сторінок Нічого
Відображення Викликає render_page для кожної обраної сторінки Створює PNG

Чесні обмеження

  • Режим оцінки. Відображені сторінки містять водяний знак оцінки, а процес сервера відкриває не більше 15 документів. Запитайте «Чи ліцензовано сервер Viewer?», щоб агент викликав get_license_status перед тим, як ви покладетеся на результат.
  • Кількість сторінок не вибирає сторінки за вас. get_view_info повідомляє, які сторінки існують, а не яка з них містить відповідь. Для цього відобразіть зміст або кілька кандидатів.
  • Лише PNG. У render_page немає параметра вибору формату.

FAQ

Як AI‑агент може отримати кількість сторінок PDF? Якщо сервер Viewer підключений, Claude може викликати get_view_info і прочитати pageCount, не відображаючи нічого. Відповідь береться з документа, а не з здогадок.

Чи може інструмент MCP про інформацію документа підказати агенту, які сторінки відображати? Так. Спочатку дайте йому кількість сторінок і їх розміри, потім скажіть, що ви шукаєте. Він відобразить сторінки, що відповідають на питання.

Чи завантажується документ під час перевірки кудись? Ні. Сервер читає файл з папки, яку ви налаштували, і повертає невеликий JSON‑об’єкт вашому клієнту.

Поглибити