Heu Mcp

io.github.lucavisconti211-debug由 GitHub 帳號 lucavisconti211-debug 發布v0.1.2更新於 Oct 24, 2026

HEU Legal e-signature MCP: manage HEU documents and PDFs, prompt signers, download PDFs.

概覽

AI 產生的概覽

面向 HEU Legal 電子簽章的本地 MCP 伺服器:在對話中列出、建立、讀取、發起簽署、催簽並下載 HEU 文件與 PDF。

可以做什麼
列出並檢視 HEU 原生文件與上傳的 PDF,包括簽署人、預留欄位與狀態,並用健康檢查工具確認 API 可用。從範本建立文件,或上傳本機 PDF 直接發起簽署,之後催簽或取消尚未被簽署的請求。在對話中讀取文件文字,並擷取當事人資料,如統一編號、稅號、SDI、PEC 與地址。將已簽署 PDF、稽核軌跡與完整法律卷宗 ZIP 下載到本機資料夾。管理可重複使用的 PDF 範本:建立、更新、預覽標註後的欄位位置、定位文字座標以及刪除。
適用情境
當你使用 HEU Legal 電子簽章流程,並希望從 MCP 用戶端操作時適用:送出合約或保密協議待簽、催促簽署人、摘要或比較合約、為義大利電子發票擷取當事人資料,或歸檔已簽署卷宗。
執行需求
需要 Python 3.10 或更新版本以及 PyPI 上的 heu-mcp 套件,以本機 stdio 程序執行。需要 HEU Legal API 金鑰,放在 HEU_API_KEY 中,且需 Enterprise 訂閱(最多 2 個有效金鑰)。可選 HEU_BASE_URL(預設指向 HEU API)與 HEU_DOWNLOAD_DIR(預設 /tmp)。範本流程需平台上至少有一個範本。需要連線至 HEU API 的網路存取。
安裝前請注意
HEU_API_KEY 中的 API 金鑰可存取你的 HEU 帳戶與文件,請勿放入共用設定。多個工具會對外產生影響:建立文件、寄送簽署郵件、更新或刪除範本、取消簽署請求以及寄送催簽提醒。FEA 簽署會依簽署人消耗 FEA 額度。下載的 PDF、稽核軌跡與卷宗會寫入本機下載資料夾。文件文字與當事人資料會傳送至 HEU API 並回到對話中。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Heu Mcp,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

HEU Legal MCP Server

[PyPI] [Python] [License: MIT] [MCP Registry]

MCP server (Model Context Protocol) che collega l'API HEU Legal a Claude e a qualsiasi client MCP. Gestisce l'intero ciclo di vita dei documenti con firma elettronica (valida in 180+ paesi) direttamente in conversazione: dalla creazione all'invio in firma, dal sollecito al download del fascicolo legale completo.


Cosa puoi fare

Voglio...Il server lo fa con...
📄 Vedere i miei documenti e templateslist_heu_documents, list_pdf_documents
✍️ Mandare un contratto in firma da un templatecreate_heu_document, create_pdf_document
🚀 Mandare in firma un PDF che ho sul computer, senza passare dalla piattaformacreate_pdf_document_from_upload
🤖 Far mappare i campi firma all'AI (analizza il PDF, posiziona i campi, invia)locate_pdf_text + create_pdf_document_from_upload
🔔 Sollecitare chi non ha ancora firmatoprompt_heu_document_signature, prompt_pdf_document_signature
👀 Far leggere un contratto all'AI (riassunti, clausole, confronti) senza scaricarloread_heu_document, read_pdf_document
🪪 Estrarre i dati delle parti (P.IVA, codice fiscale, SDI, PEC, indirizzi)extract_heu_document_parties, extract_pdf_document_parties
💾 Scaricare il PDF firmatodownload_heu_document_pdf, download_pdf_document
⚖️ Scaricare il fascicolo legale completo (documento + audit trail + artefatti FES)download_pdf_bundle, download_pdf_audit_trail
🧩 Creare/modificare templates PDF riutilizzabili via APIcreate_pdf_template, update_pdf_template, preview_pdf_template, delete_pdf_template
❌ Annullare una richiesta di firma inviata per errorecancel_pdf_document
🩺 Controllare che l'API sia raggiungibileget_heu_health

Due famiglie di oggetti:

  • Documenti nativi HEU — creati con l'editor in-app della piattaforma (ID a forma di UUID, es. 5135e7b2-196b-...).
  • PDF caricati — file PDF con firmatari e campi firma posizionati sopra (ID numerici, es. 68).

