eSign MCP Server について
eSign MCP Serverは、AIワークフローで署名や文書情報を扱うためのPDF署名ツールを提供します。指定ページの座標にPNGまたはJPG画像を配置でき、ページ数や寸法も確認できます。
主な機能
- 01PDFの指定位置に署名画像を配置
- 02PNG・JPG形式の署名画像に対応
- 03署名の横に日付を追加可能
- 04PDFのページ数と寸法を取得
- 05Base64でファイル内容を転送
活用シーン
- 01契約書PDFに署名画像を配置
- 02署名の横に現在の日付を追加
- 03PDFのページ数と寸法を確認
- 04AIワークフローでPDF署名を処理
MCP 対応
互換クライアントに`sign_pdf`と`get_pdf_info`のツールを提供します。PDFの入力と署名後の出力はBase64で受け渡します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
eSign MCP サーバー
指定した座標に署名画像を追加して PDF ドキュメントに署名するツールを提供する MCP(Model Context Protocol)サーバーです。
クレジット
この MCP サーバーは、Charlie DeTar([email protected])による優れた signpdf プロジェクトを基盤として構築されています。元の signpdf ユーティリティが提供する PDF 署名機能を、この MCP サーバーが最新の MCP インターフェースで利用できるようにしています。
機能
- sign_pdf:正確な位置に署名画像を PDF ドキュメントに追加します
- get_pdf_info:ページ数やサイズなど、PDF のメタデータを取得します
- 入力検証とエラー処理
- PNG および JPG の署名画像に対応
- 日付の追加(任意)
- ファイル転送用の Base64 エンコード
ツール
sign_pdf
指定した座標に署名画像を追加して PDF ドキュメントに署名します。
パラメーター:
pdf_data(string):Base64 エンコードされた PDF ファイルの内容signature_data(string):Base64 エンコードされた署名画像(PNG、JPG)page_number(int, optional):署名するページ番号(1 から始まるインデックス、デフォルト:1)x(float, optional):PDF 単位での左下隅からの X 座標(デフォルト:100)y(float, optional):PDF 単位での左下隅からの Y 座標(デフォルト:100)width(float, optional):PDF 単位での署名の幅(デフォルト:125)height(float, optional):PDF 単位での署名の高さ(デフォルト:40)add_date(bool, optional):署名の横に現在の日付を追加するかどうか(デフォルト:false)
戻り値: Base64 エンコードされた署名済み PDF の内容
get_pdf_info
ページ数やサイズなど、PDF ドキュメントに関する情報を取得します。
パラメーター:
pdf_data(string):Base64 エンコードされた PDF ファイルの内容
戻り値:
{
"num_pages": 1,
"pages": [
{
"page_number": 1,
"width": 612.0,
"height": 792.0
}
]
}
インストール
前提条件
- Python 3.11+
uvパッケージマネージャー(推奨)またはpip
ローカルインストール
- このリポジトリをクローンまたはダウンロードします
- 依存関係をインストールします:
uv pip install -r requirements.txt
サーバーの起動
MCP サーバーを起動するには:
uv run python mcp_server.py
デフォルトでは、サーバーは stdio トランスポートで起動します。
テスト
サーバーの機能を確認するテストスクリプトが用意されています:
uv run python test_server.py
次の処理が実行されます:
- テスト用 PDF ドキュメントを作成します
- テスト用署名画像を生成します
get_pdf_infoツールをテストしますsign_pdfツールをテストします- 署名済み PDF を
test_signed.pdfとして保存します
Docker デプロイ
このサーバーには、コンテナ化されたデプロイ用の Docker サポートが含まれています:
# Build the image
docker build -t pdf-signer-mcp .
# Run the container
docker run -p 8000:8000 pdf-signer-mcp
Smithery デプロイ
このサーバーは、付属の smithery.yaml 設定ファイルを使用して Smithery にデプロイできるように設定されています。
設定ファイル
Dockerfile:コンテナのビルド手順smithery.yaml:Smithery のデプロイ設定requirements.txt:Python の依存関係
使用例
Claude Desktop での使用
- claude.ai/download から Claude Desktop をインストールします
- このリポジトリをクローンします:
git clone https://github.com/adamanz/esign-mcp.git cd esign-mcp - 依存関係をインストールします:
uv pip install -r requirements.txt - 設定ファイルを編集して Claude Desktop を設定します:
設定ファイルの場所:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
設定:
{
"mcpServers": {
"esign-mcp": {
"command": "uv",
"args": [
"run",
"python",
"/ABSOLUTE/PATH/TO/esign-mcp/mcp_server.py"
]
}
}
}
- MCP サーバーを読み込むため、Claude Desktop を再起動します
- MCP ツールを確認します。利用可能なツールを示す 🔨 ハンマーアイコンが表示されます
Claude Code での使用
- Claude Code をインストールします(まだインストールしていない場合)
- プロジェクトディレクトリで このリポジトリをクローンします:
git clone https://github.com/adamanz/esign-mcp.git cd esign-mcp uv pip install -r requirements.txt - ターミナルで MCP サーバーを起動します:
uv run python mcp_server.py - Claude Code では、stdio モードで実行すると MCP サーバーが自動的に検出されます
- Claude Code との会話で ツールを直接使用します
Cursor での使用
- cursor.sh から Cursor をインストールします
- プロジェクトに追加して MCP サーバーをセットアップします:
git clone https://github.com/adamanz/esign-mcp.git cd esign-mcp uv pip install -r requirements.txt - Cursor MCP 設定を作成または編集して、MCP サーバーを使用するよう Cursor を設定します
- サーバーを実行します:
uv run python mcp_server.py - Cursor の AI アシスタントインターフェースから ツールにアクセスします
代替方法:uv を使わずに使用する
標準の pip を使用する場合:
git clone https://github.com/adamanz/esign-mcp.git
cd esign-mcp
pip install -r requirements.txt
python mcp_server.py
設定を更新し、uv run python の代わりに python を使用します。
ツール呼び出しの例
PDF 情報の取得:
{
"tool": "get_pdf_info",
"arguments": {
"pdf_data": "JVBERi0xLjQK..."
}
}
PDF への署名:
{
"tool": "sign_pdf",
"arguments": {
"pdf_data": "JVBERi0xLjQK...",
"signature_data": "iVBORw0KGgoAAAA...",
"page_number": 1,
"x": 100,
"y": 100,
"width": 125,
"height": 40,
"add_date": true
}
}
実際の使用例
MCP サーバーを起動すると、自然言語で PDF 署名ツールを操作できます:
会話の例:
-
PDF 情報の取得:
「PDF ファイルがあります。ページ数と寸法を教えてもらえますか?」
AI は PDF ファイルの提供を求め、その後
get_pdf_infoツールを使って分析します。 -
PDF への署名:
「この契約書の PDF の最初のページに署名したいです。右下隅に署名画像を追加してもらえますか?」
AI は適切な座標を使って右下に配置し、
sign_pdfツールを使用します。 -
複数の署名:
「この PDF の 2 ページ目に、座標 200, 150 の位置で、100x30 ピクセルの大きさの署名を追加してください。今日の日付も追加してください。」
AI は正確な座標を使い、日付の挿入を有効にします。
-
座標に関するサポートの取得:
「この PDF に署名したいのですが、署名をどこに配置すればよいか分かりません。座標系について説明してもらえますか?」
AI は PDF の座標について説明し、適切な値を選ぶ手助けをします。
技術上の注意
PDF の座標
- 座標には PDF 標準単位(1/72 インチ)を使用します
- 原点(0,0)はページの左下隅です
- X は右方向、Y は上方向に増加します
対応画像形式
- PNG(透過に対応しているため推奨)
- JPG/JPEG
ファイルの取り扱い
- すべてのファイル操作では一時ファイルを使用し、処理後に自動的に削除します
- 入力を検証し、よくあるエラーを防ぎます
- 説明的なメッセージを含む適切なエラー処理を行います
依存関係
fastmcp:MCP サーバーの実装に使用する FastMCP フレームワークpypdf:PDF の読み書きライブラリreportlab:PDF の生成と画像の配置pillow:画像処理(reportlab の依存関係)
トラブルシューティング
よくある問題
-
「Module not found」エラー
# Make sure dependencies are installed uv pip install -r requirements.txt # Or with pip pip install -r requirements.txt -
MCP サーバーが Claude Desktop に表示されない
claude_desktop_config.jsonのパスが絶対パス(相対パスではない)であることを確認します- 設定を変更した後、Claude Desktop を再起動します
- Claude Desktop のログを確認します:
~/Library/Logs/Claude/mcp*.log(macOS)
-
「Command not found: uv」
- uv をインストールします:
curl -LsSf https://astral.sh/uv/install.sh | sh - または、通常の pip を使用します:
uv run pythonをpythonに置き換えます
- uv をインストールします:
-
権限エラー
# Make sure the script is executable chmod +x mcp_server.py -
PDF への署名に失敗する
- PDF と署名画像が有効であることを確認します
- 座標がページの境界内にあることを確認します
- まず
get_pdf_infoを使い、ページの寸法を確認します
ヘルプの利用
- よくある問題については GitHub Issues を確認します
- テストスクリプトを実行してインストールを確認します:
uv run python test_server.py - Claude Desktop 固有の問題については、MCP troubleshooting guide を確認します
ライセンス
MIT ライセンス - このプロジェクトは、Charlie DeTar による元の signpdf プロジェクトと同じライセンスを採用しています。
元のプロジェクト
PDF 署名の中核機能は、Charlie DeTar による signpdf ユーティリティを基にしています。この MCP サーバーはその成果を拡張し、最新の AI 連携に対応する MCP 互換ツールを提供します。
貢献
- 提供されているテストスクリプトで変更をテストします
- すべての依存関係が適切に指定されていることを確認します
- 必要に応じてドキュメントを更新します
- 既存のコードスタイルとパターンに従います
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。