mcpField
H

heu-mcp

ローカル
github.com/lucavisconti211-debug法務・行政19 週間前に更新

heu-mcp について

heu-mcpは、ClaudeなどのMCPクライアントをHEU Legal APIに接続し、電子署名文書やPDFを管理します。文書・テンプレートの操作、本文や当事者情報の抽出、署名リマインダー、ダウンロードに対応し、OAuthベースのリモートモードも備えています。

主な機能

  1. 01HEU文書とPDFの一覧表示と詳細確認
  2. 02テンプレートやアップロードから署名依頼を作成
  3. 03文書本文と当事者情報の抽出
  4. 04署名リマインダーの送信と依頼の取消
  5. 05署名済みPDFと監査記録のダウンロード
  6. 06再利用可能なPDFテンプレートの作成と管理

活用シーン

  1. 01電子署名用の契約書を準備して送信
  2. 02契約本文の確認と当事者情報の抽出
  3. 03署名済みPDFと法的監査記録の取得

MCP 対応

HEU Legalの文書・PDF操作に対応する28個のツールをMCPクライアントに提供します。ローカルstdioと、OAuth 2.1を用いるリモートStreamable HTTPサーバーに対応しています。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"lucavisconti211-debug-heu": {
"command": "uvx",
"args": [
"heu-mcp"
],
"env": {
"HEU_API_KEY": "<HEU_API_KEY>",
"HEU_BASE_URL": "<HEU_BASE_URL>",
"HEU_DOWNLOAD_DIR": "<HEU_DOWNLOAD_DIR>"
}
}
}
}
起動コマンドuvx heu-mcp
設定が必要な環境変数
HEU_API_KEYシークレットHEU Legal API key (Profile > API Keys, Enterprise plan required)
HEU_BASE_URLAPI base URL. Default: https://api.heulegal.com/v1
HEU_DOWNLOAD_DIRDirectory where downloaded PDFs are saved. Default: /tmp

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypiheu-mcp0.1.2

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

HEU Legal MCP Server

PyPI Python License: MIT MCP Registry

HEU Legal API を Claude およびあらゆる MCP クライアントに接続する MCP サーバー(Model Context Protocol)です。電子署名(180 以上の国で有効)を使ったドキュメントのライフサイクル全体を、会話の中から直接管理できます。ドキュメントの作成から署名依頼の送信、リマインダーの送信、法的書類一式のダウンロードまで対応します。


できること

したいことサーバーで使用するツール
📄 ドキュメントとテンプレートを確認するlist_heu_documents, list_pdf_documents
✍️ テンプレートから契約書を作成して署名に送るcreate_heu_document, create_pdf_document
🚀 プラットフォームを使わず、パソコン上の PDF を署名に送るcreate_pdf_document_from_upload
🤖 AI に署名フィールドをマッピングさせる(PDF を分析し、フィールドを配置して送信)locate_pdf_text + create_pdf_document_from_upload
🔔 まだ署名していない相手にリマインダーを送るprompt_heu_document_signature, prompt_pdf_document_signature
👀 ダウンロードせずに、AI に契約書を 読ませる(要約、条項、比較)read_heu_document, read_pdf_document
🪪 当事者のデータ(VAT 番号、納税者番号、SDI、PEC、住所)を抽出するextract_heu_document_parties, extract_pdf_document_parties
💾 署名済み PDF をダウンロードするdownload_heu_document_pdf, download_pdf_document
⚖️ 法的書類一式(ドキュメント + 監査証跡 + FES 成果物)をダウンロードするdownload_pdf_bundle, download_pdf_audit_trail
🧩 API 経由で再利用可能な PDF テンプレートを作成・変更するcreate_pdf_template, update_pdf_template, preview_pdf_template, delete_pdf_template
❌ 誤って送信した署名依頼を取り消すcancel_pdf_document
🩺 API に接続できることを確認するget_heu_health