Requisiti

  • Python ≥ 3.10
  • API key HEU Legal — nella UI: Profile → API Keys → Generate API Key (richiede subscription Enterprise; massimo 2 chiavi attive)
  • Per i flussi da template: almeno un template creato sulla piattaforma (oppure crealo via API con create_pdf_template)

Installazione

Da PyPI:

bash
pip install heu-mcp

Da sorgenti:

bash
git clone https://github.com/heulegal/heu-mcp.gitcd heu-mcppython3 -m venv venvsource venv/bin/activatepip install -r requirements.txt

Configurazione

Claude Desktop

Modifica ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) o %APPDATA%\Claude\claude_desktop_config.json (Windows):

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

Se installato da sorgenti con venv:

json
{  "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"      }    }  }}

Riavvia Claude Desktop dopo la modifica.

Claude Code (CLI)

bash
claude mcp add heu heu-mcp -e HEU_API_KEY=la_tua_api_key_qui

Server remoto (multi-utente)

Oltre alla modalità locale (stdio) descritta sopra, il progetto include un server remoto che espone gli stessi 28 tool via HTTPS, così gli utenti si collegano senza installare nulla: inseriscono la propria API key HEU una volta, in un flusso OAuth.

Caratteristiche:

  • Transport Streamable HTTP, autenticazione OAuth 2.1 con PKCE S256, Dynamic Client Registration e Client ID Metadata Document
  • Multi-utente: ogni connessione usa la API key del proprio utente, conservata cifrata (Fernet) e mai in chiaro nel database
  • Refresh token con rotazione e revoca automatica della sessione in caso di riuso sospetto
  • I/O di rete asincrono e parsing PDF su threadpool: una richiesta lenta non blocca gli altri utenti

Avvio locale

bash
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

Deploy su Fly.io

bash
fly launch --no-deployfly volumes create heu_data --size 1fly 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

Variabili d'ambiente del server remoto

VariabileDescrizioneDefault
HEU_MCP_SECRET_KEYChiave Fernet per cifrare le API key degli utenti (richiesta)—
PUBLIC_URLURL pubblico del servizio, senza slash finale (richiesta in produzione)http://localhost:8080
MCP_PATHPath dell'endpoint MCP/mcp
HEU_MCP_DBPercorso del database SQLite/data/heu-mcp.db
ACCESS_TOKEN_TTL / REFRESH_TOKEN_TTLDurata token in secondi1 ora / 60 giorni

Endpoint esposti

EndpointScopo
/mcpEndpoint MCP (richiede bearer token)
/.well-known/oauth-protected-resourceMetadati risorsa protetta (RFC 9728)
/.well-known/oauth-authorization-serverMetadati authorization server (RFC 8414)
/register · /authorize · /tokenFlusso OAuth 2.1
/healthzLiveness probe

Variabili d'ambiente

VariabileDescrizioneDefault
HEU_API_KEYAPI key HEU Legal (richiesta)—
HEU_BASE_URLURL base dell'APIhttps://api.heulegal.com/v1
HEU_DOWNLOAD_DIRCartella dove salvare i file scaricati/tmp

Riferimento completo dei tool (28)

🩺 Health

ToolParametriCosa ritorna
get_heu_health—{ message: "ok", status: 200 } se l'API è operativa

📄 Documenti nativi HEU

ToolParametriCosa fa
list_heu_documentstype (document/template), sort (asc/desc), created_from + created_to (ISO 8601), have_editors_signed — tutti opzionaliLista documenti/template con stato, membri, firme. ⚠️ Le due date vanno passate sempre insieme, altrimenti l'API può restituire risultati incompleti
get_heu_documentdocument_idDettaglio completo: nome, stato (to_sign/in_progress/in_review/completed/signed), owner, editors, members con has_signed e signed_at, tags
list_heu_document_placeholdersdocument_idElenco delle chiavi placeholder sostituibili nel testo del template
create_heu_document ✋source_document_id, email_subject, email_text, email_to (lista), document_name, document_type, placeholders (mappa chiave→valore)Crea un documento da un template, sostituisce i placeholder e lo condivide via email ai destinatari
prompt_heu_document_signature ✋document_idInvia il sollecito di firma. Limite: 1 ogni 24h per documento (429 con Retry-After se superato)
read_heu_documentdocument_id, pages (es. "1-3", "5", "1,3,5-7"), layout, has_index, has_footerEstrae il testo del documento e lo restituisce in conversazione, senza salvare nulla su disco. Max 100 pagine se pages è omesso
extract_heu_document_partiesdocument_id, pages, include_textDati delle parti: combina i firmatari registrati con l'estrazione dal testo di codici fiscali, P.IVA, codice univoco SDI, email, PEC, luogo+data di nascita, indirizzi, CAP. Pattern ottimizzati per contratti italiani
download_heu_document_pdfdocument_id, layout (codici UI: 100, 200-204, 210-214, 220-224, 230-234), has_index, has_footer, output_pathGenera e salva il PDF su disco; ritorna il path

