mcpField
H
heu-mcp

heu-mcp

本地服务
github.com/heulegal法律与政务19 周前更新

关于 heu-mcp

heu-mcp 将 MCP 客户端连接到 HEU Legal,用于管理电子签名文件和 PDF。它支持创建文件、发起签署、阅读合同、提取当事人信息和下载,并提供本地 stdio 与远程服务模式。

主要功能

  1. 01列出并查看文件和模板
  2. 02创建文件并发送签署
  3. 03阅读合同并提取当事人信息
  4. 04提醒签署人并取消请求
  5. 05下载已签 PDF 和审计资料包
  6. 06创建和管理 PDF 模板

适用场景

  1. 01从模板发送合同以供签署
  2. 02上传 PDF 并请求签名
  3. 03查看合同文本和当事人信息
  4. 04下载已签记录和审计轨迹

MCP 相关

它将 HEU Legal 文件和 PDF 操作作为 MCP 工具提供。支持本地 stdio 接入,也支持采用 OAuth 2.1 身份验证的远程 Streamable HTTP 服务。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"lucav21-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.5.2

工具

28

收录的工具列表 · 更新于 2 周前

此工具无需参数。

详细介绍

HEU Legal MCP 服务

PyPI Python License: MIT MCP Registry

MCP 服务(Model Context Protocol),用于将 HEU Legal API 接入 Claude 和任何 MCP 客户端。可在对话中直接管理电子签名文档的整个生命周期(在 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
🪪 提取各方信息(增值税号、税号、SDI、PEC、地址)extract_heu_document_parties, extract_pdf_document_parties
💾 下载已签署的 PDFdownload_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

两类对象:

  • HEU 原生文档 — 使用平台内置编辑器创建(UUID 格式的 ID,例如 5135e7b2-196b-...)。
  • 已上传的 PDF — 带有签署人和已放置签名字段的 PDF 文件(数字 ID,例如 68)。

要求

  • Python ≥ 3.10
  • HEU Legal API 密钥 — 在 UI 中:Profile → API Keys → Generate API Key(需要 Enterprise 订阅;最多可启用 2 个密钥)
  • 对于基于模板的工作流:平台上至少有一个已创建的模板(也可以通过 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),本项目还包含一个远程服务,可通过 HTTPS 提供相同的 28 个工具,用户无需安装任何内容即可连接:只需在 OAuth 流程中输入一次自己的 HEU API 密钥。

特性:

  • 使用 Streamable HTTP 传输,通过 OAuth 2.1 和 PKCE S256 进行身份验证,并支持动态客户端注册和客户端 ID 元数据文档
  • 多用户:每个连接均使用对应用户的 API 密钥;密钥经过加密(Fernet)存储,绝不会以明文形式保存在数据库中
  • 刷新令牌支持轮换,如检测到可疑的重复使用,会自动撤销会话
  • 网络 I/O 异步执行,PDF 解析在 threadpool 上运行:一个缓慢的请求不会阻塞其他用户
本地启动
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 key 的 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 端点(需要 bearer 令牌)
/.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 key(必需)—
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 — 均为可选项列出文档/模板及其状态、成员和签名。⚠️ 两个日期必须始终一起传入,否则 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 次(超出时返回 429 和 Retry-After)
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当事方数据:合并已登记的签署人信息与从文本中提取的税号、增值税号、SDI 唯一代码、电子邮件、PEC、出生地点和日期、地址、邮政编码。匹配模式针对意大利合同优化
download_heu_document_pdfdocument_id、layout(UI 代码:100、200-204、210-214、220-224、230-234)、has_index、has_footer、output_path生成 PDF 并保存到磁盘;返回文件路径
📎 已上传的 PDF
工具参数功能
list_pdf_documentstype(必填:document/template)、sort列出 PDF 及其状态(to_sign/in_progress/signed)、签名类型(FES/FEA)和签署人
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_id提醒对方签署 PDF
read_pdf_documentdocument_id、pages提取 PDF 文本(包括已签署的文本)并在对话中返回
extract_pdf_document_partiesdocument_id、pages、include_text获取已上传 PDF 中各方的信息(同上)
download_pdf_documentdocument_id、output_path下载 PDF — 如有已签署版本则下载该版本 — 并返回路径
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_lines查找 PDF 中文本的坐标(以 % 为单位,原点在左下角——与占位符使用相同的坐标系统)。此工具可让 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 与字段关联。
  • API 会拒绝旋转过的 PDF(/Rotate 90/180/270)。

典型工作流

0. “智能”发起签署:AI 自动映射字段

“获取 /Users/me/Desktop/Contratto.pdf,找出各方需要签署的位置,然后发送给 [email protected] 和 [email protected]。”

幕后流程:

  1. locate_pdf_text 分析 PDF 并找到锚点:带有“客户签名”/“供应商签名”字样(或各方名称)的行及其精确的百分比坐标。
  2. Claude 提出映射方案:“我会把客户签名字段放在第 4 页‘客户签名’标签上方(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’。”

Claude 使用 create_pdf_document_from_upload → 文档创建完成,Mario 随即会收到邮件。然后:

“Mario 签了吗?” → get_pdf_document “提醒他” → prompt_pdf_document_signature “签好了,把完整文件包下载给我” → download_pdf_bundle

2. 使用模板处理重复性合同

“根据 Contratto-tipo.pdf 创建一个模板,包含两个签署人:客户和供应商。客户的签名字段放在第 3 页底部。” → create_pdf_template “给我看看预览,检查一下位置” → preview_pdf_template “现在用它把合同发给 ACME srl” → create_pdf_document

3. 文档分析(AI 阅读合同)

“总结合同 abc-123,并告诉我合同期限和解约条件” → read_heu_document “比较合同 X 和 Y 中的责任条款” → 两次调用 read_heu_document “提取各方信息:公司名称、P.IVA、SDI、PEC” → extract_heu_document_parties

各方信息提取功能旨在与意大利电子发票工作流集成:从合同中提取的 SDI 唯一代码和 P.IVA 可直接用于管理系统中的客户资料。

4. 监控与管理

“哪些 7 月的文档还没有全部签署?” → 调用 list_heu_documents 并指定日期及 have_editors_signed=false “取消 PDF 42 的签署请求,我们发错人了” → cancel_pdf_document


需要了解的行为和限制

项目限制 / 行为
API 速率限制300 次请求 / 5 分钟(响应中包含 X-RateLimit-* 标头;超过阈值时返回 429,并附带 Retry-After)
签名提醒每份文档每 24 小时 1 次
PDF 上传最大 5 MB,application/pdf,不能旋转
文本读取未指定 pages 时最多 100 页(载荷会标记 truncated: true);未经 OCR 处理的扫描版 PDF 没有可提取的文本
FEA 签名每位签署人都需要有可用的 FEA 积分(不足时返回 422)
带日期的 list_heu_documents始终同时传入 created_from 和 created_to
取消 PDF仅在没有签名活动时可执行(否则返回 409)
下载二进制文件会保存到磁盘(HEU_DOWNLOAD_DIR),绝不会通过 MCP 通道传输

文档状态

状态含义
to_sign等待签名
in_progress正在准备 / 修改
in_review正在审核
completed流程已完成(未签名)
signed已完成签名

安全

  • API key 仅从环境变量读取:绝不写入代码、响应或日志。
  • 具有外部影响的工具(✋)均要求始终征得用户明确确认。
  • 下载的文件保留在本地文件系统中。

开发

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。

链接

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。