オブジェクトは 2 種類あります。

  • HEU ネイティブドキュメント — プラットフォームのアプリ内エディターで作成したもの(UUID 形式の ID、例:5135e7b2-196b-...)。
  • アップロード済み PDF — 署名者と署名フィールドを配置した PDF ファイル(数値 ID、例:68)。

必要条件

  • Python ≥ 3.10
  • HEU Legal API キー — UI で Profile → API Keys → Generate API Key(Enterprise サブスクリプションが必要。アクティブなキーは最大 2 個)
  • テンプレートを使う場合:プラットフォーム上でテンプレートを少なくとも 1 つ作成済みであること(または create_pdf_template で API 経由で作成)

インストール

PyPI から:

pip install heu-mcp

ソースから:

git clone https://github.com/heulegal/heu-mcp.git
cd heu-mcp
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt

設定

Claude Desktop

~/Library/Application Support/Claude/claude_desktop_config.json(macOS)または %APPDATA%\Claude\claude_desktop_config.json(Windows)を編集します。

{
  "mcpServers": {
    "heu": {
      "command": "heu-mcp",
      "args": [],
      "env": {
        "HEU_API_KEY": "la_tua_api_key_qui"
      }
    }
  }
}

venv を使ってソースからインストールした場合:

{
  "mcpServers": {
    "heu": {
      "command": "/path/assoluto/heu-mcp/venv/bin/python",
      "args": ["/path/assoluto/heu-mcp/server.py"],
      "env": {
        "HEU_API_KEY": "la_tua_api_key_qui"
      }
    }
  }
}

変更後、Claude Desktop を再起動します。

Claude Code(CLI)
claude mcp add heu heu-mcp -e HEU_API_KEY=la_tua_api_key_qui

リモートサーバー(マルチユーザー)

上記で説明したローカルモード(stdio)に加えて、プロジェクトには同じ 28 個のツールを HTTPS 経由で公開するリモートサーバーが含まれており、ユーザーは何もインストールせずに接続できます。OAuth フローで自分の HEU API キーを一度入力するだけです。

特徴:

  • Streamable HTTP トランスポート、PKCE S256 による OAuth 2.1 認証、Dynamic Client Registration、Client ID Metadata Document
  • マルチユーザー:各接続でユーザー自身の API キーを使用します。API キーは暗号化(Fernet)して保存され、データベース内に平文で保存されることはありません
  • リフレッシュトークンのローテーションと、不審な再利用が発生した場合のセッションの自動失効
  • ネットワーク I/O は非同期、PDF の解析はスレッドプールで実行するため、時間のかかるリクエストがほかのユーザーをブロックしません
ローカルでの起動
pip install -e ".[remote]"
export HEU_MCP_SECRET_KEY="$(python -c 'from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())')"
export PUBLIC_URL="http://localhost:8080"
export HEU_MCP_DB="./heu-mcp.db"
heu-mcp-remote
Fly.io へのデプロイ
fly launch --no-deploy
fly volumes create heu_data --size 1
fly secrets set HEU_MCP_SECRET_KEY="$(python -c 'from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())')"
fly secrets set PUBLIC_URL="https://<nome-app>.fly.dev"
fly deploy
リモートサーバーの環境変数
変数説明デフォルト
HEU_MCP_SECRET_KEYユーザーの API キーを暗号化する Fernet キー(必須)—
PUBLIC_URLサービスの公開 URL。末尾にスラッシュを付けないでください(本番環境では必須)http://localhost:8080
MCP_PATHMCP エンドポイントのパス/mcp
HEU_MCP_DBSQLite データベースのパス/data/heu-mcp.db
ACCESS_TOKEN_TTL / REFRESH_TOKEN_TTLトークンの有効期間(秒)1 時間 / 60 日
公開エンドポイント
エンドポイント用途
/mcpMCP エンドポイント(ベアラートークンが必要)
/.well-known/oauth-protected-resource保護されたリソースのメタデータ(RFC 9728)
/.well-known/oauth-authorization-server認可サーバーのメタデータ(RFC 8414)
/register · /authorize · /tokenOAuth 2.1 フロー
/healthzライブネスプローブ
環境変数
変数説明デフォルト
HEU_API_KEYHEU Legal API キー(必須)—
HEU_BASE_URLAPI のベース URLhttps://api.heulegal.com/v1
HEU_DOWNLOAD_DIRダウンロードしたファイルの保存先フォルダー/tmp

