Skip to main content
Glama
ncepuee

pdfcompress-mcp

by ncepuee

PDFCompress

CI Release Python License Stars

PDFCompressは、人間とAIエージェントのための、構造を保持するオープンソースのPDF圧縮ツールです。独立に検証されたWPSスタイルの画像プリセットを使用しますが、WPS DLLを呼び出したり配布したりすることはなく、WPSアカウントにも依存しません。

その中核となるルールはシンプルです:

テキストとベクターはテキストとベクターのまま保持し、過大なサイズの描画画像のみをダウンサンプリングし、公開前に結果を検証します。

特徴

  • 実際のPDF変換行列から画像解像度を計算します(Form XObject内にネストされた画像も含む)。

  • WPS互換のhighstandardmediumlow設定を適用します。

  • 入札、入札、アーカイブ添付用のarchive-safeプロファイルを追加します。

  • ソースファイルを保持し、別の出力パスにアトミックに書き込みます。

  • デフォルトでブックマーク、添付ファイル、注釈、フォント、可視のPDF構造を保持します。

  • 署名の無効化が明示的に承認されない限り、署名付きPDFを拒否します。

  • 各候補の後にページ数、ページボックス、抽出可能なテキストを検証します。

  • 前のJPEG結果を繰り返し再圧縮することなく、ターゲットサイズをサポートします。

  • Python API、CLI、共有Agent Skill、Codexプラグイン、Claude Codeプラグイン、MCPサーバーを提供します。

Related MCP server: MokuPDF

インストール

Python 3.11以降が必要です。

git clone https://github.com/ncepuee/PDFCompress.git
cd PDFCompress
python -m pip install -e ".[mcp]"

uvを使用する場合:

uv tool install --editable ".[mcp]"

クローンせずにタグ付きGitHubリリースをインストール:

uv tool install "pdfcompress-agent[mcp] @ git+https://github.com/ncepuee/PDFCompress.git@v0.1.0"

クイックスタート

圧縮前に分析:

pdfcompress analyze "input.pdf" --json

WPS互換の高品質プロファイルで圧縮:

pdfcompress compress "input.pdf" "output.pdf" --preset high --json

4MB未満である必要がある正式な添付ファイルの場合:

