MCPサーバー

merge-pdf

io.github.theluckystrike/merge-pdf
生産性 公開・接続可能 MCP 2026-07-28

このMCPでできること

Uploads and manipulates PDFs by merging, splitting, extracting, rotating, reordering, stamping, watermarking, inspecting, and extracting text.

license_activate
Activate license
Turn Pro on for this connection with key, an MCPL1.<payload>.<signature> issued at checkout for this server or the bundle. Data under your token stays; a wrong or expired key changes nothing. license_status confirms it.
入力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['key'], 'properties': {'key': {'type': 'string', 'description': 'License key from checkout, MCPL1.<payload>.<signature>'}}, 'additionalProperties': False}
license_status
License status
Report this endpoint's licence state for your token as JSON: the product, the tier free or pro, why it is not Pro, and the checkout URL. Call it to explain a free-tier refusal. No arguments, nothing changes.
読み取り専用 冪等
入力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
pdf_count
Count pages in several PDFs
Page count per file plus the total, for any number of PDFs, with how many were readable. A file that cannot be read is reported on its own row and the others still count. Read-only. Free and unlimited.
入力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['paths'], 'properties': {'paths': {'type': 'array', 'items': {'type': 'string'}, 'minItems': 1, 'description': 'Names of PDFs uploaded with pdf_upload'}}, 'additionalProperties': False}
pdf_delete_upload
Delete a stored PDF
Delete one PDF stored for your token, uploaded or generated.
入力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['name'], 'properties': {'name': {'type': 'string', 'maxLength': 70, 'minLength': 1}}, 'additionalProperties': False}
pdf_files
List uploaded and generated PDFs
List the PDFs stored for your token: what you uploaded, and what this server has written, with their sizes.
入力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
pdf_info
Inspect a PDF
Call this tool to inspect a PDF: page count, page sizes in points/mm, paper name, metadata (title, author, producer, dates) and whether it is encrypted. Read-only, never modifies the file. Free tier: unlimited.
入力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['path'], 'properties': {'path': {'type': 'string', 'description': 'Name of a PDF uploaded with pdf_upload, or one this server wrote earlier'}}, 'additionalProperties': False}
pdf_merge
Merge PDFs into one file
Call this tool to join several PDFs into one, in the order given. Page sizes are kept as-is, so a merged file may have mixed sizes, and the answer says so. Inputs are never modified. Free tier: up to 5 files per merge.
入力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['paths', 'out_path'], 'properties': {'paths': {'type': 'array', 'items': {'type': 'string'}, 'minItems': 2, 'description': 'Names of the uploaded PDFs to join, in the order they should appear'}, 'out_path': {'type': 'string', 'description': 'Name for the merged PDF; it comes back as a download link valid for one hour'}, 'overwrite': {'type': 'boolean', 'description': 'Replace out_path if a file is already there. Default false: an existing file is never overwritten'}}, 'additionalProperties': False}
pdf_pages
Extract pages into a new PDF
Call this tool to pull selected pages into one new PDF, in the order written: "2,4-6" gives four pages. Asking for a page twice copies it twice. The input is never modified. Free tier: files up to 30 pages.
入力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['path', 'pages', 'out_path'], 'properties': {'path': {'type': 'string', 'description': 'Name of an uploaded PDF (pdf_upload), or one this server wrote earlier'}, 'pages': {'type': 'string', 'description': '1-based pages and ranges to keep, in output order, e.g. "2,4-6" or "5,1,1"'}, 'out_path': {'type': 'string', 'description': 'Name for the extracted PDF; it comes back as a download link valid for one hour'}, 'overwrite': {'type': 'boolean', 'description': 'Replace out_path if it exists. Default false'}}, 'additionalProperties': False}
pdf_reorder
Reorder the pages of a PDF
Call this tool to write a new PDF with pages in the order you give. The order must name every page exactly once, so nothing drops by accident; use pdf_pages for a subset. Pro.
入力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['path', 'order', 'out_path'], 'properties': {'path': {'type': 'string', 'description': 'Name of an uploaded PDF (pdf_upload), or one this server wrote earlier'}, 'order': {'type': 'array', 'items': {'type': 'integer', 'exclusiveMinimum': 0}, 'minItems': 1, 'description': 'The 1-based page numbers in their new order, e.g. [3,1,2] for a three-page file. Every page must appear exactly once'}, 'out_path': {'type': 'string', 'description': 'Name for the reordered PDF; it comes back as a download link valid for one hour'}, 'overwrite': {'type': 'boolean', 'description': 'Replace out_path if it exists. Default false'}}, 'additionalProperties': False}
pdf_rotate
Rotate pages
Call this tool to turn pages by a multiple of 90 degrees, clockwise for positive. Rotation is added to whatever the page already had, for a sideways scan. Writes a new file. Free tier: files up to 30 pages.
入力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['path', 'degrees', 'out_path'], 'properties': {'path': {'type': 'string', 'description': 'Name of an uploaded PDF (pdf_upload), or one this server wrote earlier'}, 'pages': {'type': 'string', 'description': 'Which pages to turn, e.g. "1" or "2,4-6". Omit for every page'}, 'degrees': {'type': 'integer', 'description': "90, 180, 270 or -90. Positive turns clockwise. Added to the page's existing rotation"}, 'out_path': {'type': 'string', 'description': 'Name for the rotated PDF; it comes back as a download link valid for one hour'}, 'overwrite': {'type': 'boolean', 'description': 'Replace out_path if it exists. Default false'}}, 'additionalProperties': False}
pdf_split
Split a PDF into several files
Call this tool to write one new PDF per range. Ranges are 1-based and may be open-ended: "1-3,5,7-" gives pages 1-3, page 5, and 7 to the end. The input is never modified. Free tier: files up to 30 pages.
入力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['path', 'ranges', 'out_path_pattern'], 'properties': {'path': {'type': 'string', 'description': 'Name of the uploaded PDF to split'}, 'ranges': {'type': 'string', 'description': 'Comma-separated 1-based page ranges, e.g. "1-3,5,7-". An open-ended range runs to the last page'}, 'overwrite': {'type': 'boolean', 'description': 'Replace existing outputs. Default false: nothing is overwritten and nothing is written at all if any target exists'}, 'out_path_pattern': {'type': 'string', 'description': 'Name pattern for the parts: {n} is the part number (1, 2, 3...), {range} is the range itself (e.g. 1-3), {name} is the input name. Example: {name}-{range}.pdf. Each part comes back as a download link valid for one hour'}}, 'additionalProperties': False}
pdf_stamp
Stamp text on a PDF
Call this tool to draw a word such as PAID or DRAFT across the pages, in a colour and position you choose. Writes a new file; input untouched. Free tier: the PAID and DRAFT presets in their preset colours.
入力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['path', 'text', 'out_path'], 'properties': {'path': {'type': 'string', 'description': 'Name of an uploaded PDF (pdf_upload), or one this server wrote earlier'}, 'text': {'type': 'string', 'minLength': 1, 'description': 'What to stamp. PAID and DRAFT are presets with their own colour; any other text is Pro'}, 'color': {'type': 'string', 'description': 'Hex code such as #1b7f3b, or a name: red, green, blue, black, gray, orange, purple. Pro'}, 'pages': {'type': 'string', 'description': 'Which pages to stamp, e.g. "1" or "2,4-6". Omit for every page'}, 'opacity': {'type': 'number', 'description': '0 to 1. Default 0.35 in the centre, 0.85 in a corner'}, 'out_path': {'type': 'string', 'description': 'Name for the stamped PDF; it comes back as a download link valid for one hour'}, 'position': {'enum': ['center', 'top-left', 'top-center', 'top-right', 'middle-left', 'middle-right', 'bottom-left', 'bottom-center', 'bottom-right'], 'type': 'string', 'description': 'Where on the page. Default center, which is drawn on the 45-degree diagonal like a real stamp'}, 'font_size': {'type': 'number', 'description': 'Point size. By default the stamp is sized to fit the page width'}, 'overwrite': {'type': 'boolean', 'description': 'Replace out_path if it exists. Default false'}}, 'additionalProperties': False}
pdf_text
Read the text of a PDF
Call this tool for best-effort text extraction from standard-font PDFs. Returns nothing for a scan (no OCR), or glyph indices for a custom-encoded font, and says which case applies. Read-only. Free tier: unlimited.
読み取り専用 冪等
入力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['path'], 'properties': {'path': {'type': 'string', 'description': 'Name of the PDF to read'}, 'pages': {'type': 'string', 'description': 'Which pages, e.g. "1" or "2,4-6". Omit for every page'}}, 'additionalProperties': False}
pdf_upload
Upload a PDF to work on
Send a PDF to this hosted endpoint. There is no filesystem here, so instead of a path you upload the file once with pdf_upload and then pass its name as `path` (or inside `paths`) to pdf_info, pdf_count, pdf_merge, pdf_split, pdf_pages, pdf_rotate, pdf_stamp, pdf_reorder and pdf_text. Give exactly one of pdf_base64 or url. url: fetch a public file instead of pasting base64 (recommended above about 10 KB): pasting a large base64 payload is slow to write out and can stall the turn before the call is ever sent, while a url costs one line and the fetch happens here. Uploads are kept for your token between calls; pdf_files lists them and pdf_delete_upload removes one. A file this server writes is named the same way and comes back as a download link valid for one hour. The request body cap is 256 KB, which is about 190 KB of PDF once base64-encoded; a url is fetched with a 10 second timeout, at most 3 redirects, public http(s) hosts only, and is capped at 2 MB.
入力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['name'], 'properties': {'url': {'type': 'string', 'description': "url: fetch a public file instead of pasting base64 (recommended above about 10 KB). Public http(s) only; private, link-local and this endpoint's own zone are refused"}, 'name': {'type': 'string', 'maxLength': 70, 'minLength': 1, 'description': 'Name to refer to this PDF by: 1-64 characters of letters, digits, underscore or dash, e.g. "invoice"'}, 'pdf_base64': {'type': 'string', 'description': 'The PDF file, base64-encoded'}}, 'additionalProperties': False}
pdf_watermark_business
Stamp your business details in the footer
Call this tool to put your business name and VAT id in the footer of every page, from the shared profile mcp-invoice and mcp-docx write. Use it before sending a document out. Pro.
入力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['path', 'out_path'], 'properties': {'path': {'type': 'string', 'description': 'Name of an uploaded PDF (pdf_upload), or one this server wrote earlier'}, 'pages': {'type': 'string', 'description': 'Which pages, e.g. "1". Omit for every page'}, 'out_path': {'type': 'string', 'description': 'Name for the footed PDF; it comes back as a download link valid for one hour'}, 'overwrite': {'type': 'boolean', 'description': 'Replace out_path if it exists. Default false'}}, 'additionalProperties': False}
追加
pdf_delete_upload
2026年9月24日2:40
追加
pdf_files
2026年9月24日2:40
追加
pdf_upload
2026年9月24日2:40
追加
license_activate
2026年9月24日2:40
追加
license_status
2026年9月24日2:40
追加
pdf_text
2026年9月24日2:40
追加
pdf_reorder
2026年9月24日2:40
追加
pdf_watermark_business
2026年9月24日2:40
追加
pdf_stamp
2026年9月24日2:40
追加
pdf_rotate
2026年9月24日2:40
追加
pdf_pages
2026年9月24日2:40
追加
pdf_split
2026年9月24日2:40
追加
pdf_merge
2026年9月24日2:40
追加
pdf_count
2026年9月24日2:40
追加
pdf_info
2026年9月24日2:40