In pages mode, ranges narrows which pages get split and each page still becomes its own file; in ranges mode, each range expression becomes a single file containing all the pages in it. Same argument, different number of files, and only the mode decides which. The watermarking is split by intent in a similar way: the stamped watermark is applied over the page, while the direct text watermark leaves the text selectable and copyable, which matters when the result still has to be searchable. Encryption is the tool that changes what a reader may do rather than how the file looks, and its printing, copying, modifying, annotating and form-filling flags are set independently of the passwords.
A local PDF manipulation server with seven tools covering merging, splitting in two modes, page-to-image conversion, stamped and direct text watermarks, watermark image creation, and encryption with per-permission control.
- Merging and splitting: merge_pdfs combines input paths into a single output with a title, and split_pdf_file works in a pages mode that writes one file per page and a ranges mode where each range expression becomes one file containing those pages.
- Rasterising: convert_pdf_to_images renders pages to images with a dpi, an image format, a quality and a page selection.
- Watermarks in two forms: add_pdf_watermark applies a text or image watermark with position, layout, rotation, opacity and font size, while add_text_watermark_direct writes the text onto the page so it stays selectable and copyable, taking RGB colour components.
- A watermark asset of its own: create_watermark_image renders text into a watermark image with a colour, background colour and font size.
- Encryption with permissions separated from passwords: encrypt_pdf_file sets a user password and an owner password and controls independently whether printing, copying, modifying, annotating and form filling are allowed.
PDF files on paths the server can read and a writable output path or directory — every tool takes local paths. No credentials are configured.
One command — uvx --from git+https://github.com/gstiebler/pdf-mcp-server.git pdf-mcp-server
