mcpField
C
c2pa-watermark-mcp

c2pa-watermark-mcp

本地服务
github.com/CSOAI-ORG安全020 周前更新

关于 c2pa-watermark-mcp

c2pa-watermark-mcp 是用于为数字资产添加 C2PA 来源清单并进行验证的 MCP 服务。它封装 `c2pa-python`,并提供 HMAC-SHA256 后备方案,以适用于缺少原生依赖的环境。

主要功能

  1. 01为资产添加 C2PA 清单
  2. 02验证资产来源
  3. 03自动添加 AI 生成声明
  4. 04HMAC-SHA256 后备方案
  5. 05可选 X.509 证书链

适用场景

  1. 01标记 AI 生成的资产
  2. 02检查清单是否与资产字节匹配

MCP 相关

它向 MCP 客户端提供 `sign_asset`、`verify_asset` 和 `status` 工具,用于签署资产、检查来源及报告服务器能力。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"csoai-org-c2pa-watermark": {
"command": "uvx",
"args": [
"c2pa-watermark-mcp"
]
}
}
}
启动命令uvx c2pa-watermark-mcp

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypic2pa-watermark-mcp0.1.1

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

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

评论

支持 Markdown

第一次接触 MCP?

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

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