关于 Ead Factory Mcp
EAD Factory MCP Server 将 AI Agent 连接到 Garrigues 的证据、签名、通知和聊天 API,面向集成数字信任工作流的团队,并提供 npm、Docker 和 n8n 等分发方式。
主要功能
- 01证据管理工具
- 02签名请求工具
- 03通知和聊天工具
- 04OAuth2 客户端凭据认证
- 05通过 npm、Docker 和 n8n 分发
- 06内置 Claude Code 工作流命令
适用场景
- 01创建内部证据记录
- 02准备签名请求
- 03提交通知请求
- 04将 Agent 连接到 EAD Factory API
MCP 相关
该 MCP 服务向兼容 MCP 的客户端提供证据、签名、通知和聊天工具。它支持 stdio 和托管 HTTP 模式,使用 OAuth2 服务凭据,并可选配入站 Bearer 令牌验证。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y @g-digital/mcp-ead-factoryMCP_ALLOW_INSECURE_FILE_URLSet to "true" to allow plain http:// fileUrl downloads in evidence_create (default https-only). Private/internal addresses are rejected regardless (resolution-time check; see the documented DNS TOCTOU limitation in the hosted-deployment runbook).MCP_ALLOW_UNVERIFIED_BEAREREscape hatch for MCP_HTTP_PUBLIC=true WITHOUT inbound-token introspection: set to "true" ONLY when an upstream gateway already verifies Bearer tokens. The server logs a prominent warning and forwards tokens upstream unverified.MCP_ALLOWED_HOSTSComma-separated allowed Host headers. Empty = Host validation disabled (default). When set, requests with a Host outside the list are rejected.MCP_ALLOWED_ORIGINSComma-separated allowed browser Origins (DNS-rebinding defense). Empty = reject any request carrying an Origin header; non-browser clients (CLI/SDK) send no Origin and are always allowed. Use '*' to allow all.MCP_API_BASE_URLGateway ROOT URL (e.g. https://api.int.gcloudfactory.com) — each manager's path prefix is appended automatically; do NOT include a manager path hereMCP_API_BASE_URL_CHATFull base URL override for the chat manager, used as-is (default: https://api.gcloudfactory.com/chat-bot-manager)MCP_API_BASE_URL_EVIDENCEFull base URL override for the evidence manager, used as-is (default: https://api.gcloudfactory.com/digital-trust)MCP_API_BASE_URL_NOTIFICATIONFull base URL override for the notification manager, used as-is (default: https://api.gcloudfactory.com/notifications)MCP_API_BASE_URL_SIGNATUREFull base URL override for the signature manager, used as-is (default: https://api.gcloudfactory.com/signature-manager)MCP_HTTP_HOSTInterface the HTTP transport binds to. Default 127.0.0.1 (localhost only). Set 0.0.0.0 to expose on all interfaces (containers do this automatically).MCP_HTTP_MAX_BODY_BYTESMaximum accepted POST /mcp request-body size in bytes (default 16777216 = 16 MiB — sized so base64 file uploads within the documented tool limits fit). Oversized requests get a 413 JSON-RPC error before/while reading — closes a memory-exhaustion DoS vector in public deployments. Note: base64 file sources are capped by this limit BEFORE MCP_FILE_MAX_BYTES applies.MCP_HTTP_PUBLICSet to "true" for public/multi-tenant deployments. Activates Host validation and refuses to start unless (1) MCP_ALLOWED_ORIGINS or MCP_ALLOWED_HOSTS is set AND (2) inbound Bearer introspection is configured (MCP_SVC_INTROSPECT_URL + MCP_SVC_CLIENT_ID/SECRET) or MCP_ALLOW_UNVERIFIED_BEARER=true is set explicitly (fail-closed).MCP_SVC_CLIENT_IDOAuth2 client_credentials client ID.MCP_SVC_CLIENT_SECRET密钥OAuth2 client_credentials client secret. (See https://digitaltrust.gcloudfactory.com for credential acquisition.)MCP_SVC_INTROSPECT_URLRFC 7662 token introspection URL for inbound Bearer verification in HTTP mode. Opt-in, and required when MCP_HTTP_PUBLIC=true. Leave empty for stdio (local) use.MCP_SVC_SCOPEOptional OAuth2 scope for the service-account token request.MCP_SVC_TOKEN_URL密钥Token endpoint URL for the OAuth2 client_credentials flow.PORTHTTP port when running in hosted (HTTP) mode; ignored in stdio mode本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
64收录的工具列表 · 更新于 5 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| requestId | string | 是 | 通知请求的 UUID。通过 notification_request_create 获取。 |
| ids | array | 是 |
详细介绍
EAD Factory MCP 服务
用于 EAD Factory 的 MCP 服务:通过 AI Agent 提供合格证据、签名、通知和聊天功能。
快速开始
npx -y @g-digital/mcp-ead-factory
或者查看 ONBOARDING.md,了解分步设置指南(≤ 5 分钟)。
安装位置
此 MCP 由 g-digital MCP distribution pipeline 发布到所有主要的 MCP 分发渠道。请选择适合你技术栈的渠道:
| 渠道 | 安装命令 / URL |
|---|---|
| npm | npx -y @g-digital/mcp-ead-factory — npmjs.com/package/@g-digital/mcp-ead-factory |
| Docker Hub | docker pull gdigital/ead-factory:latest — hub.docker.com/r/gdigital/ead-factory |
| MCP Official Registry | 自动发现为 io.github.g-digital-by-Garrigues/ead-factory — registry.modelcontextprotocol.io |
| n8n 社区节点 | 在 n8n Settings → Community Nodes 中安装 @g-digital/n8n-nodes-ead-factory — npmjs.com/package/@g-digital/n8n-nodes-ead-factory |
| Smithery | smithery mcp install g-digital/ead-factory — smithery.ai/servers/g-digital/ead-factory |
所有渠道提供的 MCP 服务契约相同;无论选择哪种安装方式,以下工具和环境配置均适用。
安装
Claude Desktop
{
"mcpServers": {
"ead-factory": {
"args": [
"-y",
"@g-digital/mcp-ead-factory"
],
"command": "npx",
"env": {
"MCP_SVC_CLIENT_ID": "<SET_MCP_SVC_CLIENT_ID_HERE>",
"MCP_SVC_CLIENT_SECRET": "<PASTE_MCP_SVC_CLIENT_SECRET_HERE>",
"MCP_SVC_TOKEN_URL": "<SET_MCP_SVC_TOKEN_URL_HERE>"
}
}
}
}
Claude Code(CLI)
{
"mcpServers": {
"ead-factory": {
"args": [
"-y",
"@g-digital/mcp-ead-factory"
],
"command": "npx",
"env": {
"MCP_SVC_CLIENT_ID": "<SET_MCP_SVC_CLIENT_ID_HERE>",
"MCP_SVC_CLIENT_SECRET": "<PASTE_MCP_SVC_CLIENT_SECRET_HERE>",
"MCP_SVC_TOKEN_URL": "<SET_MCP_SVC_TOKEN_URL_HERE>"
}
}
}
}
Cursor
{
"mcpServers": {
"ead-factory": {
"args": [
"-y",
"@g-digital/mcp-ead-factory"
],
"command": "npx",
"env": {
"MCP_SVC_CLIENT_ID": "<SET_MCP_SVC_CLIENT_ID_HERE>",
"MCP_SVC_CLIENT_SECRET": "<PASTE_MCP_SVC_CLIENT_SECRET_HERE>",
"MCP_SVC_TOKEN_URL": "<SET_MCP_SVC_TOKEN_URL_HERE>"
}
}
}
}
Windsurf
{
"mcpServers": {
"ead-factory": {
"args": [
"-y",
"@g-digital/mcp-ead-factory"
],
"command": "npx",
"env": {
"MCP_SVC_CLIENT_ID": "<SET_MCP_SVC_CLIENT_ID_HERE>",
"MCP_SVC_CLIENT_SECRET": "<PASTE_MCP_SVC_CLIENT_SECRET_HERE>",
"MCP_SVC_TOKEN_URL": "<SET_MCP_SVC_TOKEN_URL_HERE>"
}
}
}
}
Cline
{
"mcpServers": {
"ead-factory": {
"args": [
"-y",
"@g-digital/mcp-ead-factory"
],
"command": "npx",
"env": {
"MCP_SVC_CLIENT_ID": "<SET_MCP_SVC_CLIENT_ID_HERE>",
"MCP_SVC_CLIENT_SECRET": "<PASTE_MCP_SVC_CLIENT_SECRET_HERE>",
"MCP_SVC_TOKEN_URL": "<SET_MCP_SVC_TOKEN_URL_HERE>"
}
}
}
}
VS Code
{
"servers": {
"ead-factory": {
"args": [
"-y",
"@g-digital/mcp-ead-factory"
],
"command": "npx",
"env": {
"MCP_SVC_CLIENT_ID": "<SET_MCP_SVC_CLIENT_ID_HERE>",
"MCP_SVC_CLIENT_SECRET": "<PASTE_MCP_SVC_CLIENT_SECRET_HERE>",
"MCP_SVC_TOKEN_URL": "<SET_MCP_SVC_TOKEN_URL_HERE>"
}
}
}
}
JetBrains
{
"mcpServers": {
"ead-factory": {
"args": [
"-y",
"@g-digital/mcp-ead-factory"
],
"command": "npx",
"env": {
"MCP_SVC_CLIENT_ID": "<SET_MCP_SVC_CLIENT_ID_HERE>",
"MCP_SVC_CLIENT_SECRET": "<PASTE_MCP_SVC_CLIENT_SECRET_HERE>",
"MCP_SVC_TOKEN_URL": "<SET_MCP_SVC_TOKEN_URL_HERE>"
}
}
}
}
Zed
{
"mcpServers": {
"ead-factory": {
"args": [
"-y",
"@g-digital/mcp-ead-factory"
],
"command": "npx",
"env": {
"MCP_SVC_CLIENT_ID": "<SET_MCP_SVC_CLIENT_ID_HERE>",
"MCP_SVC_CLIENT_SECRET": "<PASTE_MCP_SVC_CLIENT_SECRET_HERE>",
"MCP_SVC_TOKEN_URL": "<SET_MCP_SVC_TOKEN_URL_HERE>"
}
}
}
}
Claude Desktop / Claude Code
添加到 ~/.claude.json 或 claude_desktop_config.json:
{
"mcpServers": {
"ead-factory": {
"command": "npx",
"args": ["-y", "@g-digital/mcp-ead-factory"],
"env": {
"MCP_SVC_TOKEN_URL": "https://your-idp.example.com/oauth2/v1/token",
"MCP_SVC_CLIENT_ID": "your-client-id",
"MCP_SVC_CLIENT_SECRET": "your-client-secret"
}
}
}
}
Docker
docker run --rm -i \
-e MCP_SVC_TOKEN_URL=https://your-idp.example.com/oauth2/v1/token \
-e MCP_SVC_CLIENT_ID=your-client-id \
-e MCP_SVC_CLIENT_SECRET=your-client-secret \
gdigital/ead-factory:latest
环境变量
| 名称 | 必填 | 是否为密钥 | 描述 |
|---|---|---|---|
MCP_ALLOW_INSECURE_FILE_URL | 否 | 否 | 设置为 "true",允许在 evidence_create 中通过普通 http:// 下载 fileUrl(默认仅允许 https)。无论如何,都会拒绝私有/内部地址(在解析时检查;请参阅托管部署运行手册中关于 DNS TOCTOU 的说明)。 |
MCP_ALLOW_UNVERIFIED_BEARER | 否 | 否 | 当 MCP_HTTP_PUBLIC=true 且未进行入站令牌内省时的应急选项:仅当上游网关已验证 Bearer 令牌时,才设置为 "true"。服务会记录醒目的警告,并将未经验证的令牌转发到上游。 |
MCP_ALLOWED_HOSTS | 否 | 否 | 以逗号分隔的允许使用的 Host 标头。留空 = 禁用 Host 验证(默认)。设置后,Host 不在列表中的请求将被拒绝。 |
MCP_ALLOWED_ORIGINS | 否 | 否 | 以逗号分隔的允许使用的浏览器 Origin(防御 DNS 重绑定)。留空 = 拒绝所有携带 Origin 标头的请求;非浏览器客户端(CLI/SDK)不会发送 Origin,因此始终允许。使用 '*' 可允许所有来源。 |
MCP_API_BASE_URL | 否 | 否 | 网关根 URL(例如 https://api.int.gcloudfactory.com)——每个 manager 的路径前缀都会自动追加;此处切勿包含 manager 路径 |
MCP_API_BASE_URL_CHAT | 否 | 否 | chat manager 的完整基础 URL 覆盖值,按原样使用(默认值:https://api.gcloudfactory.com/chat-bot-manager) |
MCP_API_BASE_URL_EVIDENCE | 否 | 否 | evidence manager 的完整基础 URL 覆盖值,按原样使用(默认值:https://api.gcloudfactory.com/digital-trust) |
MCP_API_BASE_URL_NOTIFICATION | 否 | 否 | notification manager 的完整基础 URL 覆盖值,按原样使用(默认值:https://api.gcloudfactory.com/notifications) |
MCP_API_BASE_URL_SIGNATURE | 否 | 否 | signature manager 的完整基础 URL 覆盖值,按原样使用(默认值:https://api.gcloudfactory.com/signature-manager) |
MCP_HTTP_HOST | 否 | 否 | HTTP 传输绑定的接口。默认值为 127.0.0.1(仅限 localhost)。设置为 0.0.0.0 可在所有接口上公开服务(容器会自动这样设置)。 |
MCP_HTTP_MAX_BODY_BYTES | 否 | 否 | POST /mcp 请求正文允许的最大字节数(默认值 16777216 = 16 MiB,足以容纳符合文档所述工具限制的 base64 文件上传)。超大请求会在读取前/读取过程中返回 413 JSON-RPC 错误,从而消除公共部署中的内存耗尽 DoS 攻击途径。注意:base64 文件源会先受此限制,再应用 MCP_FILE_MAX_BYTES。 |
MCP_HTTP_PUBLIC | 否 | 否 | 在公共/多租户部署中设置为 "true"。此设置会启用 Host 验证,并要求满足以下条件,否则拒绝启动:(1) 已设置 MCP_ALLOWED_ORIGINS 或 MCP_ALLOWED_HOSTS;且 (2) 已配置入站 Bearer 内省(MCP_SVC_INTROSPECT_URL + MCP_SVC_CLIENT_ID/SECRET),或已明确设置 MCP_ALLOW_UNVERIFIED_BEARER=true(失败时默认拒绝)。 |
MCP_SVC_CLIENT_ID | 是 | 否 | OAuth2 client_credentials 客户端 ID。 |
MCP_SVC_CLIENT_SECRET | 是 | 是 | OAuth2 client_credentials 客户端密钥。(有关获取凭据的信息,请参阅 https://digitaltrust.gcloudfactory.com。) |
MCP_SVC_INTROSPECT_URL | 否 | 否 | HTTP 模式下用于验证入站 Bearer 的 RFC 7662 令牌内省 URL。需主动启用,并且 MCP_HTTP_PUBLIC=true 时为必填。stdio(本地)使用时请留空。 |
MCP_SVC_SCOPE | 否 | 否 | 服务账号令牌请求可选的 OAuth2 范围。 |
MCP_SVC_TOKEN_URL | 是 | 否 | OAuth2 client_credentials 流程的令牌端点 URL。 |
PORT | 否 | 否 | 在托管(HTTP)模式下运行时使用的 HTTP 端口;stdio 模式下会忽略 |
| Variable | 是否必需 | 描述 | |
| --- | --- | --- | |
MCP_SVC_TOKEN_URL | 必需 | OAuth2 client_credentials 令牌端点 URL | |
MCP_SVC_CLIENT_ID | 必需 | OAuth2 客户端 ID | |
MCP_SVC_CLIENT_SECRET | 必需 | OAuth2 客户端密钥 | |
MCP_SVC_SCOPE | 可选 | 令牌请求的 OAuth2 作用域 | |
MCP_OTEL_ENABLED | 可选 | 设置为 true 以启用 OpenTelemetry 跟踪 | |
MCP_API_BASE_URL | 可选 | 网关根 URL——每个管理器的路径前缀会自动追加;使用 MCP_API_BASE_URL_<MANAGER> 可完整覆盖单个管理器的 URL(按原样使用) |
内置 Skills
此软件包在 .claude/commands/ 下提供 Claude Code 斜杠命令。安装后,可在 Claude Code 中调用:
/create-internal-evidence— 分步工作流指南/create-signature-request— 分步工作流指南/create-notification-request— 分步工作流指南
请参阅 docs/agent-prompts.md,了解端到端提示词示例及其触发的工具调用序列。
更倾向于直接使用 REST API 编写代码?
你不必通过此 MCP 服务。本仓库还提供 Claude Code skill——一份独立的集成指南(涵盖身份验证、调用顺序、选项、枚举值和注意事项),帮助你直接通过 REST API 编写程序:
- Skill:
.claude/skills/ead-factory-api/SKILL.md— 在 Claude Code 中打开此仓库即可直接使用。 - 作为参考: docs/api-integration-skill.md。
它独立于 MCP 工具和 n8n 节点——请选择最适合你集成方式的入口。
可用工具
此服务提供 64 个工具:
| 工具 | 描述 |
|---|---|
evidence_case_file_delete_bulk | 一次调用永久删除多个案件文件。此操作具有破坏性且无法撤销——请先确认 caseFileIds(evidence_case_file_search),如果只需结束对案件文件的处理,优先通过 evidence_case_file_status_update 关闭案件文件。 |
evidence_case_file_search | 使用可选筛选条件(名称、状态、日期、分页)搜索案件文件。当你没有 caseFileId 时,用于查找它;或在使用 evidence_case_file_create 创建新案件文件前,列出现有文件。 |
evidence_case_file_create | 创建新的案件文件——用于容纳证据组、证据和报告的顶层容器。请先使用此工具,再使用任何其他 Evidence-manager 工具。无前置条件。与大多数创建工具不同,id 由调用方提供(请自行生成新的 UUID v4;此 API 不会分配 ID)——没有 name 字段,请改用 title。示例:evidence_case_file_create({ id: '', title: 'Q1 2026 audit' }) — 在 evidence_group_create 中将同一 id 用作 caseFileId。 |
evidence_case_file_update_bulk | 一次调用更新多个案件文件的可编辑元数据(每个条目都包含自己的 caseFileId 和要更改的内容)。单个案件文件请优先使用 evidence_case_file_update。需要:要更新的每个案件文件的 caseFileId(使用 evidence_case_file_search 查找)。 |
evidence_case_file_get | 根据 id 获取案件文件的详细信息。用于确认案件文件是否存在,或在其下创建证据组或报告前检查其状态。需要:evidence_case_file_create → caseFileId。 |
evidence_case_file_update | 更新单个案件文件的可编辑元数据(例如名称、描述)。需要:evidence_case_file_create 或 evidence_case_file_search → caseFileId。若要更改其 OPEN/CLOSE 生命周期状态,请改用 evidence_case_file_status_update。 |
evidence_case_file_relationship_assign | 为案件文件分配关联关系,将其链接到外部/相关实体引用,以便追踪。如果你的工作流需要追踪该案件文件所属的事项、客户端或系统记录,请在创建案件文件后使用。需要:evidence_case_file_create → caseFileId。 |
evidence_case_file_report_preview | 生成案件文件证据报告的未签名预览,以便在使用 evidence_case_file_report_generate 生成签名版本前检查内容。需要:evidence_case_file_create → caseFileId,且其中包含已封存的证据组。 |
evidence_case_file_report_generate | 生成案件文件的签名证据报告(涵盖其已封存证据的认证文档)。返回 reportId — 然后调用 evidence_case_file_report_pdf_url_get(PDF)或 evidence_case_file_report_zip_url_get(完整软件包)进行下载。需要:evidence_case_file_create → caseFileId;请先使用 evidence_case_file_report_preview 预览。 |
evidence_case_file_report_update | 更新先前生成的案件文件报告的元数据。需要:evidence_case_file_report_generate → reportId(以及该报告所属的 caseFileId)。不会重新生成报告内容——如需更新证据,请生成新报告。 |
evidence_case_file_report_pdf_url_get | 获取案件文件报告的签名 PDF 文档下载 URL。需要:evidence_case_file_report_generate → reportId(以及 caseFileId)。如需完整证据软件包(PDF + 文件 + 验证数据),请使用 evidence_case_file_report_zip_url_get。 |
evidence_case_file_report_zip_url_get | 获取案件文件报告完整 ZIP 软件包的下载 URL(签名 PDF 加证据文件和验证材料)。需要:evidence_case_file_report_generate → reportId(以及 caseFileId)。 |
evidence_case_file_status_update | 更改案件文件的生命周期状态(OPEN 或 CLOSE)。处理完毕且不应再接受新证据组时,请使用 CLOSE;使用 OPEN 重新打开。需要:evidence_case_file_create 或 evidence_case_file_search → caseFileId。 |
evidence_report_delete | 根据 reportId 永久删除已生成的报告。此操作具有破坏性——签名文档及其软件包将无法再下载。需要:evidence_case_file_report_generate → reportId。不会触及底层案件文件及其证据。 |
evidence_group_evidence_register | 在证据组中登记一项新证据——两步上传流程的第一步(先登记,再将文件字节 PUT 到返回的上传 URL)。对要添加到 OPEN 证据组的每个文件使用一次。需要:evidence_group_create → evidenceGroupId、evidence_case_file_create → caseFileId,以及文件的 SHA-256 哈希(调用前计算,或使用会为你处理此操作的 evidence_create_sealed 组合工具)。在所有已登记证据的字节上传完毕前,不要调用 evidence_group_close。保管类型:INTERNAL = EAD Factory 自行存储并保管文件。 |
evidence_group_evidence_get | 获取特定证据组中一项证据的详细信息(元数据、哈希、保管方式、上传状态)。需要:evidence_case_file_create → caseFileId、evidence_group_create → evidenceGroupId、evidence_group_evidence_register → evidenceId。 |
evidence_group_evidence_delete | 从证据组中永久删除一项证据。仅当证据组仍为 OPEN 时才有意义(已封存的证据组不可变)。需要:caseFileId + evidenceGroupId + evidence_group_evidence_register → evidenceId。 |
evidence_group_evidence_download_url_create | 为存储在证据组中的证据文件创建临时下载 URL(INTERNAL 保管)。上传后可用此工具取回原始字节。需要:caseFileId + evidenceGroupId + evidence_group_evidence_register → evidenceId。 |
evidence_group_evidence_upload_url_create | 为证据组中已登记的证据创建新的预签名上传 URL——这是先登记后上传流程的第二步(将文件字节 PUT 到返回的 URL)。当 evidence_group_evidence_register 返回的 URL 已过期或丢失时使用。需要:caseFileId + evidenceGroupId + evidenceId。evidence_create_sealed 会自动完成所有这些操作。 |
evidence_thumbnail_url_get | 获取指定尺寸的图像证据缩略图临时 URL——无需下载原始文件即可快速目视核验。需要:caseFileId + evidenceGroupId + evidenceId(仅限图像类型证据)以及缩略图尺寸路径值。 |
evidence_search | 使用可选筛选条件(状态、日期、分页)搜索租户内的所有证据——不限定于单个证据组。用于查找 evidenceId 或审查现有证据;如需查看单个证据组的内容,请改用 evidence_group_get。 |
generate_evidence | 登记一项新证据(旧版顶层名称;创建时不限定于特定证据组,不同于 evidence_group_evidence_register)。用于基于证据组的流程之外的独立证据,或与旧版 EAD-Factory-MCP 集成保持兼容。需要文件的 SHA-256 哈希。创建新的完整证据组、证据和封存流程时,优先使用 evidence_create_sealed。保管类型:INTERNAL = EAD Factory 自行存储并保管文件。 |
evidence_update_bulk | 一次调用更新多项证据的可编辑元数据(每个条目都包含自己的 evidenceId 和要更改的内容)。单项证据请优先使用 evidence_update。需要:要更新的 evidenceId(使用 evidence_search 查找)。 |
get_evidence | 根据 id 获取证据记录的详细信息和状态(旧版顶层名称)。用于在登记后检查证据的时间戳状态(IN_PROCESS / COMPLETED / ERROR)。需要:generate_evidence 或 evidence_group_evidence_register → evidenceId。 |
evidence_delete | 根据 evidenceId 永久删除一项证据(无需群组路径)。此操作具有破坏性;不应删除已封存的内容——仅用于草稿或登记错误的证据。需要:evidence_group_evidence_register 或 generate_evidence → evidenceId。 |
evidence_update | 根据 evidenceId 更新单项证据的可编辑元数据(例如名称、描述)。文件内容和哈希不可变——如需更改文件,请重新登记一项新证据。需要:evidence_group_evidence_register 或 generate_evidence → evidenceId。 |
evidence_download_url_create | 仅持有 evidenceId 时,为证据的存储文件创建临时下载 URL(无需群组路径——返回的字节与 evidence_group_evidence_download_url_create 相同)。需要:generate_evidence 或 evidence_group_evidence_register → evidenceId。 |
evidence_upload_url_create | 根据 evidenceId 为已登记的证据创建新的预签名上传 URL——这是先登记后上传流程的第二步(将文件字节 PUT 到返回的 URL)。与 generate_evidence 配合使用,方式与 evidence_group_evidence_upload_url_create 配合 evidence_group_evidence_register 相同。需要:generate_evidence → evidenceId。 |
evidence_temp_file_upload_url_create | 为尚未登记为证据的临时文件创建预签名上传 URL。用于暂存供其他操作引用的内容;对于正式证据,优先使用先登记后上传流程(evidence_group_evidence_register),或使用会一并处理登记和上传的 evidence_create_sealed 组合工具。 |
evidence_multipart_upload_start | 为大型证据文件启动分段上传会话(返回分段上传文件所需的上传坐标)。当单次预签名 PUT 无法满足文件大小要求时使用。需要:已登记的证据(evidence_group_evidence_register 或 generate_evidence → evidenceId)以及文件名。 |
evidence_group_delete_bulk | 一次调用永久删除某个案件文件中的多个证据组。此操作具有破坏性——单个证据组请优先使用 evidence_group_discard,绝不要删除支撑已签发报告的已封存证据组。需要:caseFileId + 要删除的 evidenceGroupIds(使用 evidence_group_search 查找)。 |
evidence_group_create | 在案件文件中创建证据组——证据记录必须登记在证据组内,不可单独登记(旧版 generate_evidence 工具除外)。开始收集一批相关证据时使用(例如某起事件的所有文件)。与 evidence_case_file_create 一样,id 由调用方提供(请自行生成新的 UUID v4)。需要:evidence_case_file_create → caseFileId。示例:evidence_group_create({ id: '', caseFileId, type: 'FILE' }) 返回 { status: 'OPEN', ... } — 在 evidence_group_evidence_register 中将同一 id 用作 evidenceGroupId,然后在该组中的所有证据上传完毕后调用 evidence_group_close。 |
evidence_group_get | 获取单个证据组的详细信息——状态(OPEN/CLOSED)、封存信息及其证据和上传状态。用于在调用 evidence_group_close 前确认每个文件均已上传,或在关闭后检查封存状态。需要:caseFileId + evidence_group_create → evidenceGroupId。 |
evidence_group_discard | 丢弃(删除)一个 OPEN 证据组及其已登记证据——用于放弃不再打算封存的证据组。此操作具有破坏性;已封存(CLOSED)的证据组属于不可变证据,不应丢弃。需要:caseFileId + evidence_group_create → evidenceGroupId。 |
evidence_group_update | 更新证据组的可编辑元数据(例如名称、描述)。仅当证据组处于 OPEN 状态时才有意义——已封存的证据组不可变。需要:caseFileId + evidence_group_create → evidenceGroupId。 |
evidence_group_close | 封存(关闭)证据组并触发合格时间戳处理——此后无法再添加证据。仅当该组中登记的每项证据都已将文件字节上传到 evidence_group_evidence_register 返回的预签名 URL 后,才使用此工具。需要:evidence_group_create → evidenceGroupId、evidence_case_file_create → caseFileId,以及当前 evidencesCount。异步操作:证据组状态将从 OPEN 转为 CLOSING,再转为 CLOSED;在生成报告前,轮询 evidence_group_get,直到状态为 CLOSED。创建新证据组时,优先使用 evidence_create_sealed 组合工具——它会在一次调用中完成登记、上传、关闭,并等待状态变为 CLOSED。 |
evidence_group_search | 使用可选筛选条件(状态、日期、分页)跨案件文件搜索证据组。用于查找 evidenceGroupId 或列出待封存的组;如需查看单个证据组的完整详细信息,请使用 evidence_group_get。 |
evidence_group_update_bulk | 一次调用更新多个证据组的可编辑元数据(每个条目都包含自己的 evidenceGroupId 和要更改的内容)。单个证据组请优先使用 evidence_group_update。需要:要更新的 evidenceGroupIds(使用 evidence_group_search 查找)。 |
evidence_report_pdf_url_get | 仅持有 reportId 时,获取报告签名 PDF 的下载 URL(无需 caseFileId 路径——返回的文档与 evidence_case_file_report_pdf_url_get 相同)。需要:evidence_case_file_report_generate → reportId。 |
evidence_report_zip_url_get | 仅持有 reportId 时,获取报告完整 ZIP 软件包的下载 URL(返回的软件包与 evidence_case_file_report_zip_url_get 相同)。需要:evidence_case_file_report_generate → reportId。 |
create_signature_request | 创建新的签名请求——用于容纳签名流程中的文档和签署人的顶层容器。请先使用此工具,再使用 add_document_to_signature_request。无前置条件。示例:create_signature_request({ name: 'NDA — Acme Corp', createdBy: '[email protected]' }) 返回 { id, ... } — 后续调用中将返回的 id 用作 signatureRequestId。 |
add_document_to_signature_request | 向签名请求添加文档——两步上传流程的第一步(先添加,再将文件字节 PUT 到返回的上传 URL)。对每份需要签署的文档使用一次。需要:create_signature_request → signatureRequestId,以及文档的 SHA-256 哈希(调用前计算,或使用 signature_request_full 组合工具)。激活前,请先通过 add_signatory_to_document 添加签署人。签名类型:INTERPOSITION = EAD Factory 代表签署人协调签署操作(例如通过 WhatsApp/SMS 发送 OTP)——签署人无需软件或证书。 |
add_signatory_to_document | 将签署人(姓名 + 电子邮箱)添加到签名请求中的文档。对每位需要签署该文档的人使用一次。需要:create_signature_request → signatureRequestId、add_document_to_signature_request → documentId。调用 activate_signature_request 前,请先添加所有签署人——激活后无法再添加签署人。 |
add_validator_to_signatory | 为文档的签署人添加验证人:该人员必须批准(验证)签署人的身份或文档,之后才能继续签署。请在 activate_signature_request 前添加验证人。需要:add_document_to_signature_request → documentId、add_signatory_to_document → signatoryId。signature_request_full 组合工具支持内联添加验证人。 |
add_observer_to_document | 为签名请求中的文档添加观察者:该人员可只读查看流程和签署后的结果,但不参与签署。请在 activate_signature_request 前添加观察者。需要:create_signature_request → signatureRequestId、add_document_to_signature_request → documentId。 |
activate_signature_request | 激活签名请求,向所有已添加的签署人发送签署通知——此后无法再添加文档或签署人(如需验证人/观察者,请在激活前使用 add_validator_to_signatory / add_observer_to_document)。需要:create_signature_request → signatureRequestId、至少一份已上传文件字节的文档(add_document_to_signature_request),以及每份文档至少一位签署人(add_signatory_to_document)。创建新请求时,优先使用 signature_request_full——它会在一次调用中创建请求、添加文档和签署人并激活请求。 |
get_signature_request | 根据 id 获取签名请求的详细信息和状态(旧版顶层名称)。用于在激活后检查签署进度。需要:create_signature_request → signatureRequestId。 |
signature_request_list | 列出签名请求,并可按关闭条件及其他条件筛选。当你没有请求 id 时(例如按名称或状态查找),可使用此工具。签名请求关闭条件:ALL_REQUIRED = 只有所有签署人都已签署,请求才会关闭。 |
signature_request_cancel | 取消处于活动状态的签名请求——此后无法继续签署。当请求被错误激活或不再需要时使用。需要:create_signature_request → signatureRequestId。无法撤销。 |
signature_certificate_generate | 为签名请求生成签署完成外观证明文档。所有签署人均已签署后使用(通过 get_signature_request 检查)。需要:create_signature_request → signatureRequestId。与 EAD Enterprise 的对应工具不同(该工具通过 GET 轮询已生成的 URL),此工具会触发生成并在同一次调用中返回结果。 |
signature_coordinate_set | 设置签署人的签名在文档页面上的坐标(x、y、页码)。如果需要明确指定签名位置而非自动定位,请在 add_signatory_to_document 后使用。需要:create_signature_request → signatureRequestId、add_document_to_signature_request → documentId、add_signatory_to_document → signatoryId。 |
signature_document_download_url_get | 获取文档最终签署完成版本的下载链接——即所有签署人签署后生成的实际签名文件。需要:create_signature_request → signatureRequestId、add_document_to_signature_request → documentId。调用前请先使用 get_signature_request 确认签署已完成。请勿与 signature_certificate_generate 混淆,后者生成的是单独的外观证明文档,而非签署文件本身。 |
notification_request_create | 创建新的通知请求(草稿)——用于容纳认证通知流程中的接收人和附件的顶层容器。请先使用此工具,再使用任何其他 Notification-manager 工具。无前置条件。设置 autosend: true,即可在第一批接收人激活时立即发送;也可将其设为 false,以便通过多次调用添加接收人/文档,然后自行调用 notification_request_send。返回 requestId,以及请求中已包含的每位接收人对应的一个 notificationId(如果有内联添加接收人)。 |
notification_request_send | 激活通知请求,向所有已添加的接收人通过其已配置的渠道发送通知。作为 MCP Task 运行(有界轮询,直至每位接收人的通知离开进行中状态——EAD Factory 上游不会针对这一状态转换发出事件)。需要:notification_request_create → requestId,至少一位接收人(notification_receiver_add)。使用 notification_request_status 可检查进度,而无需等待 Task 完成。 |
notification_request_status | 搜索通知,可按 requestId 和/或发送状态筛选——这是最接近“检查请求状态”的方式:一个请求会为每位接收人分别创建一条通知,每条通知都有自己的状态历史,因此此工具会返回所有符合筛选条件的通知及其当前状态。省略 requestId 可跨所有请求搜索。需要:notification_request_create → requestId(仅在筛选单个请求时需要)。 |
notification_receiver_add | 向草稿通知请求添加一位或多位接收人——每位接收人都会在共享的 requestId 下,按渠道创建各自的通知(没有单独的 receiverId;请通过此调用返回的 notificationIds 跟踪接收人)。在调用 notification_request_send 前,每批接收人使用一次。需要:notification_request_create → requestId。每位接收人的结构取决于其 provider(SMTP/SMS/NOTICEMAN/WFB)——各类型所需字段请参阅架构。通知发送服务提供商:SMTP = 电子邮件发送。 |
notification_document_add | 将一个或多个文档附件(仅元数据——fileName + SHA-256 哈希)登记到草稿通知请求中。激活前,每批文档使用一次。需要:notification_request_create → requestId。此操作只登记元数据;请对每个已登记附件调用 notification_document_upload_url_create,以获取用于 PUT 实际文件字节的 URL。 |
notification_document_upload_url_create | 为通过 notification_document_add 登记的文档附件创建预签名上传 URL——将文件字节 PUT 到返回的 URL。需要:notification_request_create → requestId、notification_document_add → attachmentId。 |
notification_document_download_url_create | 为通知请求中的文档附件创建预签名下载 URL。需要:notification_request_create → requestId、notification_document_add → attachmentId。 |
notification_certificate_generate | 为请求中的一条或多条通知生成送达证明报告。notification_request_status 显示相关通知已离开进行中状态后使用。需要:notification_request_create → requestId、notification_request_status → notificationIds。返回 reportId — 调用 notification_certificate_pdf_url_get 并传入该 ID,以获取实际下载 URL(两步操作,与 Evidence 的报告工具结构相同)。 |
notification_certificate_pdf_url_get | 获取先前生成的通知送达证明的下载 URL。需要:notification_certificate_generate → reportId。 |
evidence_create_sealed | 创建(或复用)证据组,将一个或多个文件登记并上传为证据,然后封存(关闭)该组——一次调用即可完成完整的旗舰证据流程,无需分别调用 evidence_group_create + N x (evidence_group_evidence_register + upload) + evidence_group_close。使用有界轮询,直到证据组变为 CLOSED(EAD Factory 上游不会针对这一状态转换发出事件):支持任务的 MCP 客户端会收到异步 Task;其他客户端则会同步收到最终结果。需要:case_file_create -> caseFileId。提供 evidenceGroupId 可将证据添加到现有 OPEN 证据组,而非新建证据组。每项证据的文件使用通用 FileInput 约定(本地路径、base64、https URL 或 n8n 二进制项)——不要使用专用文件字段。成功后返回证据组 id、最终 CLOSED 状态,以及每项证据的 id + sha256。当你需要检查或响应每个中间步骤时,请改用独立的 evidence_group_create / evidence_group_evidence_register / evidence_group_close 工具。 |
signature_request_full | 创建签名请求,添加一份或多份文档(每份文档均有自己的签署人),并激活请求——一次调用即可完成完整的旗舰签名流程,无需分别调用 create_signature_request + N x (add_document_to_signature_request + add_signatory_to_document) + activate_signature_request。每份文档的文件都使用通用 FileInput 约定(本地路径、base64、https URL 或 n8n 二进制项)——不要使用专用文件字段。设置 activate: false 可将请求保留为草稿,以便在自行激活前添加验证人/观察者(add_validator_to_signatory、add_observer_to_document)。成功后返回请求 id、每份文档的 id 以及每位签署人的 id。当你需要检查或响应每个中间步骤,或需要在激活前添加验证人/观察者时,请改用独立工具。 |
ead_factory_help | 返回 EAD Factory 管理器(Evidence、Signature、Notification、Chat)及其关键工具和入门方式的概述,并说明何时应使用组合工作流工具(例如 evidence_create_sealed),何时应使用独立工具。如果不确定该使用哪个工具,请先调用此工具——无需凭据。 |
MCP Tasks 支持
notification_request_send 作为 MCP Task 运行,需要客户端支持 MCP Tasks——其他客户端调用会失败;请改用 autosend: true(notification_request_create)创建请求,并自行轮询 notification_request_status。
evidence_create_sealed 可供任何客户端使用:支持 Task 的客户端会获得异步 Task;其他客户端则会直接同步收到最终结果。
共存
此 MCP 服务是 EAD Factory(Digital Trust)平台当前仍在积极维护的接口。
它可以与设置中的任何其他 MCP 服务安全共存——它只提供以 EAD-Factory 为命名空间的工具,且不与其他服务共享本地状态。
许可证
MIT——参见 LICENSE。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。