AryanBV/pdf-toolkit-mcp

AryanBV/pdf-toolkit-mcp

от aryanbv
MCP сервер с 22 инструментами для чтения, создания и редактирования PDF с AES-256 шифрованием. Умеет создавать PDF из Markdown, рендерить страницы для vision-моделей и заполнять формы. Работает чер...

PDF Toolkit MCP

A write-capable PDF toolkit for any MCP client. It provides 22 tools for reading, creating, rendering, transforming, and securing PDFs. That includes rendering pages to images so vision models can read scanned documents, building PDFs from Markdown or structured data, AES-256 encryption, and merge and split operations that keep form fields intact. There are no native dependencies, so it runs locally from a single npx command.

npm version license node tools tests

npx -y @aryanbv/pdf-toolkit-mcp

It needs no config files, API keys, Docker, or compiler, and it works offline.


Overview

Most PDF servers for MCP only read. This one also writes: it creates documents from Markdown or structured data, fills and flattens forms, rearranges page structure, and applies AES-256 encryption, all without a native build toolchain.

A few things worth knowing:

  • It reads scans. pdf_render_pages rasterizes pages to images, so a vision-capable model can read scanned or image-only PDFs that have no text layer.
  • Merge, split, reorder, and delete preserve AcroForm fields rather than dropping them. Names that collide between inputs are namespaced per source, and every call reports what it preserved, renamed, or dropped.
  • Encryption is AES-256 through qpdf, not the legacy RC4 scheme.
  • Every engine is WASM or plain JavaScript, so npx works on Node 20 and later across Windows, macOS, and Linux with no node-gyp, canvas binding, or prebuilt binary.
  • Errors carry stable codes, stack traces stay internal, off-page placements are rejected instead of silently clipped, and large responses are truncated without breaking JSON.
pdf_add_page_numbersидемпотентный

Добавляет номера страниц в PDF. Поддерживает настраиваемое положение, формат, начальный номер и размер шрифта.

Добавляет номера страниц в PDF. Поддерживает настраиваемое положение, формат, начальный номер и размер шрифта.

Параметры

  • filePathstringобязательный

    Absolute path to the source PDF file

  • outputPathstringобязательный

    Absolute path for the output PDF

  • positionenum

    Position of page numbers. Defaults to bottom-center.

    bottom-centerbottom-righttop-centertop-right
  • formatenum

    Number format. Defaults to "Page X of Y".

    Page X of YX of YX- X -
  • startFrominteger

    Starting page number. Defaults to 1.

  • fontSizenumber

    Font size for page numbers (6–24). Defaults to 10.

pdf_add_watermarkидемпотентный

Добавляет текстовый водяной знак на страницы PDF. По умолчанию водяной знак центрируется и поворачивается по диагонали. Применяется ко всем страницам, если не указан диапазон страниц.

Добавляет текстовый водяной знак на страницы PDF. По умолчанию водяной знак центрируется и поворачивается по диагонали. Применяется ко всем страницам, если не указан диапазон страниц.

Параметры

  • filePathstringобязательный

    Absolute path to the source PDF file

  • textstringобязательный

    Watermark text to overlay on pages

  • outputPathstringобязательный

    Absolute path for the watermarked output PDF

  • pagesstring

    Page range, e.g. '1-5' or '1,3,5'. Omit to watermark all pages.

  • opacitynumber

    Watermark opacity (0.0–1.0). Defaults to 0.3.

  • fontSizenumber

    Watermark font size (10–200). Defaults to 50.

  • colorenum

    Watermark color. Defaults to gray.

    grayredbluegreenblack
  • rotationnumber

    Watermark rotation in degrees (0–360). Defaults to 45 (diagonal).

pdf_compareтолько чтениеидемпотентный

Сравнивает два PDF-файла постранично (по абсолютному индексу страницы) и сообщает о различиях в тексте. Возвращает identical:true, если текст совпадает. Сравнивает текст в порядке потока содержимого (content-stream-order), а не в порядке визуального чтения, поэтому лучше всего подходит для документов с одинаковой вёрсткой; переформатированные или многоколоночные PDF дают зашумлённые различия. Вставка или удаление страницы сдвигает все последующие страницы и отмечает их как изменённые. Большие различия обрезаются (truncated:true) для соответствия лимиту ответа.

