mcpField
P
pdf-split-merge-compress

pdf-split-merge-compress

リモート
mcp.zovo.one生産性21 日前に更新
リポジトリ公式サイト

pdf-split-merge-compress について

個人や小規模事業者向けに、PDFの分割、結合、回転、スタンプ、テキスト抽出などをローカルで行う MCP サーバーです。入力ファイルは変更せず、結果を別ファイルに保存します。

主な機能

  1. 01ページ範囲での分割とページ抽出
  2. 02ページの結合、並べ替え、回転
  3. 03PAID、DRAFT、任意の文字のスタンプ
  4. 04PDFのテキスト、メタデータ、ページ数の取得
  5. 05入力を変更せず結果を別ファイルに保存

活用シーン

  1. 01スキャンから指定ページを抽出して分割
  2. 02契約書や請求書などの PDF を結合
  3. 03請求書に PAID を押してコピーを保存
  4. 04ページ数の確認や抽出可能な本文の読み取り

MCP 対応

MCP サーバーとして、PDFの情報取得、ページ操作、スタンプ、テキスト抽出のツールを MCP クライアントに提供します。最近の操作を返すリソースと mark_invoice_paid プロンプトも備えています。

設定

リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。

エンドポイントhttps://mcp.zovo.one/mcp/pdf-split-merge-compress
インストールコマンドをコピー
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。

すべてのエンドポイント
Streamable HTTPhttps://mcp.zovo.one/mcp/pdf-split-merge-compress認証が必要

ツール

15
パラメーター型必須説明
pathstringはいpdf_upload でアップロードした PDF の名前、またはこのサーバーが以前に作成した PDF の名前

詳細

Claude から PDF フォームを結合、分割、入力する

「この請求書に PAID と押印してコピーを保存して」や「このスキャンの 2~6 ページを抜き出して、契約書と結合して」と言うだけで、すべてが自分のマシン上で一瞬で完了します。この MCP サーバーは、ウェブのアップローダーを使うことになりがちなちょっとした PDF 作業をこなします。PDF の結合、ページ範囲による分割、ページの抽出や並べ替え、横向きのスキャンの回転、PAID や DRAFT、お好きなテキストの押印、会社名と VAT ID のフッターへの挿入、フォルダー内のファイルのページ数の集計、PDF のテキストの読み取りに対応しています。アップロードも、アカウントも、ネイティブ依存関係も、オフィスソフトのインストールも不要です。

公式 MCP Registry に掲載されています(io.github.theluckystrike/pdf-merge-split-stamp-extract-pages)。

AI Product Index に掲載されています - mcp.zovo.one/s/pdf にライブのリモートエンドポイントがあり、無料枠を利用できます。登録は不要です。

PDF のデモ

フリーランスの仕事で発生する PDF の雑務を、請求書を預けるのが不安なブラウザータブではなく、チャットからこなせます。

60 秒でインストール

@theluckystrike/mcp-pdf の npm 公開は保留中です。それまでは、ワンクリックの .mcpb バンドルか、クローンしてビルドする方法をご利用ください。 以下の両方の動作を確認済みです。

ワンクリック(.mcpb):最新リリースから pdf.mcpb をダウンロードし、Claude Desktop でダブルクリックします: https://github.com/theluckystrike/mcp-servers/releases/latest

(claude_desktop_config.json):

{
  "mcpServers": {
    "pdf": {
      "command": "npx",
      "args": ["-y", "@theluckystrike/mcp-pdf"]
    }
  }
}

Claude Code:

claude mcp add pdf -- npx -y @theluckystrike/mcp-pdf

(.cursor/mcp.json):

{
  "mcpServers": {
    "pdf": {
      "command": "npx",
      "args": ["-y", "@theluckystrike/mcp-pdf"]
    }
  }
}

上記の npx 形式は、パッケージの公開と同時に利用できるようになります。それまでは、上記の .mcpb バンドルを使うか、 次の 3 つのコマンドだけでソースからビルドしてください:

git clone https://github.com/theluckystrike/mcp-servers.git && cd mcp-servers
npm install
npm run build -w packages/mcp-license -w servers/pdf

その後、クライアントの command に node を指定し、引数として servers/pdf/dist/index.js の絶対パスを 1 つ渡します。

Pro モードで実行するには、同じ設定ブロックで MCP_LICENSE_KEY を設定するか、キーを指定して license_activate を一度呼び出してください。

ツール

