关于 c2pa-watermark-mcp
c2pa-watermark-mcp 是用于为数字资产添加 C2PA 来源清单并进行验证的 MCP 服务。它封装 `c2pa-python`,并提供 HMAC-SHA256 后备方案,以适用于缺少原生依赖的环境。
主要功能
- 01为资产添加 C2PA 清单
- 02验证资产来源
- 03自动添加 AI 生成声明
- 04HMAC-SHA256 后备方案
- 05可选 X.509 证书链
适用场景
- 01标记 AI 生成的资产
- 02检查清单是否与资产字节匹配
MCP 相关
它向 MCP 客户端提供 `sign_asset`、`verify_asset` 和 `status` 工具,用于签署资产、检查来源及报告服务器能力。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
c2pa-watermark-mcp
C2PA 内容凭证 MCP 服务——为 AI 生成的资产嵌入并验证机器可读的 来源信息,以赶上 《欧盟 AI 法案》第 50 条的截止日期 (2026 年 12 月 2 日)。
为什么要开发这个项目
《欧盟 AI 法案》第 50 条(Regulation (EU) 2024/1689)要求 AI 生成的
内容必须以机器可读且可检测的方式标记为 AI 生成内容。c2pa.ai_generated
断言是 C2PA 规范规定的实现方式。
截止日期是2026 年 12 月 2 日——大约还有 6 个月。推出面向用户的生成式工具却不支持 C2PA 的公司,可能面临最高 3500 万欧元或全球营业额 7% 的罚款。
此 MCP 服务将官方 c2pa-python
SDK(≥0.9.0)封装为 MCP 服务,让 Agent 能在生成时附加 C2PA 清单,并在运行时验证来源信息。此项目还提供纯标准库 HMAC
备用方案,适用于无法安装 c2pa-python 原生依赖项的环境(Vercel 无服务器环境、CI 沙箱等)。
功能
- 3 个 MCP 工具——
sign_asset、verify_asset、status - 符合《欧盟 AI 法案》第 50 条要求——自动注入
c2pa.ai_generated断言 - 纯标准库备用方案——无需 c2pa-python 原生依赖项即可运行
- HMAC-SHA256 签名——清单可检测篡改
- 可选的 X.509 证书链——通过
c2pa-python[evm]扩展提供 - 可部署到 Vercel——参见同级仓库
c2pa-watermark-vercel
工具
| 工具 | 用途 | 层级 |
|---|---|---|
sign_asset | 将经 HMAC 签名的 C2PA 清单嵌入资产 | 专业版 |
verify_asset | 根据资产字节验证清单 | 免费 |
status | 报告服务健康状态及原生 SDK 可用性 | 免费 |
安装
# Core (HMAC fallback, no native deps)
pip install c2pa-watermark-mcp
# With full c2pa-python (X.509 chain)
pip install 'c2pa-watermark-mcp[c2pa]'
# For local development
git clone https://github.com/CSOAI-ORG/c2pa-watermark-mcp
cd c2pa-watermark-mcp
pip install -e .[dev]
用法
为资产签名(专业版)
from c2pa_watermark_mcp import sign_asset, verify_asset, status
# Server health
print(status())
# → {'server': 'c2pa-watermark-mcp', 'c2pa_python_available': False, ...}
# Sign an asset
with open("output.png", "rb") as f:
asset = f.read()
key = b"my-hmac-key-32-bytes-long-aaaaaa"
result = sign_asset(
asset_bytes=asset,
asset_mime="image/png",
claim_generator="MEOK-SDXL/1.0",
signing_key=key,
ai_generated=True,
assertions=[
{"label": "c2pa.training", "value": {"model": "sdxl-1.0", "dataset": "internal"}},
],
)
print(result["manifest_id"])
# Verify
verdict = verify_asset(asset, result["manifest"], key)
print(verdict) # {'valid': True, 'reasons': [], ...}
作为 MCP 服务运行(stdio)
c2pa-watermark-mcp
# or with full c2pa-python
pip install 'c2pa-watermark-mcp[c2pa]'
c2pa-watermark-mcp
通过 Docker 运行
docker build -t c2pa-watermark-mcp .
docker compose up -d
# status endpoint on http://localhost:8000
部署到 Vercel
有关提供 /sign、/verify、/status 路由的无服务器封装,请参见配套仓库 c2pa-watermark-vercel。
架构
┌─────────────────────────────────────────────────────────────┐
│ c2pa-watermark-mcp │
├─────────────────────────────────────────────────────────────┤
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ sign_asset │ │verify_asset │ │ status │ │
│ │ (HMAC + │ │ (HMAC + │ │ (health + │ │
│ │ c2pa.io) │ │ tamper) │ │ capability)│ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
│ │ │ │ │
│ └────────────────┴────────────────┘ │
│ │ │
│ ┌──────┴──────┐ │
│ │ HMAC-SHA256 │ (always available) │
│ │ + c2pa.io │ (if c2pa-python installed)│
│ └──────┬──────┘ │
│ │ │
│ ┌─────────────┐ ┌──────┴──────┐ ┌─────────────┐ │
│ │ manifest │ │ signing │ │ AI-Act │ │
│ │ generator │ │ keys │ │ assertions │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
└─────────────────────────────────────────────────────────────┘
为什么要自动注入 c2pa.ai_generated
C2PA 规范将此定义为披露 AI 生成内容的标准方式。《欧盟 AI 法案》第 50 条规定,AI 内容必须“以机器可读的方式标记,并且可检测为 AI 生成内容”——规范给出的解决方案正是此断言。不自动注入就可能导致合规违规。
常见问题
问:是否需要 c2pa-python? 答:不需要。纯标准库 HMAC-SHA256 备用方案可以完整地为清单提供篡改检测功能。只有在需要完整的 X.509 证书链时,才需要安装 c2pa-python。
问:可以为 PNG/JPEG 以外的资产签名吗?
答:可以。asset_mime 参数仅为元数据;HMAC 基于字节本身计算。适用于视频、音频、PDF 等。
问:如何轮换签名密钥?
答:生成新密钥,部署时同时配置 OLD_KEY 和 NEW_KEY,用 NEW_KEY 为所有清单重新签名,然后在旧密钥过期后移除 OLD_KEY。此软件包支持通过 signing_key 构造函数参数轮换密钥。
问:此项目可以用于生产环境吗? 答:对于篡改检测(HMAC)可以。若要使用完整的 X.509 C2PA 证书链及密码学上的不可否认性,请安装 c2pa-python ≥ 0.9.0。
许可证
MIT © MEOK AI Labs / CSOAI-ORG
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。