📎 PDF caricati

ToolParametriCosa fa
list_pdf_documentstype (richiesto: document/template), sortLista PDF con stato (to_sign/in_progress/signed), tipo firma (FES/FEA), firmatari
get_pdf_documentdocument_idDettaglio: nome, stato, signature_type, date, firmatari con has_read/has_signed
list_pdf_document_signersdocument_idFirmatari del PDF: id, nome, email, ha letto, ha firmato
list_pdf_document_signer_placeholdersdocument_id, signer_idCampi (firma/testo/checkbox) assegnati a un firmatario specifico, con posizione e stato di compilazione
list_pdf_document_placeholdersdocument_idTutti i campi del PDF
create_pdf_document ✋source_document_id, email_subject, email_body, signers (con source_id, full_name, email), document_name, signature_type (fes/fea), placeholders precompilabiliCrea un PDF firmabile da un template esistente e invia gli inviti. Con fea servono crediti sufficienti (422 altrimenti)
prompt_pdf_document_signature ✋document_idSollecito di firma per il PDF
read_pdf_documentdocument_id, pagesEstrae il testo del PDF (incluso quello firmato) e lo restituisce in conversazione
extract_pdf_document_partiesdocument_id, pages, include_textDati delle parti (come sopra) per i PDF caricati
download_pdf_documentdocument_id, output_pathScarica il PDF — versione firmata se disponibile — e ritorna il path
download_pdf_audit_traildocument_id, output_pathScarica l'audit trail: il registro PDF di chi ha letto/firmato e quando
download_pdf_bundledocument_id, output_pathScarica lo ZIP del fascicolo legale: PDF firmato + audit trail + artefatti FES. Ideale per archiviazione a valore probatorio
cancel_pdf_document ✋document_idAnnulla una richiesta di firma inviata: il documento sparisce dagli elenchi e i link di firma vengono invalidati. Rifiutato con 409 se qualcuno ha già firmato

🧩 Template PDF (gestione via API)

