Skip to main content
Glama

npm version npm downloads License: MIT IETF Draft MCP Registry PyPI: protect-mcp-adk

protect-mcp

MCPサーバーおよびClaude Codeフック向けのエンタープライズセキュリティゲートウェイ。署名付きレシート、Cedarポリシー、スウォーム対応の監査証跡を提供します。

Microsoft Agent Governance Toolkitに統合済み | IETF Internet-Draft | ライブデモ: acta.today/wiki

クイックスタート — Claude Code

2つのコマンドで実行。すべてのツール呼び出しにレシートが発行されます。

# 1. Generate hooks, keys, Cedar policy, and /verify-receipt skill
npx protect-mcp init-hooks

# 2. Start the hook server
npx protect-mcp serve

同じプロジェクトでClaude Codeを開きます。これで、すべてのツール呼び出しがインターセプト、評価、署名されるようになります。

init-hooks が作成するもの

ファイル

用途

.claude/settings.json

フック設定 (PreToolUse, PostToolUse, + 9つのライフサイクルイベント)

keys/gateway.json

Ed25519署名キーペア (自動的にgitignored)

policies/agent.cedar

スターターCedarポリシー — 必要に応じてカスタマイズ

protect-mcp.json

署名 + レート制限を含むJSONポリシー

.claude/skills/verify-receipt/SKILL.md

Claude Code用 /verify-receipt スキル

アーキテクチャ

Claude Code  →  POST /hook  →  protect-mcp (Cedar + sign)  →  response
                                    ↓
                            .protect-mcp-log.jsonl
                            .protect-mcp-receipts.jsonl
  • PreToolUse: 同期的なCedarポリシーチェック → 拒否(deny)でツールをブロック

  • PostToolUse: 非同期のレシート署名 → レイテンシへの影響なし

  • denyはアーキテクチャ上最終的なもの — モデルや他のフックによって上書きすることはできません

エンドポイント

メソッド

パス

説明

POST

/hook

Claude Codeフックエンドポイント

GET

/health

サーバー状態、ポリシー情報、署名者情報

GET

/receipts

最近の署名済みレシート

GET

/receipts/latest

最新のレシート

GET

/suggestions

自動生成されたCedarポリシー修正案

GET

/alerts

設定改ざん検知アラート

レシートの検証

# Inside Claude Code:
/verify-receipt

# From terminal:
curl http://127.0.0.1:9377/receipts/latest | jq .
npx protect-mcp receipts

# Check policy suggestions:
curl http://127.0.0.1:9377/suggestions | jq .

Related MCP server: verify-mcp

クイックスタート — MCPサーバーラッパー

任意のstdio MCPサーバーを透過プロキシとしてラップします:

# Shadow mode — log every tool call, enforce nothing
npx protect-mcp -- node my-server.js

# Enforce mode with policy
npx protect-mcp --policy protect-mcp.json --enforce -- node my-server.js

# Generate keys + config template
npx protect-mcp init

仕組み

protect-mcpは、すべてのツール呼び出しをポリシー(JSON、Cedar、または外部PDP)に対して評価し、その決定をEd25519レシートとして署名し、結果をログに記録します。

2つの統合モード:

モード

トランスポート

ユースケース

フックサーバー

HTTP (npx protect-mcp serve)

Claude Code, エージェントスウォーム

Stdioプロキシ

stdin/stdout (npx protect-mcp -- ...)

Claude Desktop, Cursor, あらゆるMCPクライアント

3つのポリシーエンジン:

エンジン

設定

備考

JSON

--policy policy.json

シンプルなツールごとのルール

Cedar

--cedar ./policies/

@cedar-policy/cedar-wasm によるローカルWASM評価

外部PDP

policy_engine: "external"

OPA, Cerbos, または任意のHTTP PDP

スウォーム追跡

マルチエージェントセッションにおいて、protect-mcpは自動的にスウォームトポロジを追跡します。

11のフックイベントを処理:

イベント

タイプ

説明

PreToolUse

同期

ツール実行前のCedar/ポリシー評価

PostToolUse