Сравнивает два PDF-файла постранично (по абсолютному индексу страницы) и сообщает о различиях в тексте. Возвращает identical:true, если текст совпадает. Сравнивает текст в порядке потока содержимого (content-stream-order), а не в порядке визуального чтения, поэтому лучше всего подходит для документов с одинаковой вёрсткой; переформатированные или многоколоночные PDF дают зашумлённые различия. Вставка или удаление страницы сдвигает все последующие страницы и отмечает их как изменённые. Большие различия обрезаются (truncated:true) для соответствия лимиту ответа.

Параметры

  • filePathAstringобязательный

    Absolute path to the first (baseline) PDF file

  • filePathBstringобязательный

    Absolute path to the second (comparison) PDF file

  • pagesstring

    Page range to compare, e.g. '1-5' or '1,3,5'. Defaults to all pages.

pdf_createидемпотентный

Создаёт новый PDF из текстового содержимого с автоматическим переносом строк и переносом на новую страницу при переполнении. Поддерживает размеры страниц A4, Letter и Legal. Укажите fontPath для текста на нелатинских шрифтах (арабский, CJK и т.д.).

Создаёт новый PDF из текстового содержимого с автоматическим переносом строк и переносом на новую страницу при переполнении. Поддерживает размеры страниц A4, Letter и Legal. Укажите fontPath для текста на нелатинских шрифтах (арабский, CJK и т.д.).

Параметры

  • outputPathstringобязательный

    Absolute path for the output PDF file

  • contentstringобязательный

    Text content for the PDF. Use \n for line breaks.

  • titlestring

    PDF document title metadata

  • authorstring

    PDF document author metadata

  • pageSizeenum

    Page size. Defaults to A4.

    A4LetterLegal
  • fontSizenumber

    Font size in points (6–72). Defaults to 12.

  • marginnumber

    Page margin in points (0–500). Defaults to 50.

  • fontPathstring

    Absolute path to a .ttf/.otf font file for non-Latin character support (Arabic, CJK, etc.). The built-in font is Latin-only.

pdf_create_from_markdownидемпотентный

Создаёт насыщенный, высокоточный PDF из Markdown (CommonMark + GFM). Поддерживает заголовки, полужирный/курсивный текст, ссылки, упорядоченные/маркированные списки, таблицы, блоки кода с ограждением, цитаты и горизонтальные разделители.

Создаёт насыщенный, высокоточный PDF из Markdown (CommonMark + GFM). Поддерживает заголовки, полужирный/курсивный текст, ссылки, упорядоченные/маркированные списки, таблицы, блоки кода с ограждением, цитаты и горизонтальные разделители.

Параметры

  • markdownstringобязательный

    Markdown content to render as PDF

  • outputPathstringобязательный

    Absolute path for the output PDF file

  • pageSizeenum

    Page size. Defaults to A4.

    A4LetterLegal
  • titlestring

    PDF document title metadata

  • authorstring

    PDF document author metadata

pdf_create_from_template

Создаёт качественный PDF из указанного шаблона (invoice, report или letter). Передайте структурированные данные, соответствующие полям шаблона; данные проверяются на соответствие схеме шаблона.

Создаёт качественный PDF из указанного шаблона (invoice, report или letter). Передайте структурированные данные, соответствующие полям шаблона; данные проверяются на соответствие схеме шаблона.

Параметры

  • templateNameenumобязательный

    Template to use: invoice, report, or letter

    invoicereportletter
  • dataobjectобязательный

    Template data. Invoice: companyName, clientName, invoiceNumber, invoiceDate, items[{description, quantity, unitPrice}], taxRate, currency (ISO code or symbol, default USD), dueDate, notes, paymentTerms. Report: title, author, date, subtitle, sections[{heading, body}]. Letter: senderName, senderAddress, recipientName, recipientAddress, subject, body, closing, signatureName.

  • outputPathstringобязательный

    Absolute path for the output PDF file