pdfcompress compress "input.pdf" "output.pdf" `
  --preset archive-safe `
  --target-size-mb 4 `
  --json

既存のペアを検証:

pdfcompress verify "input.pdf" "output.pdf" --json

プリセット

プリセット

トリガーPPI

ターゲットPPI

JPEG品質

使用目的

archive-safe

360

300

85

保守的な正式およびアーカイブ添付ファイル

high

300

300

75

WPS互換の高品質

standard

150

150

75

WPS互換の標準品質

medium

110

110

50

WPS互換の中品質

low

96

96

30

WPS互換の低品質

4つのWPS互換値は、インストールされた圧縮プラグインのgenerateCompressArgsブランチから復元され、付属の分析ノートに独立に文書化されています。正確なWPSリサンプリングカーネル、クロマサブサンプリングポリシー、完全なオプティマイザービットマスクはコピーも主張もされていません。

ターゲットサイズの動作

--target-size-mbが指定されると、PDFCompressは要求されたプリセットから始めて、段階的に強力なプロファイルを試します。各試行は元のPDFを再度開きます:

archive-safe → high → standard → medium → low

制限未満の最初の検証済み候補が選択されます。どのプロファイルも制限に達しない場合、最小の検証済み候補が警告とともに返されます。PDFCompressは、ターゲットを強制するためにページを静かにラスタライズしたり、フォントを削除したり、添付ファイルを削除したりしません。

エージェント統合

Claude Code

まずPythonパッケージをインストールし、セッション用にプラグインをロードします:

cd PDFCompress
claude --plugin-dir .

スキルを/pdfcompress:pdf-compressとして呼び出すか、ClaudeにPDFの圧縮を依頼します。Claude Codeはプラグインの.mcp.jsonもロードし、pdfcompress-mcpをstdioで起動します。

Codex

リポジトリには、検証済みの.codex-plugin/plugin.json、共有skills/ディレクトリ、.mcp.jsonが含まれています。ローカルのCodexマーケットプレイスからインストールするか、スキルを個人/プロジェクトのスキルディレクトリにコピーできます。pdfcompress-mcpPATH上にあるように、コアパッケージをインストールする必要があります。

一般的なMCPクライアント

このstdio設定を使用します:

{
  "mcpServers": {
    "pdfcompress": {
      "type": "stdio",
      "command": "pdfcompress-mcp",
      "args": []
    }
  }
}

MCPツール:

  • analyze_pdf(path, password?)

  • compress_pdf(input_path, output_path, preset?, target_size_mb?, overwrite?, allow_signature_loss?)

  • verify_pdf(input_path, output_path)

オープンソースの研究と採用したアイデア

プロジェクト

強み

PDFCompressが採用するもの

qpdf

成熟したコンテンツ保持型PDF変換と修復

pikepdfを通じた信頼性の高い解析、オブジェクトストリーム書き込み、構造保持

pikepdf

qpdf上のPython API

コアオブジェクトモデル、画像デコード、リソースクリーンアップ、保存パイプライン

pdfcpu

スタンドアロンのバッチCLIと幅広い検証コマンド

スクリプトに適したサブコマンドとJSONレポート

OCRmyPDF

安全な段階的処理とPDF/A対応ワークフロー

一時候補、最終検証、アトミック公開

Ghostscript

効果的な画像ダウンサンプリング制御

トリガーPPI、ターゲットPPI、品質プリセットを分離; ライセンス境界のためバンドルしない

MuPDF

多段階のガベージコレクションと重複ストリーム再利用

積極的なクリーンアップは独立したテスト可能な段階として扱う; バンドルしない

pdfsizeopt

多段階の最小ファイル最適化

候補を比較し、最小の検証済み出力を選択

ライセンス境界についてはTHIRD_PARTY_NOTICES.mdを参照してください。

安全性と制限事項

  • PDFを書き換えるとデジタル署名が無効になります。デフォルトでは停止します。

  • 暗号化されたPDFにはパスワードが必要です。出力時には暗号化が保持されます。

  • バージョン0.1では、視覚的な破損のリスクを避けるため、画像マスク、透明度、カスタムデコード配列、特殊な色空間、8ビット以外の画像をスキップします。

  • テキストの等価性チェックは抽出可能なテキストを使用します。OCRなしのスキャンページは、依然として視覚的なQAが必要です。

  • 法的に重要な文書や非常に複雑な文書にツールを使用する前に、ピクセルレベルのレンダリング比較を推奨します。

  • 候補がソースより小さくない場合、PDFCompressはソースのバイト単位のコピーを出力し、安全なサイズ削減が見つからなかったことを報告します。

検証済みの例

開発中に使用された12ページの画像中心のPDFについて:

プロファイル

ソース

出力

削減率

検証

archive-safe

24,004,483 B

3,149,368 B

86.88%

ページ、ボックス、抽出テキストが一致

high

24,004,483 B

2,940,952 B

87.75%

ページ、ボックス、抽出テキストが一致

100 DPIレンダリング比較では、すべてのページ寸法が一致しました。archive-safeの結果は、0〜255チャンネルスケールで平均ページごとのRGB RMS差が0.388、最大が3.002でした。これは1つの検証ケースであり、普遍的な品質保証ではありません。

開発

python -m pip install -e ".[mcp,dev]"
pytest
ruff check .

テストは、検索可能なテキストと高解像度画像を含む独自のPDFを生成します。リポジトリには個人文書は含まれていません。

ライセンス

PDFCompressはMITライセンスの下でリリースされています。サードパーティの依存関係はそれぞれのライセンスを保持します。

バージョンごとの変更とダウンロード可能なPythonパッケージについては、変更履歴GitHubリリースを参照してください。

A
license - permissive license
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
1Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI applications to read and process PDF files with intelligent file search, text extraction, image processing, and optional OCR support for scanned documents.
    MIT
  • F
    license
    A
    quality
    C
    maintenance
    Enables AI agents to efficiently process large local and online PDFs through selective extraction of text, images, and metadata. It provides tools for content search and document outline navigation to optimize context window usage.
    7
    14
  • A
    license
    Not graded
    quality
    B
    maintenance
    Privacy-first file tools for AI agents, enabling operations like PDF merge/split, image compression/convert, metadata stripping, and background removal without storing files.
    46
    MIT

View all related MCP servers

Related MCP Connectors

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ncepuee/PDFCompress'

If you have feedback or need assistance with the MCP directory API, please join our Discord server