ツール機能
pdf_infoページ数、各ページのサイズ(ポイントおよびミリメートル単位)、用紙名(A4、Letter、カスタム)、各ページに設定済みの回転、メタデータ(タイトル、作成者、生成ソフト、日付)、ファイルが暗号化されているかどうかを表示します
pdf_count任意の数の PDF ファイルについて、ファイルごとのページ数と合計数を表示します。読み取れないファイルはファイルごとに報告され、ほかのファイルの集計は続行されます
pdf_merge指定した順序で PDF を 1 つに結合します。ページサイズはそのまま維持され、サイズが混在する結合ファイルはその旨が示されます
pdf_split範囲ごとに新しいファイルを作成します。"1-3,5,7-" は 1~3 ページ、5 ページ、7 ページから末尾までを指定します。out_path_pattern では {n}、{range}、{name} を使用できます
pdf_pages選択したページを、指定した順序で 1 つの新しい PDF に抽出します。"5,1,1" は 5 ページ目を先頭にし、1 ページ目を 2 回含めます
pdf_rotateページを 90 度単位で回転します。既にページに設定されている回転に加算されるため、横向きのスキャンに適しています
pdf_stampページにテキストを描画します。PAID と DRAFT のプリセット、または任意のテキスト、色、位置、不透明度、サイズを指定できます。中央のスタンプは 45 度の対角線上に配置されます
pdf_watermark_business共有プロフィールから、すべてのページのフッターに会社名と VAT ID を挿入します。mcp-invoice と mcp-docx がこのプロフィールを書き込みます
pdf_textページのコンテンツストリームから、可能な範囲でテキストを抽出します。下記の注意事項をご覧ください
pdf_reorderページを新しい順序に並べた PDF を作成します。誤ってページが抜けないよう、すべてのページをそれぞれ 1 回ずつ指定する必要があります
license_statusFree モードまたは Pro モードを表示します
license_activatePro キーを有効化します(オフラインで検証)

リソース:pdf://recent は、直近の 25 件の操作を新しい順に返します。入力内容、書き込まれたファイル、実行日時が含まれます。 プロンプト:mark_invoice_paid は、mcp-invoice の invoice_get に続けて pdf_stamp PAID を実行し、押印したコピーを元のファイルと同じ場所に保存します。

できること

指示ツール
「請求書 INV-2026-0007 を支払い済みにしてください。」mark_invoice_paid プロンプトの後に pdf_stamp
「送付する前に、この契約書全体に DRAFT の透かしを入れてください。」pdf_stamp
「この3つのPDFを1つのファイルに結合してください。」pdf_merge
「このスキャンを分割してください。1~3ページは請求書、4ページ目以降は領収書です。」pdf_split
「このPDFから2~6ページを抜き出して、別々に保存してください。」pdf_pages
「このスキャンは横向きです。回転してください。」pdf_rotate
「これらすべてのPDFは何ページありますか?」pdf_count
「このPDFの1ページ目には何と書かれていますか?」pdf_text
「フッターに会社名とVAT番号を入れてください。」pdf_watermark_business
「表紙を先頭に移動してください。」pdf_reorder

使用例

You: Stamp PAID on ~/invoices/INV-2026-0007.pdf and save a copy.

  pdf_stamp {
    path: "~/invoices/INV-2026-0007.pdf",
    text: "PAID",
    position: "center",
    out_path: "~/invoices/INV-2026-0007-paid.pdf"
  }
  -> Stamped "PAID" on 1 page
  -> ~/invoices/INV-2026-0007-paid.pdf, 0.9 MB

スタンプは平坦化された画像ではなく、描画されたテキストです。選択や検索が可能で、プリセットの緑色で45度の斜め方向に描画されます。元のファイルはバイト単位で変更されません。

Free と Pro

FreePro
pdf_info、pdf_count、pdf_text無制限無制限
pdf_merge1回あたり最大5ファイルファイル数無制限
pdf_split、pdf_pages、pdf_rotate30ページ以下のファイルページ数無制限
pdf_stampプリセットカラーの PAID と DRAFT のプリセット任意のテキスト、色、サイズ
pdf_watermark_business-フッターに会社名とVAT番号を追加
pdf_reorder-利用可能

プランの制限に達した場合も、それはエラーではなく回答として通知されます。呼び出しが拒否された場合、何も書き込まれません。

Pro は買い切りで $19、またはコレクション内のすべてのサーバーを対象に $39 です。

pdf_text はベストエフォートです。その意味を正確に説明します