pdf_delete_pagesидемпотентный

Удаляет конкретные страницы из PDF, оставляя остальные в исходном порядке. Поля AcroForm на оставшихся страницах сохраняются. Установите flatten:true, чтобы встроить значения полей в статический контент. Нельзя удалить все страницы.

Удаляет конкретные страницы из PDF, оставляя остальные в исходном порядке. Поля AcroForm на оставшихся страницах сохраняются. Установите flatten:true, чтобы встроить значения полей в статический контент. Нельзя удалить все страницы.

Параметры

  • filePathstringобязательный

    Absolute path to the source PDF file

  • pagesstringобязательный

    Page range to DELETE, e.g. '2' or '1-3,5'

  • outputPathstringобязательный

    Absolute path for the output PDF

  • flattenboolean

    Flatten the resulting form: bake field values into static content and remove interactivity. Defaults to false.

pdf_embed_imageидемпотентный

Встраивает изображение в формате PNG или JPEG на указанную страницу PDF. Поддерживает произвольное позиционирование и опциональное масштабирование с сохранением пропорций.

Встраивает изображение в формате PNG или JPEG на указанную страницу PDF. Поддерживает произвольное позиционирование и опциональное масштабирование с сохранением пропорций.

Параметры

  • filePathstringобязательный

    Absolute path to the source PDF file

  • imagePathstringобязательный

    Absolute path to the PNG or JPEG image file

  • pageintegerобязательный

    Target page number (1-indexed)

  • xnumberобязательный

    X position in points from the left edge of the page

  • ynumberобязательный

    Y position in points from the bottom edge of the page

  • widthnumber

    Image width in points. Omit to use original width (or scale proportionally if height is set).

  • heightnumber

    Image height in points. Omit to use original height (or scale proportionally if width is set).

  • outputPathstringобязательный

    Absolute path for the output PDF

pdf_embed_qr_codeидемпотентный

Встраивает QR-код или штрихкод на определённую страницу PDF по заданным координатам. Поддерживает qrcode, code128, datamatrix, ean13, pdf417 и azteccode.

Встраивает QR-код или штрихкод на определённую страницу PDF по заданным координатам. Поддерживает qrcode, code128, datamatrix, ean13, pdf417 и azteccode.

Параметры

  • filePathstringобязательный

    Absolute path to the source PDF file

  • contentstringобязательный

    Data to encode in the QR code or barcode

  • outputPathstringобязательный

    Absolute path for the output PDF

  • pageintegerобязательный

    Target page number (1-indexed)

  • xnumberобязательный

    X position in points from the left edge

  • ynumberобязательный

    Y position in points from the bottom edge

  • sizenumber

    Size of the QR code/barcode in points. Defaults to 100.

  • typeenum

    Barcode type. Defaults to qrcode.

    qrcodecode128datamatrixean13pdf417azteccode
pdf_encrypt

Зашифруйте PDF с защитой паролем AES-256. Для открытия требуется пароль пользователя. Пароль владельца управляет правами редактирования (по умолчанию совпадает с паролем пользователя).

Зашифруйте PDF с защитой паролем AES-256. Для открытия требуется пароль пользователя. Пароль владельца управляет правами редактирования (по умолчанию совпадает с паролем пользователя).

Параметры

  • filePathstringобязательный

    Absolute path to the source PDF file

  • outputPathstringобязательный

    Absolute path for the encrypted output PDF

  • userPasswordstringобязательный

    Password required to open the PDF

  • ownerPasswordstring

    Password for editing permissions. Defaults to userPassword if omitted.

pdf_extract_textтолько чтениеидемпотентный

Извлекает текстовое содержимое из PDF-файла. По умолчанию возвращает первые 10 страниц, чтобы не превышать лимиты контекста LLM. Для конкретных страниц используйте параметр 'pages'.