ツールの完全なリファレンス(28)

🩺 ヘルス
ツールパラメーター戻り値
get_heu_health—API が稼働中の場合、{ message: "ok", status: 200 }
📄 HEU ネイティブ文書
ツールパラメーター機能
list_heu_documentstype(document/template)、sort(asc/desc)、created_from + created_to(ISO 8601)、have_editors_signed — すべて任意ステータス、メンバー、署名を含む文書/テンプレートの一覧を取得します。⚠️ 2 つの日付は必ずセットで指定してください。そうしないと API が不完全な結果を返す場合があります
get_heu_documentdocument_id名前、ステータス(to_sign/in_progress/in_review/completed/signed)、オーナー、編集者、has_signed と signed_at を含むメンバー、タグなどの詳細情報を取得します
list_heu_document_placeholdersdocument_idテンプレートのテキスト内で置換可能なプレースホルダーキーの一覧を取得します
create_heu_document ✋source_document_id、email_subject、email_text、email_to(リスト)、document_name、document_type、placeholders(キー→値のマップ)テンプレートから文書を作成し、プレースホルダーを置換して、メールで宛先に共有します
prompt_heu_document_signature ✋document_id署名リマインダーを送信します。制限:文書ごとに 24 時間に 1 回まで(上限を超えると Retry-After を含む 429 を返します)
read_heu_documentdocument_id、pages(例:"1-3"、"5"、"1,3,5-7")、layout、has_index、has_footer文書のテキストを抽出して会話に返します。ディスクには何も保存しません。pages を省略した場合の最大ページ数は 100 です
extract_heu_document_partiesdocument_id、pages、include_text当事者のデータ:登録済みの署名者情報と、テキストから抽出した納税者番号、VAT 番号、SDI 一意コード、メールアドレス、PEC、出生地・生年月日、住所、郵便番号を組み合わせます。イタリアの契約書に最適化されたパターンを使用します
download_heu_document_pdfdocument_id、layout(UI コード:100、200-204、210-214、220-224、230-234)、has_index、has_footer、output_pathPDF を生成してディスクに保存し、パスを返します
📎 アップロード済み PDF
ツールパラメーター機能
list_pdf_documentstype(必須:document/template)、sortステータス(to_sign/in_progress/signed)、署名方式(FES/FEA)、署名者を含む PDF の一覧を表示します
get_pdf_documentdocument_id詳細:名前、ステータス、signature_type、日付、has_read/has_signed を含む署名者
list_pdf_document_signersdocument_idPDF の署名者:ID、名前、メールアドレス、閲覧済みか、署名済みか
list_pdf_document_signer_placeholdersdocument_id、signer_id特定の署名者に割り当てられたフィールド(署名/テキスト/チェックボックス)。位置と入力状況も表示します
list_pdf_document_placeholdersdocument_idPDF のすべてのフィールド
create_pdf_document ✋source_document_id、email_subject、email_body、signers(source_id、full_name、email を含む)、document_name、signature_type(fes/fea)、事前入力可能な placeholders既存のテンプレートから署名可能な PDF を作成し、招待を送信します。fea の場合、十分なクレジットが必要です(不足している場合は 422)
prompt_pdf_document_signature ✋document_idPDF の署名をリマインドします
read_pdf_documentdocument_id、pagesPDF のテキストを抽出し(署名済みのテキストを含む)、会話に返します
extract_pdf_document_partiesdocument_id、pages、include_textアップロード済み PDF の当事者情報(上記と同様)
download_pdf_documentdocument_id、output_pathPDF をダウンロードします — 署名済みバージョンがあればそれをダウンロード — パスを返します
download_pdf_audit_traildocument_id、output_path監査証跡をダウンロードします。誰がいつ閲覧/署名したかを記録した PDF です
download_pdf_bundledocument_id、output_path法的書類一式の ZIPをダウンロードします。署名済み PDF、監査証跡、FES 成果物が含まれます。証拠価値のあるアーカイブに最適です
cancel_pdf_document ✋document_id送信済みの署名依頼を取り消します。書類は一覧から消え、署名リンクは無効になります。すでに誰かが署名している場合は 409 で拒否されます
🧩 PDF テンプレート(API による管理)
ツールパラメーター機能
create_pdf_template ✋file_path(ローカルの PDF ≤ 5 MB)、document_name、signers(source_id、full_name)、placeholders(種類、位置 %、ページ)コンピューターから PDF をアップロードして、再利用可能なテンプレートを作成します。返された ID は create_pdf_document の source_document_id として使用します
create_pdf_document_from_upload ✋file_path、document_name、email_subject、email_body、signers(メールアドレスを含む)、placeholders、signature_type一括で行うショートカット:テンプレートを先に作成せずに PDF をアップロードし、そのまま署名依頼を送信します。書類のステータスは to_sign になり、署名者にはすぐにメールが届きます
locate_pdf_textfile_path または document_id、search_terms(デフォルト:署名のキーワード)、pages、include_all_linesPDF 内のテキストの座標を検索します(% 表記、原点は左下 — プレースホルダーと同じ方式)。AI がフィールドを自動で配置できるツールです。「署名」、当事者の名前、その他の目印を検索し、それぞれのページと位置を取得します
preview_pdf_templatedocument_id、output_path注釈付きプレビューをダウンロードします。各フィールドは種類と署名者のラベル付きの枠で表示されます。送信前に位置を確認できます
update_pdf_template ✋document_id、signers(置き換え用の完全なセット)、placeholders(同様。[] ですべて削除)、document_nameテンプレートの署名者とフィールドを一括置換します(ID は変わりません)。所有者のみ実行できます
delete_pdf_template ✋document_idすべての一覧からテンプレートを削除(非表示に)します

