mcpField
S
scopeblind-mcp

scopeblind-mcp

ローカル
github.com/tomjwxfセキュリティ1129 週間前に更新

scopeblind-mcp について

scopeblind-mcpのREADMEが説明する`protect-mcp`は、MCPツール呼び出しを監視・制御するローカルstdioプロキシです。既存サーバーにツール別ポリシーと監査可能な判断記録を追加する用途を想定し、このリポジトリでは開発先がScopeBlind/scopeblind-gatewayに移ったと記載されています。

主な機能

  1. 01シャドーモードで呼び出しを記録して許可
  2. 02ツール別のブロックとレート制限
  3. 03最低ティアのポリシーチェック
  4. 04任意のEd25519署名付きレシート
  5. 05構造化された判断ログ
  6. 06レシートのオフライン検証

活用シーン

  1. 01ポリシー適用前にツール呼び出しを観察
  2. 02特定のMCPツールをブロックまたはレート制限
  3. 03監査用に検証可能な判断を記録
  4. 04既存のstdio MCPサーバーをプロキシ

MCP 対応

MCPクライアントと既存のstdio MCPサーバーの間で動作し、`tools/call`を傍受して他のMCPメッセージを転送します。シャドーモードでは呼び出しを記録して許可し、設定したポリシーでツール別ルールを適用できます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"tomjwxf-scopeblind": {
"command": "npx",
"args": [
"-y",
"scopeblind-mcp"
]
}
}
}
起動コマンドnpx -y scopeblind-mcp

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npmscopeblind-mcp1.0.2

ツール

4

掲載時のツール一覧 · 2 週間前に更新

パラメーター型必須説明
urlstringはいスキャンする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"
    }
  }
}
ポリシールール
フィールド値説明
blocktrueこのツールを明示的にブロックします
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.jsonCVE-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

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。