非同期

ツール実行後のレシート署名

SubagentStart / SubagentStop

ライフサイクル

ワーカーエージェントの生成/完了

TaskCreated / TaskCompleted

ライフサイクル

コーディネーターのタスク割り当て

SessionStart / SessionEnd

ライフサイクル

サンドボックス検知を含むセッションライフサイクル

TeammateIdle

ライフサイクル

エージェント利用状況の監視

ConfigChange

セキュリティ

.claude/settings.json の改ざん検知

Stop

ライフサイクル

終了処理 + ポリシー提案の要約

各レシートには以下が含まれます:

  • swarm.agent_id, swarm.agent_type, swarm.team_name

  • timing.tool_duration_ms, timing.hook_latency_ms

  • payload_digest (1KBを超えるペイロードのSHA-256ハッシュ)

  • deny_iteration (拒否後の再試行回数)

  • sandbox_state (有効/無効/利用不可)

  • OpenTelemetry otel_trace_id および otel_span_id

ポリシーファイル

{
  "default_tier": "unknown",
  "tools": {
    "dangerous_tool": { "block": true },
    "admin_tool": { "min_tier": "signed-known", "rate_limit": "5/hour" },
    "read_tool": { "require": "any", "rate_limit": "100/hour" },
    "*": { "rate_limit": "500/hour" }
  },
  "signing": {
    "key_path": "./keys/gateway.json",
    "issuer": "protect-mcp",
    "enabled": true
  }
}

Cedarポリシー

Cedarの拒否決定は権威的であり、上書きすることはできません。

// Allow read-only tools
permit(
  principal,
  action == Action::"MCP::Tool::call",
  resource == Tool::"Read"
);

// Block destructive tools
forbid(
  principal,
  action == Action::"MCP::Tool::call",
  resource == Tool::"delete_file"
);

ツールが拒否された場合、protect-mcpは GET /suggestions を通じて最小限のCedar permit() ルールを自動提案します。

CVEベースのポリシーパック

それぞれが実際の攻撃を防ぎます:

ポリシー

インシデント

OWASP

clinejection.json

CVE-2025-6514: MCP OAuthプロキシハイジャック (437K環境)

A01, A03

terraform-destroy.json

自律型Terraformエージェントによる本番環境破壊

A05, A06

github-mcp-hijack.json

細工されたGitHub Issueによるプロンプトインジェクション

A01, A02, A03

data-exfiltration.json

アウトバウンドツール悪用によるエージェントデータ窃取

A02, A04

financial-safe.json

不正な金融取引

A05, A06

Cedar版は policies/cedar/ にあります。

MCPクライアント設定

Claude Desktop

{
  "mcpServers": {
    "my-protected-server": {
      "command": "npx",
      "args": [
        "-y", "protect-mcp",
        "--policy", "/path/to/protect-mcp.json",
        "--enforce",
        "--", "node", "my-server.js"
      ]
    }
  }
}

Cursor / VS Code

同様のパターン — サーバーコマンドを protect-mcp でラップしたものに置き換えます。

CLIコマンド

Commands:
  serve             Start HTTP hook server for Claude Code (port 9377)
  init-hooks        Generate Claude Code hook config + skill + sample Cedar policy
  quickstart        Zero-config onboarding: init + demo + show receipts
  init              Generate Ed25519 keypair + config template
  demo              Start a demo server wrapped with protect-mcp
  doctor            Check your setup: keys, policies, verifier, connectivity
  trace <id>        Visualize the receipt DAG from a given receipt_id
  status            Show tool call statistics from the decision log
  digest            Generate a human-readable summary of agent activity
  receipts          Show recent persisted signed receipts
  bundle            Export an offline-verifiable audit bundle
  simulate          Dry-run a policy against recorded tool calls
  report            Generate a compliance report from an audit bundle

Options:
  --policy <path>   Policy/config JSON file
  --cedar <dir>     Cedar policy directory
  --enforce         Enable enforcement mode (default: shadow)
  --port <port>     HTTP server port (default: 9377 for serve)
  --verbose         Enable debug logging

