c2pa-watermark-mcp について
c2pa-watermark-mcpは、デジタルアセットにC2PAマニフェストを付与し、検証するMCPサーバーです。`c2pa-python`を利用し、ネイティブ依存関係が使えない環境向けにHMAC-SHA256の代替方式も備えています。
主な機能
- 01アセットへのC2PAマニフェスト付与
- 02アセットの来歴検証
- 03AI生成アサーションの自動追加
- 04HMAC-SHA256の代替方式
- 05オプションのX.509チェーン
活用シーン
- 01AI生成アセットへの表示
- 02マニフェストとアセットバイト列の照合
MCP 対応
アセットの署名、来歴検証、サーバー機能の確認に使う`sign_asset`、`verify_asset`、`status`ツールをMCPクライアントに公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
c2pa-watermark-mcp
C2PA Content Credentials MCP サーバー — AI 生成アセットの機械可読な来歴情報を埋め込み、検証します。**EU AI Act 第50条の期限(2026年12月2日)**に先立ち対応できます。
開発の背景
EU AI Act 第50条(Regulation (EU) 2024/1689)は、AI 生成コンテンツをAI生成であると機械可読かつ検出可能にすることを義務付けています。c2pa.ai_generated アサーションは、これを実現するためにC2PA仕様で定められた方法です。
期限は2026年12月2日で、あと約6か月です。C2PAに対応せずにユーザー向け生成ツールを提供する企業は、最大**€35Mまたは世界売上高の7%**の罰金を科される可能性があります。
このMCPは、公式のc2pa-python SDK(≥0.9.0)をMCPサーバーとしてラップし、エージェントが生成時にC2PAマニフェストを付与し、実行時に来歴情報を検証できるようにします。c2pa-pythonのネイティブ依存関係をインストールできない環境(Vercelのサーバーレス環境、CIサンドボックスなど)向けに、純粋な標準ライブラリによるHMACフォールバックも含まれています。
機能
- MCP ツール3個 —
sign_asset、verify_asset、status - EU AI Act 第50条に対応 —
c2pa.ai_generatedアサーションを自動挿入 - 純粋な標準ライブラリによるフォールバック — c2pa-pythonのネイティブ依存関係なしで動作
- HMAC-SHA256署名 — 改ざんを検知できるマニフェスト
- オプションのX.509チェーン —
c2pa-python[evm]extra経由 - Vercelにデプロイ可能 — 関連リポジトリの
c2pa-watermark-vercelを参照
ツール
| ツール | 目的 | ティア |
|---|---|---|
sign_asset | アセットにC2PAマニフェストを埋め込み、HMACで署名します | Pro |
verify_asset | アセットのバイト列に対してマニフェストを検証します | Free |
status | サーバーの健全性とネイティブSDKの利用可否を報告します | Free |
インストール
# 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]
使用方法
アセットに署名する(Proティア)
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生成コンテンツを開示する標準的な方法としてこれを定めています。EU AI Act 第50条は、AI生成コンテンツを「機械可読かつAI生成として検出可能」にすることを求めています。仕様が定める方法は、まさにこのアサーションです。自動挿入を省略すれば、コンプライアンス違反につながりかねません。
FAQ
Q: c2pa-pythonは必要ですか? A: いいえ。純粋な標準ライブラリによるHMAC-SHA256フォールバックは、改ざんを検知できるマニフェストの作成に完全に対応しています。完全なX.509チェーンが必要な場合にのみ、c2pa-pythonをインストールしてください。
Q: PNG/JPEG以外のアセットにも署名できますか?
A: はい。asset_mimeパラメーターはメタデータにすぎません。HMACはバイト列そのものに対して計算されます。動画、音声、PDFなどにも使用できます。
Q: 署名キーをローテーションするにはどうすればよいですか?
A: 新しいキーを生成し、OLD_KEYとNEW_KEYの両方を設定してデプロイします。すべてのマニフェストにNEW_KEYで再署名した後、有効期限が切れたらOLD_KEYを削除してください。このパッケージは、コンストラクター引数のsigning_keyを使ったキーのローテーションに対応しています。
Q: 本番環境で使用できますか? A: 改ざん検知(HMAC)については使用できます。完全なX.509 C2PAチェーンと暗号学的な否認防止が必要な場合は、c2pa-python ≥ 0.9.0をインストールしてください。
ライセンス
MIT © MEOK AI Labs / CSOAI-ORG
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。