Извлекает текстовое содержимое из PDF-файла. По умолчанию возвращает первые 10 страниц, чтобы не превышать лимиты контекста LLM. Для конкретных страниц используйте параметр 'pages'.

Параметры

  • filePathstringобязательный

    Absolute path to the PDF file

  • pagesstring

    Page range, e.g. '1-5' or '1,3,5'. Defaults to first 10 pages.

pdf_fill_formидемпотентный

Заполняет поля формы в PDF. Поддерживает поля типа текст, флажок, выпадающий список, переключатель и список с множественным выбором. Укажите fontPath для текста не на латинице (арабский, китайский и т.д.).

Заполняет поля формы в PDF. Поддерживает поля типа текст, флажок, выпадающий список, переключатель и список с множественным выбором. Укажите fontPath для текста не на латинице (арабский, китайский и т.д.).

Параметры

  • filePathstringобязательный

    Absolute path to the PDF file with form fields

  • fieldsobjectобязательный

    Object mapping field names to values. Strings for text/dropdown/radio, booleans for checkboxes.

  • outputPathstringобязательный

    Absolute path for the filled output PDF

  • flattenboolean

    Flatten form fields after filling (makes them non-editable). Defaults to false.

  • fontPathstring

    Absolute path to a .ttf/.otf font file for non-Latin character support.

pdf_flattenидемпотентный

Сплющивает поля формы PDF, запекая их текущие значения в содержимое страницы и удаляя интерактивность. PDF без форм копируются без изменений.

Сплющивает поля формы PDF, запекая их текущие значения в содержимое страницы и удаляя интерактивность. PDF без форм копируются без изменений.

Параметры

  • filePathstringобязательный

    Absolute path to the source PDF file

  • outputPathstringобязательный

    Absolute path for the flattened output PDF

pdf_get_form_fieldsтолько чтениеидемпотентный

Выводит все поля формы в PDF с их именами, типами, текущими значениями и статусом обязательности. Возвращает hasForm: false для PDF-файлов без форм.

Выводит все поля формы в PDF с их именами, типами, текущими значениями и статусом обязательности. Возвращает hasForm: false для PDF-файлов без форм.

Параметры

  • filePathstringобязательный

    Absolute path to the PDF file

pdf_get_metadataтолько чтениеидемпотентный

Получить метаданные из PDF-файла, включая название, автора, тему, количество страниц, даты создания/изменения и информацию о производителе.

Получить метаданные из PDF-файла, включая название, автора, тему, количество страниц, даты создания/изменения и информацию о производителе.

Параметры

  • filePathstringобязательный

    Absolute path to the PDF file

pdf_mergeидемпотентный

Объединяет несколько PDF-файлов в один. Поля AcroForm сохраняются; поля, имена которых конфликтуют между входными файлами, автоматически переименовываются (с пространством имён по источнику). Установите flatten: true, чтобы встроить значения полей в статическое содержимое.

Объединяет несколько PDF-файлов в один. Поля AcroForm сохраняются; поля, имена которых конфликтуют между входными файлами, автоматически переименовываются (с пространством имён по источнику). Установите flatten: true, чтобы встроить значения полей в статическое содержимое.

Параметры

  • filePathsstring[]обязательный

    Array of absolute paths to PDF files to merge, in order

  • outputPathstringобязательный

    Absolute path for the merged output PDF

  • flattenboolean

    Flatten the merged form: bake field values into static content and remove interactivity. Defaults to false.

pdf_render_pagesидемпотентный

Преобразует страницы PDF в изображения, чтобы клиент с поддержкой зрения мог читать отсканированные PDF или файлы, состоящие только из картинок. Записывает PNG/JPEG файлы и возвращает их пути; установите inline:true, чтобы вернуть блоки изображений, которые модель может увидеть напрямую.

Преобразует страницы PDF в изображения, чтобы клиент с поддержкой зрения мог читать отсканированные PDF или файлы, состоящие только из картинок. Записывает PNG/JPEG файлы и возвращает их пути; установите inline:true, чтобы вернуть блоки изображений, которые модель может увидеть напрямую.