決定ログ

すべてのツール呼び出しは構造化されたJSONを stderr に出力します:

[PROTECT_MCP] {"v":2,"tool":"read_file","decision":"allow","reason_code":"cedar_allow","policy_digest":"a1b2c3...","mode":"enforce","hook_event":"PreToolUse","timing":{"hook_latency_ms":1},"otel_trace_id":"..."}

署名が設定されている場合、署名済みレシートが .protect-mcp-receipts.jsonl に保存されます。

監査バンドル

npx protect-mcp bundle --output audit.json

レシートと署名キーを含む、オフライン検証可能な自己完結型バンドル。npx @veritasacta/verify で検証します。

検証済みナレッジベース (acta.today/wiki)

protect-mcpのレシート署名は、acta.today/wiki にある世界初の検証済みマルチモデルナレッジベースを支えています。

各ナレッジユニットは、4つのフロンティアモデルが3ラウンドの対抗的議論を経て生成し、すべてのモデル応答にEd25519レシートが付与されています。現在のラインナップ:

モデル

プロバイダー

原産国

Claude Opus 4.6

Anthropic

米国

GPT-5.4

OpenAI

米国

Grok 4.20

xAI

米国

Gemini 3.1 Pro

Google

米国

DeepSeek V3.2

DeepSeek

中国

MiniMax M2.7

MiniMax

中国

Kimi K2.5

Moonshot

中国

Qwen 2.5 72B

Alibaba

中国

各KUは個別に検証可能です: npx @veritasacta/verify receipt.json

エコシステム統合

プロジェクト

スター数

統合内容

ステータス

Microsoft Agent Governance Toolkit

600+

Cedarポリシーブリッジ + レシート署名

マージ済み (PR #667)

Mission Control

3,700+

MCP監査パイプライン用Ed25519レシート署名

PR #556 提出済み

Assay

証拠ソースとしての署名済みレシート

活発な議論 (#1029)

Hermes Agent

24,500+

スキル実行の暗号学的監査証跡

Issue #5041

DeerFlow

57,600+

永続化レイヤーの暗号学的整合性

議論 #1855

Pro-Workflow

1,500+

MCP設定の推奨

PR #41

Zeroshot

1,400+

バリデーター判定用の暗号学的レシート

Issue #464

標準と知的財産

  • IETF Internet-Drafts:

  • 特許状況: 設定可能な開示、ツール呼び出しゲートウェイ、エージェントマニフェスト、ポータブルIDを備えた決定レシートをカバーするオーストラリアの仮特許4件が申請中 (2025-2026)

  • 検証: Apache-2.0 — npx @veritasacta/verify --self-test

  • Microsoft AGT統合: PR #667 — Agent Governance Toolkit用Cedarポリシーブリッジ

関連リポジトリ

リポジトリ

説明

VeritasActa/Acta

争議可能な公開記録のためのオープンプロトコル (Apache-2.0)

VeritasActa/drafts

IETF Internet-Draftソースファイル

ScopeBlind/examples

統合例: Claude Codeフック、Express API、MCPサーバー署名

@veritasacta/verify

オフラインレシート検証ツール (Apache-2.0)

@scopeblind/passport

エージェントID SDK (Apache-2.0)

protect-mcp-adk

Google ADKレシート署名プラグイン (MIT, Python)

貢献

Issueやプルリクエストを歓迎します。重要な変更を行う前に、まずIssueを開いてください。

  • バグ報告: protect-mcpのバージョン、Node.jsのバージョン、再現手順を含めてください

  • Cedarポリシー: 再利用可能なポリシーは policies/cedar/ ディレクトリへのPRを通じて共有してください

  • 統合例: ScopeBlind/examples に追加してください

ライセンス

MIT — 制限なしで自由に使用、変更、配布、構築が可能です。

scopeblind.com · npm · veritasacta.com · IETF Drafts

-
security - not tested
A
license - permissive license
-
quality - not tested

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ScopeBlind/scopeblind-gateway'

If you have feedback or need assistance with the MCP directory API, please join our Discord server