✋ = 外部への影響(作成、メール送信、削除)があるツールです。Claude は実行前に必ず確認を求めます。

プレースホルダーの配置方法
  • position_x / position_y:ページに対するパーセンテージ(0~100、両端を除く)、原点は左下(アプリのエディターと同じです)。
  • page_number:1から始まります。
  • 種類:signature、initials、text(text_labelが必要です)、checkbox_optional、checkbox_required。
  • 署名者とフィールドは、source_id → signer_source_idを使って関連付けます。
  • 回転したPDF(/Rotate 90/180/270)はAPIで拒否されます。

典型的なワークフロー

0. 「スマート」な署名依頼:AIがフィールドを自動でマッピング

「/Users/me/Desktop/Contratto.pdfを開いて、各当事者が署名する場所を見つけて、[email protected]と[email protected]に送ってください。」

内部では次の処理が行われます。

  1. **locate_pdf_text**がPDFを分析し、アンカーを見つけます。「Firma del Cliente」/「Firma del Fornitore」の行(または当事者の名前)と、その正確なパーセンテージ座標です。
  2. Claudeがマッピングを提案します。「4ページ目の『Firma del Cliente』ラベルの上(x 17%、y 14%)に顧客の署名フィールドを配置し、供給元のフィールドをその隣(x 50%、y 14%)に配置します。よろしいですか?」
  3. 確認後、**create_pdf_document_from_upload**が、プレースホルダーを配置したPDFをアップロードし、署名依頼メールを送信します。
  4. (任意)テンプレートを使った場合は、**preview_pdf_template**で視覚的に確認できます。

locate_pdf_textが返す座標は、すでにHEUのプレースホルダー座標系(パーセンテージ、原点は左下)になっています。変換は不要です。複雑なレイアウトの場合は、include_all_lines=trueを指定してページ全体のマップを取得するか、特定の語句(search_terms=["Il Committente", "Il Prestatore"])を検索できます。

