scopeblind-mcp について
scopeblind-mcpのREADMEが説明する`protect-mcp`は、MCPツール呼び出しを監視・制御するローカルstdioプロキシです。既存サーバーにツール別ポリシーと監査可能な判断記録を追加する用途を想定し、このリポジトリでは開発先がScopeBlind/scopeblind-gatewayに移ったと記載されています。
主な機能
- 01シャドーモードで呼び出しを記録して許可
- 02ツール別のブロックとレート制限
- 03最低ティアのポリシーチェック
- 04任意のEd25519署名付きレシート
- 05構造化された判断ログ
- 06レシートのオフライン検証
活用シーン
- 01ポリシー適用前にツール呼び出しを観察
- 02特定のMCPツールをブロックまたはレート制限
- 03監査用に検証可能な判断を記録
- 04既存のstdio MCPサーバーをプロキシ
MCP 対応
MCPクライアントと既存のstdio MCPサーバーの間で動作し、`tools/call`を傍受して他のMCPメッセージを転送します。シャドーモードでは呼び出しを記録して許可し、設定したポリシーでツール別ルールを適用できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
4掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| url | string | はい | スキャンするAPIエンドポイントのURL(例:https://api.example.com/v1/signup) |
詳細
⚠️ このリポジトリは移転しました。 現在の開発は ScopeBlind/scopeblind-gateway で継続しています。
この個人フォークは、正規のリポジトリより古い可能性があります。課題、プルリクエスト、最新のコードについては、組織のリポジトリをご利用ください。
protect-mcp
MCP サーバー向けセキュリティゲートウェイです。デフォルトではシャドウモードでログを記録し、ツールごとのポリシー、任意のローカル Ed25519 レシート、検証しやすい監査出力を提供します。
現在の CLI の使い方: 任意の stdio MCP サーバーを透過的なプロキシとしてラップします。シャドウモードでは、すべての tools/call リクエストを記録し、すべてをそのまま通します。ポリシーファイルを追加すると、ツールごとのルールを適用できます。protect-mcp init を実行してローカル署名キーと設定を生成すると、ゲートウェイで署名済みレシートも出力できるようになります。
クイックスタート
# Wrap an existing OpenClaw / MCP config into a usable pack
npx @scopeblind/passport wrap --runtime openclaw --config ./openclaw.json --policy email-safe
# Shadow mode — log every tool call, enforce nothing
npx protect-mcp -- node my-server.js
# Generate keys + config template for local signing
npx protect-mcp init
# Shadow mode with local signing enabled
npx protect-mcp --policy protect-mcp.json -- node my-server.js
# Enforce mode
npx protect-mcp --policy protect-mcp.json --enforce -- node my-server.js
# Export an offline-verifiable audit bundle
npx protect-mcp bundle --output audit.json
機能
protect-mcp は stdio プロキシとして、MCP クライアントとサーバーの間に配置されます。
MCP Client ←stdin/stdout→ protect-mcp ←stdin/stdout→ your MCP server
tools/call の JSON-RPC リクエストをインターセプトし、以下を行います。
- シャドウモード(デフォルト):すべてのツール呼び出しを記録し、すべてをそのまま通します
- 強制モード:
block、rate_limit、min_tierなどのツールごとのポリシールールを適用します - 任意のローカル署名:署名が設定されている場合、構造化ログとともに Ed25519 署名済みレシートを出力します
その他のすべての MCP メッセージ(initialize、tools/list、通知)は、透過的に通過します。
現在提供されている機能
- ツールごとのポリシー — 破壊的なツールをブロックし、高コストなツールにレート制限を設定し、最低ティアの要件を指定できます
- 構造化された判定ログ — すべての判定が
[PROTECT_MCP]とともにstderrに出力されます - 任意のローカル署名済みレシート —
signing.key_pathを含むポリシーを指定して実行すると生成され、.protect-mcp-receipts.jsonlに保存されます。また、http://127.0.0.1:9876/receiptsで公開されます - オフライン検証 —
npx @veritasacta/verifyでレシートまたはバンドルを検証できます - アカウント不要 — ローカルキー、ローカルポリシー、ローカルプロセスで動作します
現在の機能上の制限
導入やユーザーへの説明の前に、次の点をご確認ください。
- 署名は、単独の
npx protect-mcp -- ...の実行経路では自動的に行われません。 この経路ではシャドウモードで判定を記録します。ローカル署名を行うには、npx protect-mcp initを実行してから、生成されたポリシーファイルを指定してゲートウェイを起動してください。 - ティアを考慮したポリシーチェックは利用できますが、マニフェストの受け入れ判定はデフォルトの CLI/stdio の実行経路には組み込まれていません。 ホスト統合からプログラムで受け入れ API を呼び出さない限り、CLI はセッションを
unknownに設定します。 - 現在、認証情報の設定では、環境変数を参照する認証情報の指定を検証し、認証情報のラベルをログ/レシートに記録します。 任意の stdio ツールへの汎用的な呼び出しごとの注入はアダプターに依存し、デフォルトのプロキシ経路では実行されません。
- 外部 PDP アダプターと監査バンドル用ヘルパーは、エクスポート済みユーティリティとして利用できます。 ただし、デフォルトの CLI 経路にはまだ完全には組み込まれていません。
ポリシーファイル
{
"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
},
"credentials": {
"internal_api": {
"inject": "env",
"name": "INTERNAL_API_KEY",
"value_env": "INTERNAL_API_KEY"
}
}
}
ポリシールール
| フィールド | 値 | 説明 |
|---|---|---|
block | true | このツールを明示的にブロックします |
require | "any"、"none" | 基本的なアクセス要件です |
min_tier | "unknown"、"signed-known"、"evidenced"、"privileged" | ホストが受け入れ状態を設定する場合に必要な最低ティアです |
rate_limit | "N/unit" | レート制限です(例:"5/hour"、"100/day") |
ツール名は完全一致します。ワイルドカードのフォールバックには "*" を指定します。
MCP クライアントの設定
Claude Desktop
claude_desktop_config.json に追加します。
{
"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 オプション
protect-mcp [options] -- <command> [args...]
protect-mcp init
Commands:
init Generate Ed25519 keypair + config template
status Show decision stats and local passport identity
digest Generate a local human-readable summary
receipts Show recent persisted signed receipts
bundle Export an offline-verifiable audit bundle
Options:
--policy <path> Policy/config JSON file
--slug <slug> Service identifier for logs/receipts
--enforce Enable enforcement mode (default: shadow)
--verbose Enable debug logging
--help Show help
プログラムから利用できるフック
このライブラリでは、デフォルトの CLI 経路にはまだ組み込まれていないプリミティブも公開しています。
import {
ProtectGateway,
loadPolicy,
evaluateTier,
meetsMinTier,
resolveCredential,
initSigning,
signDecision,
queryExternalPDP,
buildDecisionContext,
createAuditBundle,
} from 'protect-mcp';
以下を追加する場合にご利用ください。
- セッション開始前のマニフェスト受け入れ判定
- 外部 PDP(OPA、Cerbos、または汎用 HTTP ウェブフック)
- カスタムの認証情報ブローカー連携
- 独自のレシートストアを利用した監査バンドルのエクスポート
意思決定ログとレシート
各ツール呼び出しは、構造化された JSON を stderr に出力します。
[PROTECT_MCP] {"v":2,"tool":"read_file","decision":"allow","reason_code":"observe_mode","policy_digest":"none","mode":"shadow","timestamp":1710000000}
署名が設定されている場合は、署名付きレシートが続けて出力されます。
[PROTECT_MCP_RECEIPT] {"v":2,"type":"decision_receipt","algorithm":"ed25519","kid":"...","issuer":"protect-mcp","issued_at":"2026-03-22T00:00:00Z","payload":{"tool":"read_file","decision":"allow","policy_digest":"...","mode":"shadow","request_id":"..."},"signature":"..."}
CLI で検証する場合:npx @veritasacta/verify receipt.json
ブラウザーで検証する場合:scopeblind.com/verify
監査バンドル
このパッケージは、自己完結型の監査バンドルを作成するヘルパーを提供します。
{
"format": "scopeblind:audit-bundle",
"version": 1,
"tenant": "my-service",
"receipts": ["..."],
"verification": {
"algorithm": "ed25519",
"signing_keys": ["..."]
}
}
自分で収集した署名付きレシートを createAuditBundle() で囲んで使用してください。
基本方針
- まずはシャドーモードで。 エージェントに何かを強制する前に、エージェントの動作を確認します。
- ダッシュボードだけのログよりレシートを。 署名付き成果物は、個別に検証できる必要があります。
- 主張は控えめに。 デフォルトの CLI パスでは、長期的なアーキテクチャでサポートする予定の機能すべてにはまだ対応していません。
- 既存の認証の上に重ねます。 制御と証拠を追加するためだけに、現在のスタックを取り除く必要はありません。
インシデントに基づくポリシーパック
protect-mcp に付属し、それぞれが実際の攻撃を防ぎます。
| ポリシー | インシデント | OWASP カテゴリー |
|---|---|---|
clinejection.json | CVE-2025-6514:MCP OAuth プロキシの乗っ取り(43.7 万環境) | 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 |
npx protect-mcp --policy node_modules/protect-mcp/policies/clinejection.json -- node server.js
OWASP Agentic Top 10 の完全な対応表:scopeblind.com/docs/owasp
BYOPE:外部ポリシーエンジン
OPA、Cerbos、Cedar(AWS AgentCore)、および汎用 HTTP エンドポイントをサポートします。
{
"policy_engine": "hybrid",
"external": {
"endpoint": "http://localhost:8181/v1/data/mcp/allow",
"format": "cedar",
"timeout_ms": 200,
"fallback": "deny"
}
}
標準と知的財産
- IETF インターネットドラフト:draft-farley-acta-signed-receipts-00 — マシン間アクセス制御のための署名付き意思決定レシート
- 特許の状況:開示範囲を設定できる意思決定レシート、ツール呼び出しゲートウェイ、エージェントマニフェスト、ポータブル ID を対象とするオーストラリアの仮特許 4 件を申請中(2025~2026 年)
- 検証:MIT ライセンス —
npx @veritasacta/verify --self-test
ライセンス
MIT — 制限なく自由に使用、変更、配布、活用できます。
scopeblind.com · npm · GitHub · IETF Draft
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。