ToolParametriCosa fa
create_pdf_template ✋file_path (PDF locale ≤ 5 MB), document_name, signers (source_id, full_name), placeholders (tipo, posizione %, pagina)Crea un template riutilizzabile caricando un PDF dal computer. L'ID restituito si usa come source_document_id in create_pdf_document
create_pdf_document_from_upload ✋file_path, document_name, email_subject, email_body, signers (con email), placeholders, signature_typeScorciatoia completa: carica un PDF e lo manda subito in firma, senza creare prima il template. Il documento nasce to_sign e i firmatari ricevono l'email immediatamente
locate_pdf_textfile_path oppure document_id, search_terms (default: parole chiave firma), pages, include_all_linesTrova le coordinate di testi nel PDF (in %, origine in basso a sinistra — lo stesso sistema dei placeholder). È il tool che permette all'AI di posizionare i campi da sola: cerca "Firma", i nomi delle parti o qualsiasi ancora, e ottiene pagina + posizione di ognuna
preview_pdf_templatedocument_id, output_pathScarica un'anteprima annotata: ogni campo è disegnato come riquadro etichettato con tipo e firmatario. Per verificare le posizioni prima dell'invio
update_pdf_template ✋document_id, signers (set completo sostitutivo), placeholders (idem; [] li cancella tutti), document_nameSostituzione integrale di firmatari e campi di un template (l'ID resta invariato). Solo il proprietario
delete_pdf_template ✋document_idElimina (nasconde) il template da tutti gli elenchi

✋ = il tool ha effetti verso l'esterno (crea, invia email, elimina): Claude chiede sempre conferma prima di eseguirlo.

Come si posizionano i placeholder
  • position_x / position_y: percentuale della pagina (0–100 esclusi), origine in basso a sinistra (come nell'editor dell'app).
  • page_number: parte da 1.
  • Tipi: signature, initials, text (richiede text_label), checkbox_optional, checkbox_required.
  • I firmatari si collegano ai campi tramite source_id → signer_source_id.
  • I PDF ruotati (/Rotate 90/180/270) vengono rifiutati dall'API.

Flussi di lavoro tipici

0. Invio in firma "intelligente": l'AI mappa i campi da sola

"Prendi /Users/me/Desktop/Contratto.pdf, trova dove devono firmare le parti e mandalo a [email protected] e [email protected]."

Cosa succede dietro le quinte:

  1. locate_pdf_text analizza il PDF e trova le ancore: le righe "Firma del Cliente" / "Firma del Fornitore" (o i nomi delle parti) con le loro coordinate esatte in percentuale.
  2. Claude propone la mappatura: "Metto il campo firma del cliente a pagina 4, sopra l'etichetta 'Firma del Cliente' (x 17%, y 14%), e quello del fornitore accanto (x 50%, y 14%). Confermi?"
  3. Alla conferma, create_pdf_document_from_upload carica il PDF con i placeholder posizionati e invia le email di firma.
  4. (Opzionale) preview_pdf_template per un controllo visivo se si è passati da un template.

Le coordinate restituite da locate_pdf_text sono già nel sistema dei placeholder HEU (percentuale, origine in basso a sinistra): nessuna conversione necessaria. Per layout complessi si può chiedere l'intera mappa della pagina con include_all_lines=true, o cercare termini specifici (search_terms=["Il Committente", "Il Prestatore"]).

⚠️ Limite: funziona sui PDF con testo. Le scansioni senza OCR non hanno testo estraibile — in quel caso indicare le posizioni manualmente.

1. Mandare in firma un PDF dal computer (tutto via chat)

"Prendi /Users/me/Desktop/NDA.pdf e mandalo in firma a Mario Rossi ([email protected]). Campo firma in basso a destra dell'ultima pagina, oggetto email 'NDA da firmare'."

Claude usa create_pdf_document_from_upload → il documento è creato e Mario riceve subito l'email. Poi:

"Mario ha firmato?" → get_pdf_document "Sollecitalo" → prompt_pdf_document_signature "È firmato, scaricami il fascicolo completo" → download_pdf_bundle

2. Contratti ricorrenti con template

"Crea un template dal file Contratto-tipo.pdf con due firmatari: cliente e fornitore. Firma del cliente a pagina 3 in basso." → create_pdf_template "Fammi vedere l'anteprima per controllare le posizioni" → preview_pdf_template "Ora usalo per mandare il contratto ad ACME srl" → create_pdf_document

3. Analisi documentale (l'AI legge i contratti)

"Riassumi il contratto abc-123 e dimmi durata e condizioni di recesso" → read_heu_document "Confronta le clausole di responsabilità dei contratti X e Y" → due read_heu_document "Estrai i dati delle parti: ragione sociale, P.IVA, SDI, PEC" → extract_heu_document_parties

L'estrazione parti è pensata per l'integrazione con flussi di fatturazione elettronica italiana: il codice univoco SDI e la P.IVA estratti dal contratto possono alimentare direttamente l'anagrafica del gestionale.

4. Monitoraggio e amministrazione

"Quali documenti di luglio non sono ancora stati firmati da tutti?" → list_heu_documents con date + have_editors_signed=false "Annulla la richiesta di firma del PDF 42, l'abbiamo mandata alla persona sbagliata" → cancel_pdf_document


Comportamenti e limiti da conoscere

CosaLimite / comportamento
Rate limit API300 richieste / 5 minuti (header X-RateLimit-* nelle risposte; 429 con Retry-After oltre soglia)
Solleciti firma1 ogni 24 ore per documento
Upload PDFMax 5 MB, application/pdf, non ruotati
Lettura testoMax 100 pagine se pages non è specificato (il payload segnala truncated: true); PDF scansionati senza OCR non hanno testo estraibile
Firma FEARichiede crediti FEA disponibili per ogni firmatario (422 se insufficienti)
list_heu_documents con datePassare sempre entrambe created_from e created_to
Annullamento PDFPossibile solo senza attività di firma (409 altrimenti)
DownloadI binari vengono salvati su disco (HEU_DOWNLOAD_DIR), mai trasmessi nel canale MCP

Stati dei documenti

StatoSignificato
to_signIn attesa di firme
in_progressIn preparazione/modifica
in_reviewIn revisione
completedFlusso completato (non firmato)
signedCompletamente firmato

Sicurezza

  • L'API key è letta solo da variabile d'ambiente: mai nel codice, mai nelle risposte, mai nei log.
  • I tool con effetti esterni (✋) sono istruiti per richiedere sempre conferma esplicita all'utente.
  • I file scaricati restano sul filesystem locale.

Sviluppo

bash
git clone https://github.com/heulegal/heu-mcp.gitcd heu-mcppython3 -m venv venvsource venv/bin/activatepip install -e .
# Avvio manuale per debugHEU_API_KEY=... python server.py

La spec OpenAPI di riferimento è pubblicata su https://api.heulegal.com/v1/specs/v1.yaml (docs interattive: https://api.heulegal.com/v1/docs).

Licenza

MIT — vedi LICENSE.

Link

來源:README.md,提交 d4a94a7

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v0.1.2最新Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分