⚠️ 制限事項:テキストを含むPDFで動作します。OCR処理されていないスキャンには抽出可能なテキストがないため、その場合は位置を手動で指定してください。

1. コンピューター上のPDFを署名依頼に送信する(すべてチャット経由)

「/Users/me/Desktop/NDA.pdfを開いて、Mario Rossi([email protected])に署名依頼を送ってください。最後のページの右下に署名フィールドを配置し、メールの件名は『NDA da firmare』にしてください。」

Claudeがcreate_pdf_document_from_uploadを使い、文書を作成すると、Marioにすぐメールが届きます。その後は次のように操作できます。

「Marioは署名しましたか?」 → get_pdf_document 「リマインダーを送って」 → prompt_pdf_document_signature 「署名済みです。書類一式をダウンロードしてください」 → download_pdf_bundle

2. テンプレートを使った定期的な契約

「Contratto-tipo.pdfから、署名者を顧客と供給元の2名にしたテンプレートを作成してください。顧客の署名欄は3ページ目の下部です。」 → create_pdf_template 「位置を確認するため、プレビューを表示してください」 → preview_pdf_template 「では、これを使ってACME srlに契約書を送ってください」 → create_pdf_document

3. 文書分析(AIが契約書を読み取る)

「契約書abc-123を要約して、期間と解約条件を教えてください」 → read_heu_document 「XとYの契約書の責任条項を比較してください」 → read_heu_documentを2回 「当事者の情報を抽出してください。会社名、P.IVA、SDI、PECです」 → extract_heu_document_parties

当事者情報の抽出は、イタリアの電子請求書ワークフローとの連携を想定しています。契約書から抽出した一意のSDIコードとP.IVAを、管理システムの取引先情報に直接反映できます。

4. モニタリングと管理

「7月の文書のうち、まだ全員が署名していないものはどれですか?」 → 日付とhave_editors_signed=falseを指定してlist_heu_documents 「PDF 42の署名依頼を取り消してください。誤った相手に送ってしまいました」 → cancel_pdf_document


把握しておくべき動作と制限事項

内容制限/動作
API レート制限300 リクエスト/5 分(レスポンスのヘッダー X-RateLimit-*。上限を超えると、Retry-After を含む 429 が返されます)
署名リマインダー文書ごとに 24 時間に 1 回
PDF のアップロード最大 5 MB、application/pdf、回転なし
テキストの読み取りpages が指定されていない場合、最大 100 ページ(ペイロードには truncated: true と示されます)。OCR がないスキャン済み PDF からは、抽出可能なテキストを取得できません
FEA 署名署名者ごとに利用可能な FEA クレジットが必要です(不足時は 422)
日付を指定した list_heu_documentscreated_from と created_to の両方を必ず渡してください
PDF の取り消し署名アクティビティがない場合のみ可能です(それ以外は 409)
ダウンロードバイナリはディスク(HEU_DOWNLOAD_DIR)に保存され、MCP チャネルを通じて送信されることはありません

文書の状態

状態意味
to_sign署名待ち
in_progress準備中/編集中
in_reviewレビュー中
completedフロー完了(未署名)
signed署名完了

セキュリティ

  • API キーは環境変数からのみ読み取られます。コード内、レスポンス、ログに含まれることはありません。
  • 外部に影響を及ぼすツール(✋)は、ユーザーに必ず明示的な確認を求めるよう設定されています。
  • ダウンロードしたファイルはローカルのファイルシステムに保存されます。

開発

git clone https://github.com/heulegal/heu-mcp.git
cd heu-mcp
python3 -m venv venv
source venv/bin/activate
pip install -e .

# Avvio manuale per debug
HEU_API_KEY=... python server.py

参照用の OpenAPI 仕様は https://api.heulegal.com/v1/specs/v1.yaml で公開されています(インタラクティブなドキュメント:https://api.heulegal.com/v1/docs)。

ライセンス

MIT — LICENSE を参照してください。

リンク

コメント

MCP は初めてですか?

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

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