Параметры

  • filePathstringобязательный

    Absolute path to the source PDF file

  • pagesstring

    Page range to render, e.g. '1-5,8'. Defaults to the first 50 pages.

  • dpiinteger

    Render resolution in DPI (36–300). Defaults to 150.

  • formatenum

    Output image format. Defaults to png.

    pngjpeg
  • inlineboolean

    Return rendered pages as inline image blocks the model can see directly instead of writing files. Max 5 pages; DPI is auto-capped so neither dimension exceeds 1500px. Defaults to false.

  • outputDirstring

    Directory for the output images: an absolute path is recommended; a relative path resolves against the server working directory. The directory must already exist. Defaults to the input PDF's directory. Ignored when inline is true.

pdf_reorder_pagesидемпотентный

Изменить порядок страниц в PDF. Укажите новый порядок страниц в виде строки, разделённой запятыми (например, '3,1,2'). Дубликаты разрешены. Поля AcroForm сохраняются. Установите flatten:true, чтобы вшить значения полей в статический контент.

Изменить порядок страниц в PDF. Укажите новый порядок страниц в виде строки, разделённой запятыми (например, '3,1,2'). Дубликаты разрешены. Поля AcroForm сохраняются. Установите flatten:true, чтобы вшить значения полей в статический контент.

Параметры

  • filePathstringобязательный

    Absolute path to the source PDF file

  • pageOrderstringобязательный

    New page order as comma-separated 1-indexed numbers, e.g. '3,1,2,4' or '1,1,2' (duplicates allowed; up to 2000 pages)

  • outputPathstringобязательный

    Absolute path for the reordered output PDF

  • flattenboolean

    Flatten the reordered form: bake field values into static content and remove interactivity. Defaults to false.

pdf_rotate_pagesидемпотентный

Поворачивает страницы в PDF на 90, 180 или 270 градусов. Поворот добавляется к любому существующему. Поворачивает все страницы, если не указан диапазон.

Поворачивает страницы в PDF на 90, 180 или 270 градусов. Поворот добавляется к любому существующему. Поворачивает все страницы, если не указан диапазон.

Параметры

  • filePathstringобязательный

    Absolute path to the source PDF file

  • pagesstring

    Page range to rotate, e.g. '1-5' or '1,3,5'. Omit to rotate all pages.

  • degreesenumобязательный

    Rotation angle: 90, 180, or 270 degrees clockwise

    90180270
  • outputPathstringобязательный

    Absolute path for the rotated output PDF

pdf_searchтолько чтениеидемпотентный

Ищет текст в PDF и возвращает совпадения с коротким фрагментом вокруг и номером страницы. Запрос сопоставляется как буквальная подстрока (по умолчанию без учёта регистра). Ищет по всем страницам, если не задан диапазон.

Ищет текст в PDF и возвращает совпадения с коротким фрагментом вокруг и номером страницы. Запрос сопоставляется как буквальная подстрока (по умолчанию без учёта регистра). Ищет по всем страницам, если не задан диапазон.

Параметры

  • filePathstringобязательный

    Absolute path to the PDF file

  • querystringобязательный

    Literal text to find (matched as a substring)

  • caseSensitiveboolean

    Match case exactly. Defaults to false.

  • pagesstring

    Page range, e.g. '1-5'. Defaults to all pages.

pdf_splitидемпотентный

Извлекает указанные страницы из PDF в новый файл. Поля AcroForm на извлечённых страницах сохраняются, поля на пропущенных страницах удаляются. Установите flatten:true, чтобы встроить значения полей в статическое содержимое.

Извлекает указанные страницы из PDF в новый файл. Поля AcroForm на извлечённых страницах сохраняются, поля на пропущенных страницах удаляются. Установите flatten:true, чтобы встроить значения полей в статическое содержимое.

Параметры

  • filePathstringобязательный

    Absolute path to the source PDF file

  • pagesstringобязательный

    Page range to extract, e.g. '1-5' or '1,3,5'

  • outputPathstringобязательный

    Absolute path for the output PDF

  • flattenboolean

    Flatten the extracted form: bake field values into static content and remove interactivity. Defaults to false.