PDF はテキストを保存しません。描画演算子を保存し、表示されるテキストはフォントに渡されたバイト列です。このサーバーは node:zlib を使って各ページの FlateDecode コンテンツストリームを展開し、4つのテキスト表示演算子(Tj、TJ、'、")と、行を終わらせる位置指定演算子を読み取ります。これは約200行のコードで独自に実装したパーサーで、pdfjs もネイティブモジュールも使っていません。現実的な制限が3つあり、ツールは呼び出しのたびにその回答で明示します。

  • スキャンにはテキストがありません。 画像のみのページにはテキスト演算子がないため、何も返りません。ここにOCRはなく、今後も追加されません。説明のない空文字列を返すのではなく、スキャンである可能性が高いと回答します。
  • カスタムエンコーディングやCIDエンコーディングでは、文字ではなくグリフインデックスが返ります。 サブセット埋め込みフォントやCJKフォントは、パーサーが読み取らないテーブルを使って、バイト列をグリフ番号に対応付けます。読み取り可能な文字が出力されない場合は、その原因がフォントにあると回答します。
  • 読み取り順は描画順です。 段組みの検出もレイアウトの再構築も行いません。単語間のスペースは、TJ 配列でスペースに使用される大きな負のカーニング値から復元します。そのため、単語ごとに個別に位置指定されているPDFでは、単語がつながった状態で返ることがあります。

ワープロ、請求書作成ツール、レポート生成ツールで作成されたPDFや、標準フォントまたは完全に埋め込み済みのフォントを使うPDFは、きれいに読み取れます。それ以外の場合は、読み取れなかった理由が示されます。

暗号化されたPDFは推測で処理せず、拒否します

pdf-lib では復号できません。また、暗号化を無視して暗号化されたファイルを読み込むと、ページが文字化けし、そのまま出力に書き込まれてしまいます。そのため、トレーラーに /Encrypt 辞書が記載されたファイルは、書き込みを行うすべてのツールで拒否されます。メッセージには理由と解決方法が示されます。パスワードを使ってリーダーで開き、新しいPDFとしてエクスポートまたは印刷し、そのファイルを使用してください。pdf_info はレポートが唯一の役割なので、encrypted: true として引き続き回答します。また、pdf_count はそのファイルを読み取り不可のファイル1件として報告し、残りのファイルは引き続きカウントします。

既存のファイルは上書きされず、入力も変更されません

各ツールは新しいファイルを書き込み、入力をバイト単位でそのまま保持します。意図的に、インプレースモードはありません。 すでに存在する out_path は拒否されます。

Error: /path/merged.pdf already exists and nothing was written.
Pass overwrite: true to replace it, or give a different out_path.

パスは存在確認ではなく排他的な作成によって確保されるため、2つのプロセスが同じ out_path に同時に書き込もうとしても、一方だけが成功し、もう一方は拒否されて何も書き込みません。pdf_split は、いずれかを書き込む前にすべての出力パスを確保します。そのため、3番目のパートで衝突しても、分割が途中まで行われて1番目と2番目のパートだけが残ることはありません。また、確保は解放されるため、ディスク上に空のファイルも残りません。

ファイルを置き換える場合は、overwrite: true を指定してください。

overwrite: true を指定しても、出力を入力にすることはできません。操作結果を自身のソースの1つに上書きすると、そのソースが破壊されます。ページはすでにメモリ上にあり、元のファイルに書き戻されるため、3ページのファイルが抽出した1ページだけのファイルになり、その後そのパスを読み取るたびに、気付かないまま誤った結果になります。そのため、同じ呼び出しのいずれかの入力と同じ場所を指す(または inode を共有する)out_path は、処理を始める前に拒否されます。

Error: out_path /path/scan.pdf is also an input of this operation, so writing it would destroy the source.
Nothing was written. Write beside it instead - /path/scan-out.pdf - and, if the result really is meant to
take the original's place, rename it yourself once you have checked it.

制限事項

  • 100 MB を超える入力は拒否されます。PDF の書き換えには、その数倍のメモリが必要です。
  • %PDF- で始まらないファイルは、何も読み込む前に拒否されます。
  • 回転はページメタデータとして90度単位で記録されます。これはこの形式で使える単位です。描画し直すことはありません。
  • スタンプのテキストには、WinAnsi とその256個のコードポイントを含む組み込み PDF フォントが使われます。この範囲外の文字は、明確なラテン文字の形がある場合は音訳されます。たとえば、ポーランド語の OPŁACONE のスタンプは OPLACONE になり、その旨と実際に描画された内容が回答に示されます。該当する形がない文字は削除され、数が記録されるため、CJK のスタンプは作成できません。改行は単語の区切りとして扱われ、削除されません。
  • font_size は1~1600ポイントの範囲で指定する必要があります。このサーバーが使用する最小サイズでも収まらない長さのスタンプも描画され、端からどれだけはみ出すかが回答に示されるため、テキストを短くできます。
  • pdf_text は1回の回答を200,000文字までに制限し、続きから取得するための pages 引数を示します。ファイルから何かが欠落するわけではありません。切り取られるのは回答であり、読み取りではありません。
  • ページ番号の追加、署名、墨消し、圧縮には対応していません。このサーバーはページ単位の処理を行うもので、PDF エディターではありません。PDF/A の書き込みには対応していません。pdf_info はファイル自身の pdfa_claim を報告し、書き込みを行う各ツールは、出力がその宣言を維持しなくなることを明示します。
  • フォームは読み取るだけで、入力はしません。pdf_text は AcroForm のフィールド値を出力します。これらの値はページコンテンツストリームではなくフィールド内にあるため、ページテキストには含まれません。
  • OCR には対応していません。pdf_text のセクションを参照してください。

データの保存方法

保存されるのは、実行した操作の記録だけです。${XDG_DATA_HOME:-~/.local/share}/mcp-servers/pdf/operations.json に、直近500件の操作がプレーンな JSON として保存されます。PDF は指定した場所にそのまま残ります。記録への書き込みはすべて .../pdf/.lock のアドバイザリロック内で行われるため、同じデータディレクトリを使う2つのクライアントが記録を失うことはありません。また、一時ファイルに保存してから、所定の場所にリネームします。

記録が読み取れない場合や有効な JSON でない場合も、「空」として扱うことはありません。operations.json.corrupt-<timestamp> としてバイト単位でそのまま別の場所に移動し、その隣にマーカーを置きます。依頼された PDF は引き続き書き込まれ、記録に手を加える前にディスク上に保存されます。また、履歴を更新できなかったことが回答で通知されます。

業務用フッターには、スイート全体で共通のプロファイル ${XDG_DATA_HOME:-~/.local/share}/mcp-servers/profile/business.json が使われます。これは mcp-invoice または mcp-docx の business_set によって書き込まれます。内容を捏造することはありません。名前が保存されていない場合、pdf_watermark_business は拒否し、実行すべきツールを案内します。

プライバシー

すべてのデータはローカルに保存されます。サーバーはお使いのマシン上のファイルを読み書きし、いかなるネットワークリクエストも行いません。 ライセンス認証のため(キーはオフラインで検証されます)でも、フォントのためでも、テレメトリーのためでもありません。スタンプを押した PDF がどこかにアップロードされることはありません。それこそが、このツールを作った理由です。

組み合わせて使えるツール

  • mcp-invoice:送信した請求書に「支払い済み」のスタンプを押します。mark_invoice_paid プロンプトでは、invoice_get の結果を pdf_stamp に渡します。
  • mcp-docx:提案書を .docx で作成して PDF に変換し、ここでスタンプを押したり、結合したり、分割したりできます。
  • mcp-resume:履歴書、カバーレター、ポートフォリオを、応募フォームで受け付けられる 1 つのファイルにまとめます。
  • office-suite:1 回のインストールで複数のサーバーを利用でき、設定エントリも 1 つです。

トラブルシューティング

  • npx がハングする、またはパッケージが見つからない:このパッケージの npm 公開は保留中です。公開されるまでは、上記の .mcpb バンドルか、クローンしてビルドする方法を使ってください。
  • 「暗号化されているため拒否されました」:ファイルがパスワードまたは権限で保護されています。PDF リーダーで開き、新しい PDF にエクスポートするか印刷してから、そのコピーにツールを実行してください。このサーバーがパスワードを推測したり、削除したりすることはありません。
  • pdf_text が何も返さない:ページがスキャン画像であるか、フォントがカスタムエンコーディングを使用しています。どちらに該当するかは回答に記載されます。OCR 機能はありません。
  • スタンプが小さすぎる、または大きすぎる:デフォルトでは、ページ幅に収まるようにサイズが調整されます。正確なポイントサイズを指定するには font_size を渡し、opacity には 0 から 1 の値を指定してください。
  • 「すでに存在するため、何も書き込まれませんでした」:overwrite: true を渡すか、別の out_path を指定してください。
  • Node のバージョン:Node >= 18 が必要です。node -v で確認してください。

MIT ライセンスです。サポート:[email protected]

theluckystrike が作成しました。

よくある質問

PDF を結合・分割できる MCP サーバーはありますか?

はい。mcp.zovo.one の pdf サーバーは、フォームフィールドを保持したまま、PDF の結合、分割、回転、PDF フォームへの入力を行います。分割、ページ操作、回転の各操作では、1 ファイルあたり 30 ページまで無料で利用できます。リモートエンドポイントでホストされており、インストールは不要です。

MCP サーバーを使って Claude で PDF フォームに入力できますか?

はい。https://mcp.zovo.one/mcp/pdf に接続し、フォームのフィールドへの入力や複数の PDF の結合を Claude に依頼できます。出力ではフォームが保持されるため、入力したフィールドを引き続き編集できます。

これらのドキュメントを MCP サーバーとして使う

任意の MCP クライアント(Claude、Cursor、Windsurf、VS Code)から、インストールせずに GitMCP 経由でこのリポジトリのドキュメントを直接読み取れます:

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。