pdf_to_markdownтолько чтениеидемпотентный

Преобразует PDF в чистый Markdown с порядком чтения для использования LLM: восстанавливает до 2 колонок контента (плюс полноширинные заголовочные/нижние колонтитулы), определяет заголовки по размеру шрифта и обнаруживает маркированные/нумерованные списки. Страницы с 3 или более колонками переключаются на одноколоночный порядок чтения. Таблицы выводятся как обычный текст в порядке чтения, НЕ восстанавливаются как таблицы Markdown. Лучше всего работает на чистых, цифровых (текстовых) PDF; ухудшается на отсканированных/только-изображения PDF (используйте pdf_render_pages для таких) и очень сложных макетах. По умолчанию возвращает первые 10 страниц.

Преобразует PDF в чистый Markdown с порядком чтения для использования LLM: восстанавливает до 2 колонок контента (плюс полноширинные заголовочные/нижние колонтитулы), определяет заголовки по размеру шрифта и обнаруживает маркированные/нумерованные списки. Страницы с 3 или более колонками переключаются на одноколоночный порядок чтения. Таблицы выводятся как обычный текст в порядке чтения, НЕ восстанавливаются как таблицы Markdown. Лучше всего работает на чистых, цифровых (текстовых) PDF; ухудшается на отсканированных/только-изображения PDF (используйте pdf_render_pages для таких) и очень сложных макетах. По умолчанию возвращает первые 10 страниц.

Параметры

  • filePathstringобязательный

    Absolute path to the PDF file

  • pagesstring

    Page range, e.g. '1-5' or '1,3,5'. Defaults to first 10 pages.

Другие проверенные MCP-сервера

stacklok/toolhive

stacklok/toolhive

ToolHive — open-source MCP-платформа для безопасного запуска серверов. Изолирует каждый MCP инструмент в контейнере, управляет доступом и аудитом. Подходит разработчикам, платформенным инженерам и предприятиям, которым нужен самохостинг и контроль данных.

Go1951
skyhook-io/radar

skyhook-io/radar

Radar - MCP сервер, который даёт AI-ассистентам прямой доступ к Kubernetes: визуализирует топологию, показывает ресурсы и логи, управляет Helm и GitOps. Устанавливается одним бинарником без агентов. Полезен DevOps и SRE.

Go2621
MarkusPfundstein/mcp-obsidian

MarkusPfundstein/mcp-obsidian

MCP сервер для Obsidian через плагин Local REST API даёт инструменты для работы с хранилищем: чтение, поиск и изменение файлов. Идеально для интеграции заметок с AI-помощниками и автоматизации.

Python4102
Google Ads MCP

Google Ads MCP

официальный

MCP сервер для Google Ads API: предоставляет инструменты поиска по аккаунту, метаданных кампаний и список клиентов, а также ресурсы с метриками и сегментами. Помогает LLM и AI агентам управлять рекламными данными напрямую.

Python752
vectorize-io/vectorize-mcp-server

vectorize-io/vectorize-mcp-server

официальный

MCP-сервер для интеграции с Vectorize: выполняет векторный поиск по документам, извлекает текст из любых файлов в Markdown и запускает Deep Research. Полезен разработчикам AI-приложений, работающих...

JavaScript109
firebase/genkit

firebase/genkit

Genkit - open-source инструмент от Firebase для full-stack AI-приложений. Unified API для моделей Google, OpenAI, Anthropic, Ollama. Поддерживает JS/TS, Go, Python, Dart. Упрощает разработку чат-ботов, автоматизаций, RAG. Включает CLI, UI и мониторинг.

TypeScript6255
© Каталог MCP, 2026. Все права защищены.
Проект не аффилирован с Anthropic и любыми упомянутыми продуктами.
Все названия и торговые марки принадлежат их владельцам.
Контакты для связи: hi@mcp-katalog.ru

Лука Никитин