mcpField
M
MCP-Bastion

MCP-Bastion

ローカル
github.com/vaquarkhanセキュリティ7今日更新

MCP-Bastion について

MCP-Bastionは、MCPサーバー向けのローカルセキュリティミドルウェアです。エージェントの権限や実行時の挙動を管理するチーム向けに、ツールカタログのスキャン、設定監査、実行時の制御を提供し、外部の安全性APIを必要としません。

主な機能

  1. 01エージェント識別とツール単位のアクセス制御
  2. 02インジェクションの阻止と個人情報のマスキング
  3. 03ツールカタログのスキャンとクライアント設定の監査
  4. 04呼び出し回数、時間、支出の制限
  5. 05監査ログとセキュリティ状況ダッシュボード

活用シーン

  1. 01エージェントごとに利用可能なツールを制限
  2. 02デプロイ前のツールカタログ確認
  3. 03ローカルMCPクライアントの権限確認
  4. 04過剰な呼び出しとデータ漏えいの抑制

MCP 対応

MCPサーバーをミドルウェアで保護し、ツール呼び出し、リソース読み取り、プロンプト取得などのメソッドを検査します。ツールカタログのスキャンとローカルMCPクライアント設定の監査にも対応します。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"vaquarkhan-mcp-bastion": {
"command": "uvx",
"args": [
"mcp-bastion-python"
]
}
}
}
起動コマンドuvx mcp-bastion-python

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

パッケージ
pypimcp-bastion-python5.1.0

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

MCP-Bastion

README · Documentation · Demos · Dashboard / Observability · Multi-language · Benchmark · License · Security

MCP-Bastion  -  Fortifying the Model Context Protocol

PyPI version PyPI downloads (mcp-bastion-python) Ecosystem PyPI downloads Python CI Docker proxy (GHCR) Docker dashboard (GHCR) Docs Demos Benchmark deck Multi-language License: Source Available Website

Current release: 5.1.0 · Docker v5.1.0 · 26 PyPI packages · CHANGELOG

移動先リンク
ドキュメント/デモhttps://vaquarkhan.github.io/MCP-Bastion/ · 製品紹介動画 · インテグレーション
ベンチマーク/セキュリティ資料(PDF)MCP-Security-Deck-v3.pdf · 直接ダウンロード
ドキュメントハンドブックhttps://vaquarkhan.github.io/MCP-Bastion/guide/handbook.html
デモ(攻撃、ダッシュボード、ペイロード、全言語)https://vaquarkhan.github.io/MCP-Bastion/guide/demos.html
ダッシュボードとオブザーバビリティ(OTEL は任意)https://vaquarkhan.github.io/MCP-Bastion/guide/observability.html
多言語スイートhttps://vaquarkhan.github.io/MCP-Bastion/guide/multi-language.html · スイートのリポジトリ
MCP Test Harness(姉妹製品 — MCP サーバー向け CI ゲート)https://github.com/vaquarkhan/mcp-test-harness · Bastion E2E と併用
ドキュメントハブhttps://vaquarkhan.github.io/MCP-Bastion/guide/
実測ベンチマーク(再現可能)docs/BENCHMARKS.md

MCP エージェント向けゼロトラスト制御プレーンです。 エージェントはデータベース、API、シェルツールを呼び出せます。不適切なプロンプトひとつで個人を特定できる情報(PII)が漏えいする可能性があります。暴走したループひとつで、数分のうちに API の予算を使い果たすこともあります。また、ID の境界がないサーバー上で 3 つのエージェントが動いていれば、権限代理人の混乱によるインシデントがいつ起きてもおかしくありません。MCP-Bastion は MCP サーバーをローカルのガードレールで保護します。エージェント IAM、サプライチェーンチェックサム、インジェクションのブロック、PII の秘匿化、ウォレット枯渇防止の上限設定を備え、オーバーヘッドは5ms 未満で、サードパーティの安全性 API は不要です。

基本方針: インフラ不要で、既存環境にそのまま導入できるライブラリであり続けることです。ゲートウェイそのものではなく、あらゆるゲートウェイと連携するガードレールの中核を目指します。戦略:docs/ZERO_INFRA_STRATEGY.md。

実測による証明(オフライン、再現可能)

スライド資料(評価担当者との共有用): MCP-Security-Deck-v3.pdf — セキュリティと FinOps の証明資料一式(直接ダウンロード)。

ゲート結果再現方法
インジェクションのヒューリスティック検知公開コーパスで攻撃を100%ブロック · 良性データの誤検知は0%pytest tests/test_injection_efficacy.py · docs/BENCHMARKS.md
ツールカタログのスキャンインジェクション/シークレット/ホモグリフ/シャドーツール/弱いスキーマのネストを検査mcp-bastion scan examples/fixtures/tools-poisoned.json
FinOps出力予算を最大**約99.7%削減 · 検出トークンを約85%**削減docs/BENCHMARKS.md
トキシックフローのテイントセッション内の PII/シークレットから、URL/メール引数を持つ外部送信ツールへのフローをプロセス内でブロックbastion.yaml の toxic_flow · docs/THREAT_MODEL.md

MCP-Bastion:スキャン → テスト → 強制適用 — 3つすべてを備えるツールはほかにありません

スキャン → テスト → 強制適用(3つすべてを備えるツールはほかにありません)
フェーズ内容コマンド
スキャンデプロイ前にツール定義を静的チェック(インジェクション、シークレット、ホモグリフ、フィンガープリントのドリフト、スキーマの前提条件)mcp-bastion scan tools.json
監査ローカルの MCP クライアント設定に関するリスクレポート(過剰に広い権限のツール、常時有効な認証情報、ファイルシステムサーバー)mcp-bastion audit
テストbastion.yaml に対する統合レッドチームテスト + CI で MCP Test Harness と組み合わせmcp-bastion redteam · docs/BASTION_AND_TEST_HARNESS.md
強制適用すべての MCP メソッドに対するランタイムミドルウェアsecure_fastmcp(mcp) または bastion.yaml
scan と audit — 入力も、確認する内容も異なります
mcp-bastion scanmcp-bastion audit
対象ツールカタログ(tools.json / tools/list のエクスポート)ディスク上の MCP クライアント設定(mcp.json、Claude Desktop の設定など)
確認すること「この ツールのメタデータは汚染されている、または変更されているか?」「このマシンで、エージェントがすでにアクセスできるものは何か?」
検出するもの説明文へのインジェクション、スキーマ内のシークレット、ホモグリフ、フィンガープリントのずれ、制約が弱い、または無制限な inputSchema の形状過剰に広いツール許可(*)、env 内の常時有効な認証情報、ファイルシステムサーバーの痕跡
実行するタイミングサーバーのツールをリリースまたは接続する前(CI/デプロイ前)ノート PC またはワークスペースのポリシーを厳格化する前(ローカルの健全性確認)

両者は相互に補完します。まずホストの攻撃対象領域を audit し、次に接続するツールを scan します。どちらも実行時の enforce に代わるものではありません。

mcp-bastion scan は、エージェントのスキルファイルをオフラインでチェックする --skills DIR も受け付けます。依存関係の CVE を確認するには、mcp-bastion osv-refresh の後に mcp-bastion osv-scan を実行します(デフォルトではローカル DB を使用し、--online はオプトインで、フェイルオープンです)。

# 1. Scan a tools/list export (or hand-authored catalog) - client-side, no cloud
mcp-bastion scan examples/fixtures/tools-poisoned.json
mcp-bastion fingerprint tools.json -o baseline.json
mcp-bastion scan tools.json --baseline baseline.json --format json -o report.json
mcp-bastion scan --skills ./skills/

# 1b. Audit local MCP client configs (what agents can already reach)
mcp-bastion audit --root .
mcp-bastion audit --format json -o risk-audit.json --fail-on none

# 2. Test policy effectiveness
mcp-bastion redteam --config bastion.yaml

# 3. Enforce at runtime (filesystem path guards when agents can read local files)
#    merge examples/bastion-filesystem-guards.yaml into bastion.yaml
mcp-bastion validate --config bastion.yaml

mcp-bastion scan CLI — インジェクション、シークレット、ホモグリフ、フィンガープリントのずれを検出し、A〜F の評価を表示

mcp-bastion scan — クライアント側の静的スキャナー。クラウド不要、ML のダウンロード不要

mcp-bastion audit CLI — クライアント設定、過剰に広いツール、常時有効な認証情報を対象にしたローカル MCP リスク監査

mcp-bastion audit — enforce の前にローカルの MCP 攻撃対象領域を把握。ネットワーク不要、Vault 不要

MCP-Bastion クライアント側スキャンスイート — スキーマの前提条件、スキルファイル、OSV による依存関係の CVE 照合

スキーマ · スキル · OSV — デフォルトでオフライン。ログインサーバー不要、ホームへの通信なし

MCP-Bastion ダッシュボードの紹介:セキュリティ態勢、事前検証、OWASP、攻撃マトリックス、フォレンジック、実績と未然に防げた場合の FinOps

機能紹介

MCP-Bastion ダッシュボードのウォークスルー GIF

ダッシュボードのウォークスルー

MCP-Bastion ダッシュボードのコラージュ — セキュリティ態勢、OWASP の対応状況、攻撃マトリックス、実行時 KPI

リアルタイムのセキュリティ態勢と実行時ダッシュボード — ローカルのみ、インフラ不要。mcp-bastion dashboard --demo · ダッシュボードのドキュメント · 以前の Vimeo ウォークスルー

MCP-Bastion:MCP メソッドを全面的にカバーし、複数レプリカのデプロイで Redis の共有状態を利用

MCP-Bastion:検出、Redis を利用した FinOps キー、エージェントの安定性を備えた、ステートフルとステートレスのハイブリッド MCP トランスポート

MCP-Bastion 3.2 のデュアルパス:1 つのプロキシで、従来のステートフルセッションと SEP-2575 対応のステートレス状態ハンドルを利用

ステートフル/ステートレスのハイブリッド MCP(3.2.0) - オプトインの mcp_transport により、従来のセッションを損なうことなく SEP-2575 に対応できます。 アーキテクチャ · チュートリアル

MCP-Bastion を選ぶ理由(2026 年の MCP セキュリティ危機への対応)

NSA が最近発表した MCP セキュリティに関するサイバーセキュリティ情報シートや OWASP MCP Top 10 が指摘するように、従来の AppSec ツールではエージェント型ワークフローを保護できません。問題となっているのは、ランタイムガバナンスと混乱した代理人の問題です。つまり、複数の AI エージェントが、ネイティブな ID 境界のない 1 つの MCP サーバーを共有しています。公開レジストリでのタイポスクワッティングや未検証サーバーの存在により、サプライチェーンの検証は経営層レベルの懸念事項となっています。

MCP-Bastion はエージェントのゼロトラスト制御プレーンとして機能し、本番環境における最も困難な課題に対応します。

  1. 混乱した代理人(エージェント IAM): ID を認識するルーティングにより、API トークンをエージェント IDにひも付け、ツールごとに厳格な RBAC を適用します。カスタマーサポートボットは search_docs を呼び出せますが、delete_user は呼び出せません。
  2. サプライチェーンとタイポスクワッティングへの対策: 暗号学的な SHA-256 マニフェスト検証により、MCP サーバーのアーティファクトが承認済みチェックサムから変わった場合、トラフィックを遮断します。
  3. データ流出とインジェクションの防止: PromptGuard のヒューリスティックと ML により、ジェイルブレイクをローカルでブロックします。さらに Presidio が、モデルのコンテキストウィンドウに届く前に送信データ内の PII を除去します。
エージェントポリシーを定義する(bastion.yaml)
# Stop the Confused Deputy Problem  -  Identity-Aware Routing
agent_iam:
  enabled: true
  token_metadata_key: bastion_agent_token
  agents:
    - id: customer_support_bot
      token_env: BASTION_TOKEN_SUPPORT
      allowed_tools: ["search_docs", "get_ticket_status"]
      blocked_tools: ["execute_sql", "delete_user"]
      rate_limit:
        max_iterations: 5

# Supply-chain checksums before any tool executes
server_verification:
  enabled: true
  on_mismatch: block
  base_path: .
  manifest_path: mcp-server.manifest.json

信頼できるビルドの後にマニフェストを生成します:mcp-bastion manifest server.py pyproject.toml -o mcp-server.manifest.json

詳細:docs/RUNTIME_GOVERNANCE.md · docs/ENTERPRISE_RUNTIME_CONTROLS.md(3.0 の柱)

ランタイムガバナンスの柱(3.0.0 以降、現在のバージョンは 5.1.0)

本番環境の MCP ランタイム向けの、オプトイン方式のエンタープライズ制御機能です。デフォルトではすべて オフ のため、有効にするまでは 2.x の動作が変わりません。

柱設定機能
漏えいカナリアcanary_goallockコンテキストにセッショントークンを設定し、それを反映したツール引数をブロックします(-32025)
ATR YAML ルールatr_rulesコミュニティの脅威ルールを content_filter に統合します(-32027)
ローカル LLM スキャナーllm_scannerヒューリスティックの後に実行するオプションの Ollama 層です。フェイルオープンで動作します(-32026)
脅威インテリジェンスフィードthreat_feedsリモートの正規表現パターンをバックグラウンドで更新します
自動リペーブauto_repaveしきい値に基づいて封じ込めます(カナリアをローテーションし、スコープをリセット)
シークレットのマスキングsecrets.redact_patternsツール出力に対して replace / hash / mask / remove を実行します
監視モードmode: observe拒否せずに would_block をログに記録します
mode: enforce

canary_goallock:
  enabled: true

atr_rules:
  enabled: true
  rules_dir: ./atr-rules

secrets:
  redact_patterns:
    - rule: "sk-[A-Za-z0-9]{20,}"
      strategy: mask

CLI によるコンプライアンス証跡:mcp-bastion report --framework soc2 --audit ./audit.jsonl

MCP-Bastion 3.0 のランタイムガバナンスの柱

漏えいカナリアがツール引数からのコンテキスト漏えいをブロック

MCP サーフェス全体への対応と水平スケーリング(2.0.0)

以前は、ほとんどの柱が tools/call でのみ動作していました。2.0.0 ではパイプラインが resources/read、prompts/get、sampling/createMessage、elicitation/create にも拡張され、MCP サーフェスの他の部分に残っていた漏えい/インジェクションの隙間を解消します。

複数レプリカでデプロイする場合は、state_backend.type: redis を有効にしてください。これにより、レート制限、リプレイ防止用ノンス、コスト予算、セッションごとのツールスコープがポッド間で共有されます(デフォルトの memory は単一プロセス用です)。

state_backend:
  type: redis
  redis_url: redis://127.0.0.1:6379/0

pip install mcp-bastion-python[redis] · 詳細:docs/MCP_SURFACE_AND_SCALE.md

2.0.0 で採用された本番環境向けの強化策

MCP ゲートウェイのエコシステム全体で実証されたパターンを、ミドルウェアスタックに組み込んでいます。

機能内容
JSONPath 引数ガード実行前に ツールのグロブパターン + JSONPath + 正規表現 によってツール引数をブロックまたはマスキングします(argv 配列による回避を考慮)。pip install mcp-bastion-python[policy]
RBAC fnmatch グロブread_* / files_* のようなロール権限に対して、具体性を考慮したマッチングを行います
監査 JSONL + mcp-bastion tail追記専用のコンプライアンスログ。設定の audit.jsonl_path または mcp-bastion tail -p audit.jsonl を使用します
コストチェックポイント再起動後もセッションの合計コストを維持するための、オプションのディスク永続化機能です(cost_tracker.checkpoint_path、メモリバックエンドのみ)
コスト対応ポリシー(cost_policy)実行中の支出ルール:モデルの性能を下げる、検出フィルターを強制する、承認を必須にする、高コストな連鎖をブロックする
ガバナンス証明mcp-bastion attest export --session … - ポリシーハッシュと適用された制御を含む、署名付きセッションバンドルです
境界モードすべてのリクエストでプロキシ認証を必須にします(boundary_mode + edge_auth / agent_iam) - GATEWAY_BOUNDARY.md
ゲート不要の PromptGuardprompt_guard.use_ungated_default: true → ProtectAI DeBERTa 分類器(HF ゲート不要)
cost_policy:
  enabled: true
  rules:
    - when: { session_spend_pct_gte: 80 }
      action: degrade_model
      target_model: gpt-4o-mini
    - when: { session_spend_pct_gte: 95 }
      action: require_approval
  expensive_chain:
    enabled: true
    max_projected_cost_usd: 1.0

governance:
  attestation_enabled: true

boundary_mode:
  enabled: true   # requires edge_auth or agent_iam

argument_guards:
  enabled: true
  rules:
    - name: block_shell
      match: "run_*"
      arg: "$.command"
      pattern: "(rm\\s+-rf|curl\\s+.*\\|.*sh)"
      action: block

audit:
  jsonl_path: .bastion/audit.jsonl

cost_tracker:
  checkpoint_path: .bastion/cost-checkpoint.json

MCP-Bastion のゼロトラストランタイムガバナンス:MCP サーフェス全体、Redis スケーリング、Agent IAM、OWASP を超える範囲への対応

### 開発者が導入する理由
必要なもの…MCP-Bastion が提供するもの…
書き換えずにガードレールを導入そのまま使えるミドルウェア:secure_fastmcp(mcp) または単一の bastion.yaml
法務チームも受け入れられるプライバシーPromptGuard と Presidio はプロセス内で実行され、データはネットワーク内にとどまります
エージェントの暴走と予算超過を防止デフォルトで有効: セッションあたり 15 回のツール呼び出し、タイムアウト 60 秒、トークン予算 50k。任意: ツールごとの上限、セッション/日ごとの USD 上限、レスポンスのオフロード
コンテキストを縮小してトークンの消費を削減オプトイン: 検出フィルター(tools/list のツール数を削減)、出力予算+セッションのオフロード(過大なツール出力を最大約 99% 削減)、語彙的類似性キャッシュ - 測定済みのベンチマーク
今すぐ導入できるものPyPI、npm、GHCR の Docker、FastMCP、TypeScript ラッパー、CI 検証、ライブダッシュボード
チームでレビューできるポリシーGit で管理する bastion.yaml、ホットリロード、OWASP に準拠した制御 (docs/PILLARS.md)
FinOps と不正利用の防止(ウォレット枯渇攻撃)

エージェントは、高額なツール(検索、LLM 呼び出し、有料 API)を請求額が急増するまで繰り返し実行することがあります。Bastion は各 tools/call の前に、MCP 境界でセッション単位の FinOps 制御を適用します。

攻撃パターンBastion の動作デフォルト
無限のツールループセッションあたりの最大反復回数に達した後、ブロックします有効(15 回の呼び出し)
長時間セッションの悪用セッションをタイムアウトします有効(60 秒)
トークン/コンテキスト予算の枯渇セッションごとにトークン予算を設定し、任意で出力をオフロードします有効(50k トークン)。オフロードはオプトイン
同じツールへの過剰な呼び出しツールごとの呼び出し上限(max_per_tool)を設定しますオプトイン
有料 API の支出超過コストトラッカーで USD 上限を設定しますオプトイン
不安定または悪意のあるツールの連鎖障害後にサーキットブレーカーを開きます設定例ではオプトイン
1 つのセッション内でのツールの乱立セッションあたりの異なるツール数に上限を設定しますオプトイン

ブロックされた呼び出しは標準エラー(RateLimitExceededError -32002、TokenBudgetExceededError -32003、CostBudgetExceededError -32009)を返し、ダッシュボードと監査ログに表示されます。docs/ATTACK_PREVENTION.md を参照してください。

トークン削減とコスト節約

Bastion は、予算超過を防ぐだけでなく、各ターンでモデルに届くツール出力とツールカタログのトークン数も削減します(ユーザーが入力する LLM プロンプトのテキスト自体は対象外です)。

節約の方法機能デフォルト
ディスカバリーフィルター未使用のツールを tools/list から非表示にし、エージェントがコンテキストに保持するツールカタログを小さくします(ツール数を 20 から 3 にした場合、ベンチマークではカタログのトークン数を約 85% 削減)オプトイン
出力上限とオフロード大きすぎるツールの応答を切り詰め、残りをセッション内に保存して bastion_get_offloaded で取得できるようにします(5 万トークンのダンプで最大約 99.7%、すでに上限内の場合は 0%)オプトイン
語彙的類似度キャッシュクエリがほぼ同一の場合、重複するツール呼び出しを省略します(単語の Jaccard 類似度を使用。埋め込みベースの「意味」検索ではありません)オプトイン
トークン予算の上限セッションのトークン消費量が上限を超える前に強制停止します有効(5 万トークン)
USD のセッション/日次上限コストトラッカーで金額の上限を設定しますオプトイン

誠実に示せる「プロンプトを X% 削減」という単一の数値はありません。節約効果は入力によって異なります。再現可能な pytest ベンチマークと実測値については、docs/BENCHMARKS.md をご覧ください。

MCP-Bastion のベンチマーク:RBAC のツールレベルマトリックス、大きなツール応答で最大 99% の出力上限による削減、ディスカバリーフィルターによるカタログの節約、語彙的キャッシュのヒット/ミス

再現方法:PYTHONPATH=src python -m pytest tests/test_benchmarks_finops_rbac.py -v · レポートの再生成:python scripts/generate_benchmark_report.py

各ターンのツール出力とカタログのノイズが減れば、LLM の入力コストも下がります。プロンプトをサードパーティーの最適化 API に送信する必要はありません。

要点: MCP によって、すべてのサーバーが一夜にしてエージェントゲートウェイになりました。Bastion は、そのゲートウェイを本番環境で安全に運用するためのファイアウォールです。3 行のコード、または 1 つの設定ファイルで導入できます。

OWASP MCP Top 10 + 本番環境での攻撃

OWASP MCP Top 10 の10項目すべてのリスクを、MCP の境界で軽減します(以下の制御を参照)。Bastion は、OWASP が個別に挙げていない FinOps と不正利用のパターンもブロックします。

MCP-Bastion:OWASP MCP Top 10、FinOps の不正利用攻撃、トークン削減とコスト節約、16 のセキュリティ柱

OWASP MCP Top 10(すべてに対応)

IDリスクBastion の制御
MCP01トークン/シークレットの漏えいPII のマスキング、監査証跡、送信レスポンスのスキャン
MCP02権限昇格RBAC、エージェント IAM、レート制限、コスト上限、セッションごとのツール範囲
MCP03ツールポイズニングプロンプトガード、コンテンツフィルター、レスポンススキャン、メタデータガード、グラウンディングガード
MCP04サプライチェーンサーキットブレーカー、server_verification のチェックサム、doctor CLI、mcp-bastion manifest、監査
MCP05コマンドインジェクションプロンプトガード、コンテンツフィルター、スキーマ検証
MCP06意図のすり替えレート制限、リプレイガード、ツールごとの上限、セマンティックファイアウォール
MCP07認証の不備RBAC、エッジ認証、エージェント IAM(エージェントごとのトークン)
MCP08監査とテレメトリー監査ログ、ダッシュボード、Prometheus、OTEL、アラート
MCP09シャドー MCP サーバー一元管理された bastion.yaml ポリシー、メトリクス、検出フィルター
MCP10コンテキストインジェクションPII のマスキング、レスポンススキャン、出力予算、検出フィルター

FinOps と不正利用の攻撃(OWASP の範囲外)

攻撃制御
ウォレット枯渇攻撃イテレーション上限、トークン予算、コストトラッカー、出力予算
ツールの暴走ループセッションタイムアウト、レートリミッター、サーキットブレーカー
特定ツールへの過剰な呼び出しmax_per_tool セッション上限
API 支出の暴走セッション/日ごとの USD 上限
セッション内でのツールの過剰な増加セッションごとの個別ツール数の上限
リプレイ攻撃リプレイガード + ノンス

トークン削減とコスト節約

手段制御ベンチマーク
コンテキスト内のツールカタログを縮小tools/list の検出フィルターカタログのトークンを約85%削減(20→3ツール) - BENCHMARKS.md
各ターンのツール出力を削減出力予算、セッションオフロード、bastion_get_offloaded過大なダンプでは最大約99.7%削減。予算内なら0%
冗長な呼び出しを削減字句類似性キャッシュ(Jaccard 係数)完全一致はヒット。類似度0.9の言い換えはミス
支出を予測可能にトークン予算の上限、セッション/日ごとの USD 上限セッションのデフォルト値を適用

詳しいマッピングと統合フック:docs/SECURITY_OBSERVABILITY.md · docs/ATTACK_PREVENTION.md

3 行で MCP サーバーを保護(FastMCP)
pip install mcp mcp-bastion-fastmcp
from mcp.server.fastmcp import FastMCP
from mcp_bastion_fastmcp import secure_fastmcp

mcp = FastMCP("My Server")
secure_fastmcp(mcp)  # wires prompt guard, PII redaction, rate limits into tools/call

ポリシーをコードとして管理する場合:bastion.yaml.example を bastion.yaml にコピーし、pip install mcp-bastion-python[policy] を実行します。

from mcp_bastion import build_middleware_from_config

middleware = build_middleware_from_config()  # loads bastion.yaml

その他の方法(TypeScript、CI 検証、Docker):docs/QUICK_START.md · docs/README.md · ウェブサイト

  • プロンプトインジェクション対策: 標準でヒューリスティックなジェイルブレイクをブロックします。Hugging Face へのアクセスを設定すると、Meta PromptGuard ML を利用できます。
  • PII のマスキング: Presidio が送信コンテンツ内の SSN、メールアドレス、電話番号をマスキングします。
  • ウォレット枯渇攻撃対策: トークンバケット、イテレーション上限、トークン予算、コスト追跡。
  • レスポンススキャン: ツール/リソースの送信テキストに含まれるジェイルブレイクパターンをブロックします。
  • 出力予算とグラウンディングガード: オプションでレスポンスの切り詰めとパスの検証を行います(オプトイン)。
仕組み

MCP-Bastion は MCP サーバー内でインプロセスに動作し、tools/call がデータベース、API、シェルツールに到達する前にすべてを検査します。その後、戻りの経路で機密データをマスキングします。

flowchart LR
  Agent["AI agent / LLM client"]
  Server["Your MCP server"]
  Bastion["MCP-Bastion<br/>middleware"]
  Tools["Tools & upstream APIs"]

  Agent -->|"JSON-RPC"| Server
  Server --> Bastion
  Bastion -->|"✓ allow / ✗ block"| Tools
  Tools -->|"raw result"| Bastion
  Bastion -->|"PII masked · audited"| Server
  Server --> Agent
3つの導入方法
flowchart TB
  Start(["Protect my MCP server"])
  Start --> FastMCP["FastMCP · Python<br/><code>secure_fastmcp(mcp)</code>"]
  Start --> Policy["Policy-as-code<br/><code>build_middleware_from_config()</code>"]
  Start --> TS["TypeScript<br/><code>wrapWithMcpBastion(server)</code>"]
  FastMCP --> Docs["docs/QUICK_START.md · path A"]
  Policy --> Yaml["bastion.yaml + CI validate"]
  TS --> Sidecar["Rate limit in-process · ML via sidecar"]

リリース: npm、PyPI、GHCR のビルド済み Docker については、DOCKER.md をご覧ください。コミュニティ: SUPPORT.md · CONTRIBUTING.md · FUNDING.md · セキュリティ: SECURITY.md。


主な機能

クリック不要のプロンプトインジェクション防止

Meta の PromptGuard モデルをローカルで統合し、悪意のあるペイロード、ジェイルブレイク、敵対的なトークン化を検出して、外部ツールに到達する前にブロックします。

個人情報の編集

Microsoft Presidio が送信されるツールの結果をスキャンし、個人情報をマスキングします(編集、置換、一般化)。

無限ループとウォレット枯渇の防止

状態を考慮したサイクル検出と、設定可能な FinOps トークンバケットアルゴリズムを実装し、暴走するエージェントを自動的に終了させて、API 請求額の大幅な超過を防ぎます。

100%ローカルで実行(データプライバシー)

すべてのセキュリティ分類とデータ編集は、サーバーのローカルメモリ空間内だけで行われます。機密データがサードパーティーによる安全性評価のために企業ネットワークの外に出ることはありません。

低レイテンシー

そのまま組み込めるミドルウェアで、オーバーヘッドは 5ms 未満です。

フレームワークとの統合

標準のミドルウェアを通じて、MCP SDK(TypeScript、Python)と FastMCP に接続します。ビジネスロジックを変更する必要はありません。

機能の全一覧

柱の定義: セキュリティ制御、bastion.yaml のセクション、およびダッシュボードの健全性行との関係については、docs/PILLARS.md に記載されています(あいまいな「柱の合計」数を避けるための正式なリファレンスです)。同じページには、1.0.16+ で復元された拡張機能(セマンティックファイアウォール、機密情報分類器、外部ポリシー、エッジ認証、ツール許可リスト、セッションスコープ、ツールメタデータガード、マルチテナント、監査ハッシュチェーン、料金フック、テレメトリーシンク、レッドチームおよびdoctor CLI など)、1.0.17+ の FinOps/コンテキストの柱(出力予算、検出フィルター、応答スキャン、グラウンディングガード)、およびランタイムガバナンス(エージェント IAM、サーバー検証。1.0.18+ で導入し、2.0.0 でリリース)が記載されています。

詳しい背景: docs/SECURITY_OBSERVABILITY.md では、OWASP MCP Top 10 との整合性、攻撃シナリオ、SIEM/ログ統合について説明しています。フレームワーク向けアドオン(LangChain、OpenAI、Bedrock、…)は、以下のフレームワーク統合に記載されています。

脅威の防止とコンテンツの安全性
機能利用できる機能
プロンプトインジェクション対策Meta PromptGuard がツール引数をスコアリングします。悪意のあるペイロードやジェイルブレイク形式のペイロードを実行前にブロックできます(ローカル推論、サードパーティー API 不使用)。
コンテンツフィルターシェル/コードの実行パターン、機密ファイルのパス、URLをブロックします。正規表現または部分文字列ルールによる許可リスト/拒否リストも任意で設定できます。
個人情報の編集Microsoft Presidio が、送信されるツール/リソースのテキストから多くの種類のエンティティ(SSN、メールアドレス、電話番号、カード、パスポート、IBAN、免許証など)を検出します。詳しくは Presidio のドキュメントをご覧ください。
アクセス制御、完全性、不正利用
機能内容
エージェント IAM(Confused Deputy)API トークンをエージェント IDに紐付け、エージェントごとに allowed_tools/blocked_tools、リソース URIの許可/ブロック、任意のレート制限を設定できます。これにより、サポートボットが管理者用ツールを呼び出したり、秘密のリソースを読み取ったりするのを防ぎます。docs/RUNTIME_GOVERNANCE.mdを参照してください。
MCP サーフェス全体のガード(2.0.0)resources/read、prompts/get、sampling/createMessage、**elicitation/create**に対応し、ツール呼び出しと同じインバウンド/アウトバウンドの保護を適用します(tools/callだけではありません)。docs/MCP_SURFACE_AND_SCALE.mdを参照してください。
分散状態(2.0.0)**state_backend: redis**により、レプリカ間でレート制限、リプレイ防止ノンス、コスト上限、セッションスコープを共有できます。pip install mcp-bastion-python[redis]
動作フィンガープリント(3.3.0、オプトイン)**behavior_fingerprint.enabled**により、エージェントごとのツール利用ベースラインからの逸脱やレート急増を検出します。デフォルトでは無効です。docs/BEHAVIOR_FINGERPRINT.mdを参照してください。
ハイブリッド MCP トランスポート(オプトイン)mcp_transportにより、ステートフルなセッションとステートレスな明示的状態ハンドル、リクエストごとのプロトコルバージョン、プロキシ検出カード、エージェント安定性モニターを利用できます。docs/HYBRID_MCP_TRANSPORT.mdを参照してください。
サーバー検証(サプライチェーン)SHA-256 マニフェストチェックサムを起動時および各tools/callで検証します。mcp-bastion manifestは、承認済みビルドの後に信頼済みマニフェストを生成します。
RBACリクエストメタデータから取得したロールに基づき、ツール単位で許可/拒否を設定できます。fnmatch グロブ(read_*)に対応し、bastion.yamlでは具体性を考慮してマッチングします。Agent IAM またはエッジ認証と併用してください。単独では、ロールの信頼性はmetadata["role"]を設定するものに依存します。ライブマトリックス →
引数ガード(2.0.0)スキーマ検証の前に、tools/callの引数に対してJSONPath + 正規表現によるブロック/秘匿化を行い、argv形式のペイロードにおけるシェルインジェクションや秘密情報の流出を防ぎます。
スキーマ検証ツールの実行前に、tools/callの引数をJSON Schemaに照らして検証します(不正な形式や回避の試みをブロックします)。
リプレイガードリプレイされたリクエストを拒否するためのノンス追跡機能です(require_nonceで必須にするか設定できます)。
レート制限トークンバケット方式の制限です。セッションあたりの最大反復回数、タイムアウト、トークン予算により、制御不能なループやブルートフォースのパターンを防ぎます。
サーキットブレーカー繰り返し失敗するツールの呼び出しを停止し、上流サービスの障害や汚染されたツールによる影響範囲を制限します。
FinOps とパフォーマンス
機能内容
コストトラッカーセッションごと、および任意で日次の USD 上限を設定し、予算を超えるとブロックします。再起動後も合計を維持するためのディスクチェックポイント(メモリバックエンド)も任意で利用できます。
セマンティックキャッシュ(語彙的)ほぼ同一のツールクエリに対する任意のJaccard 単語重複率キャッシュです。埋め込みベースではありません。ベンチマークを参照してください。
低オーバーヘッドホットパス上のミドルウェアによる一般的なオーバーヘッドは**<5 ms**を目標としています(docs/METRICS.mdを参照してください)。
監査、メトリクス、アラート
機能内容
監査ログ理由、ツール、tenant_id、trace_id、request_idを含む構造化された許可/拒否の判定を記録し、SOC/コンプライアンスに活用できます。オプションでJSONL ファイルシンクと**mcp-bastion tail**を利用できます。
アラートシンクSlackの受信 Webhook、汎用 HTTP Webhook(PagerDuty、Teams、カスタム API)、複数の URLに対応。bastion.yamlで再試行、バックオフ、タイムアウトを設定できます。
インメモリメトリクスグローバル MetricsStore:リクエスト数、ブロック数、PII 件数、コスト、ツールごとの統計、レイテンシサンプル、ローリング時系列バケット。
リアルタイムダッシュボードローカル Web UI(パネルを追加):デプロイ前のセキュリティ態勢グレードと.bastion/scan/に基づくSonar 形式の事前検証、PMD 形式の問題ガイド(理由/修正方法/OWASP)、OWASP ASI + MCP + LLM のヒートマップ、ライブ攻撃マトリクス、コンプライアンス証跡と日付入りレポート、日付フィルター、監視モードのバナー、エージェント/傾向/オンボーディング、理由/柱/トレースを含むフォレンジック、FinOps のコスト消費(実際のコストと未然に防げた場合のコスト、トークンの節約数とブロックによる回避数、グラフ)、従来の KPI も表示します。API: /api/metrics、/api/posture、/api/prevalidate、/api/issue-guide、/api/taxonomy、/api/attack-matrix、/api/compliance。ダーク/ライトテーマに対応しています。dashboard/README.mdをご覧ください。
OpenTelemetryオプションのOTLPスパンエクスポート - pip install mcp-bastion-python[otel] - docs/OTEL.md。
ポリシー、パッケージング、開発者エクスペリエンス
機能内容
ポリシー・アズ・コード単一の**bastion.yaml**で、すべてのリクエスト処理経路の制御に加え、監査、アラート、ホットリロードを切り替えられます(docs/PILLARS.md)。load_config/build_middleware_from_configで読み込みます。
ホットリロードMCP サーバーを再起動せずに、変更時に**bastion.yamlを再読み込み**できます(オプション、docs/POLICY_AS_CODE.md)。
コンポーザブルなミドルウェア**compose_middlewareで順序を設定し、MCPBastionMiddleware**のフラグで各柱を制御できます。
CLImcp-bastion scan、audit、validate、redteam、manifest、attest export、serve、dashboard、doctor、tail - docs/CLI.md。
Python + マルチ言語対応PyPI の**mcp-bastion-python(エンジン)。TypeScript/Java/Go/.NET/Kotlin/Rust のアダプターと共有のbastion.yamlには、mcp-bastion-suiteをご利用ください。docs/MULTI_LANGUAGE_SUITE.mdをご覧ください。リポジトリ内の TypeScript 版もオプションで利用できます:@mcp-bastion/core**。
コンテナーDockerfile、docker-composeプロファイル(プロキシ + オプションのダッシュボード) - DOCKER.md。ビルド済みイメージ(GHCR): mcp-bastion-proxy、mcp-bastion-dashboard - v*タグごとに公開されます(publish-docker.yml)。
リアルタイムダッシュボードとアラート

ダッシュボードは任意で、ローカルで動作します。実行時のメトリクスとローカルのスキャン/監査アーティファクトを読み取り専用で表示します。ログインサーバーもクラウド DB も必要ありません(docs/ZERO_INFRA_STRATEGY.md を参照)。

機能紹介(GIF): セキュリティ態勢と修正方法 → OWASP → 攻撃マトリクス → コンプライアンス → RBAC/ガバナンス → フォレンジック → エージェント → セキュリティ態勢の変化 → トークンとコストの削減 → トラフィック。

MCP-Bastion ダッシュボードの機能紹介 GIF

機能紹介

MCP-Bastion ダッシュボードの操作ガイド GIF

ダッシュボードの操作ガイド

MCP-Bastion ダッシュボードのコラージュ — セキュリティ態勢、OWASP、攻撃マトリクス、KPI

キャプチャの再生成:mcp-bastion dashboard --demo を実行してから python scripts/capture_dashboard_demo.py を実行 · シード:--demo

#### ダッシュボードで確認できる項目
領域パネル/アクション
デプロイ前のセキュリティ状態カタログスキャン、スキルスキャン、OSV、リスク監査のA~Fの評価と総合評価(.bastion/scan/*.json を読み込みます)
静的な事前検証同じローカル JSON からの Sonar 形式の課題一覧。SonarQube サーバーではありません(/api/prevalidate)
課題ガイド各検出結果に対する PMD 形式の理由/修正方法/Bastion の設定項目/OWASP 参照(/api/issue-guide)
OWASP 対応状況ASI Top 10、MCP Top 10、LLM Top 10のタブ。検出結果とブロック圧力を示す緑/黄/グレーのヒートマップ
リアルタイム攻撃マトリクス圧力を受けているカテゴリと、強度、割合、上位ツール、OWASP タグ、サンプル/トレースの詳細表示
コンプライアンス/レポート証明書とポリシーハッシュ。SOC2 / GDPR / ISO27001 / NIST AI RMF / ASIの証跡または ZIP を生成(期間で絞り込み)
ランタイムKPI、ガバナンス、アラート+SSE、インサイト、フォレンジック(理由+詳細)、エージェント/傾向/オンボーディング、トラフィック/レイテンシ/PII のグラフ
FinOps実際の支出/トークン数と、ブロックがなかった場合の支出/トークン数。FinOps のトークン節約量、ブロックによる回避トークン数/金額、グラフ+ブロックされた課題のテーブル
フィルター期間+プリセット(フォレンジック、傾向、攻撃マトリクス、レポート)
mcp-bastion dashboard --port 7000 --demo
# or: PYTHONPATH=src python dashboard/app.py
URL返される内容
http://localhost:7000/UI 全体(セキュリティ状態、事前検証、OWASP、攻撃マトリクス、FinOps、フォレンジックなど)
http://localhost:7000/api/metricsランタイム JSON(cost_reduction:使用済み/節約/回避した金額と、ブロックがなかった場合のコスト)
http://localhost:7000/api/postureローカル JSON からのスキャン/スキル/OSV/リスク監査の評価
http://localhost:7000/api/prevalidateSonar 形式の課題一覧+評価(ローカルスキャンスイート)
http://localhost:7000/api/issue-guide?check=weak_schemaPMD 形式のルールカード(または ?id=ASI02)
http://localhost:7000/api/taxonomy?framework=asi|mcp|llm のヒートマップ
http://localhost:7000/api/attack-matrixリアルタイムの攻撃カテゴリ(+期間フィルター)
http://localhost:7000/api/compliance/report証跡の Markdown(framework、date_from、date_to)
http://localhost:7000/api/healthビルド/ui_revision
http://localhost:7000/metricsPrometheus テキスト

Example /api/metrics JSON  -  requests_total, blocked_total, pii_redacted_total, cost_total, top_tools

Grafana、Datadog、またはカスタムポーラー向けの /api/metrics JSON

スキャン/監査の成果物をセキュリティ状態のパネルに取り込みます。

mkdir -p .bastion/scan
mcp-bastion scan tools.json --format json -o .bastion/scan/catalog.json
mcp-bastion scan --skills ./skills --format json -o .bastion/scan/skills.json
mcp-bastion osv-scan --format json -o .bastion/scan/osv.json
mcp-bastion audit --format json -o .bastion/scan/risk-audit.json
  • アラート: Slack webhook とコストしきい値アラート。UI の詳細はdashboard/README.mdを参照してください。
ドキュメント:ユースケース、攻撃、メトリクス、チュートリアル

導入手順(最初から最後まで):

目的順に読む
エンドツーエンドのハンドブックdocs/USER_GUIDE.md → 公開ドキュメント
ドキュメントハンドブック(GIF + ダッシュボード)docs/DOCUMENTATION_HANDBOOK.md → オンラインハンドブック
機能の詳細 + 攻撃デモdocs/FEATURE_DEEP_DIVE.md → docs/ATTACK_DEMOS.md
Java / TypeScript / Go / .NET / Kotlin / Rustdocs/MULTI_LANGUAGE_SUITE.md → mcp-bastion-suite
Policy-as-code(bastion.yaml)docs/PILLARS.md → docs/POLICY_AS_CODE.md → bastion.yaml.example → docs/CLI.md(validate)
LLM クライアント(OpenAI、Claude、Gemini など)docs/LLM_INTEGRATION.md → docs/INTEGRATION_MODELS.md → examples/(llm_*.py)
FastMCP / TypeScript / サードパーティーの MCPdocs/TUTORIALS.md → docs/DETAILED_TUTORIAL.md
bastion.yaml の大規模展開 + SIEM / SOC 監査docs/SECURITY_OBSERVABILITY.md → docs/POLICY_AS_CODE.md
最小限の「Hello World」+ CI / レジストリdocs/QUICK_START.md → examples/ci/README.md → docs/DISCOVERY.md

完全な索引:docs/README.md · ハンドブックサイト:ドキュメントガイド · クイックスタート:docs/QUICK_START.md · ディスカバリー:docs/DISCOVERY.md · コントリビュート:CONTRIBUTING.md。

ドキュメント説明
docs/USER_GUIDE.mdエンドツーエンドのユーザーガイド(概念 → インストール → プロキシ → Vault → 運用)。/guide/ で公開
docs/DOCUMENTATION_HANDBOOK.mdシステムハンドブック:攻撃GIF、ダッシュボードの概要、機能マップ、多言語対応
docs/FEATURE_DEEP_DIVE.md機能ごとの詳細解説:課題、Bastion による解決方法、利点(ダッシュボードを含む)
docs/ATTACK_DEMOS.md実行可能な攻撃 → 防御のデモ(詳細な手順はこの README に含めないでください)
docs/MULTI_LANGUAGE_SUITE.mdmcp-bastion-suite を使った多言語コネクター
docs/index.mdMarkdown ドキュメントのホーム(ソースハブ)
docs/POLICY_AS_CODE.mdbastion.yaml リファレンス:キー、例、ホットリロード、アラート
docs/LLM_INTEGRATION.mdLLM 統合:OpenAI、Claude、Gemini、Mistral、Grok(stdio と HTTP の設定)
docs/DETAILED_TUTORIAL.md新しいチーム向けの段階的な実装チュートリアル
docs/USE_CASES.md実際のユースケース:エンタープライズゲートウェイ、LLM 製品、内部ツール、SaaS、コンプライアンス
docs/ATTACK_PREVENTION.mdMCP-Bastion が実際の攻撃(インジェクション、PII 漏洩、レート枯渇、パストラバーサル、RBAC、リプレイ)を防ぐ方法を示す例
docs/PILLARS.md基準となる柱の数:リクエストパス機能 18 個(コア 10 個 + 拡張 8 個)、ダッシュボードの pillar_health 行 14 個、bastion.yaml のトップレベル領域 20+ 個。対象範囲についてはドキュメントを参照してください
docs/SUPPLY_CHAIN.mdCI のマージゲート、リリース、npm の来歴、PyPI Trusted Publishing、CycloneDX SBOM
docs/CRA_COMPLIANCE.mdCRA / OpenSSF の管理者としての対応方針(Article 14 + SBOM。ランタイムの変更なし)
docs/CRA_SBOM_TUTORIAL.mdCycloneDX bom.json の生成とダウンロード
docs/PII_VAULT.mdオプトイン方式の可逆的な PII トークン化(抽象化 + 復元)
docs/INTEGRATION_MODELS.mdミドルウェア + bastion.yaml と「ベース URL の変更」の比較。Python、TS、デスクトップ、HTTP、統合向けブリッジ
examples/ci/README.mdポリシーファイルに対して mcp-bastion validate を実行する、コピーして使える GitHub Actions スニペット
docs/BENCHMARKS.md実測値による RBAC マトリックス、出力予算の削減(大きなツール出力で最大約 99%)、検出フィルター、字句キャッシュ。pytest + レポート生成ツール
docs/REDTEAM.mdハーネス / レッドチームのスコアの解釈、有効にする bastion.yaml の柱、Node と Python の対象範囲(packages/core/README.md)
docs/SECURITY_OBSERVABILITY.mdOWASP MCP Top 10、統合フック、フリート規模での bastion.yaml ロールアウト、SIEM / SOC 監査パターン
docs/METRICS.mdパフォーマンスオーバーヘッド(<5ms)と有効性の指標(ダッシュボード、Prometheus、OTEL)
docs/TUTORIALS.mdチュートリアル:FastMCP、TypeScript、GitHub MCP、オープンソース MCP サーバーとの統合
docs/CYBER_EXTENSIONS_CORE.mdTypeScript 拡張 A/E/F(セマンティックな外向き通信、結果の来歴、監査)
docs/GITHUB_PAGES.mdこの同じリポジトリから、GitHub Pages のウェブサイトとしてドキュメントを公開
docs/QUICK_START.md最小限の FastMCP / bastion.yaml / CI スニペット(価値を得るまでの時間を短縮)
docs/DISCOVERY.mdレジストリとエコシステムの検出チェックリスト
docs/ENTERPRISE_RUNTIME_CONTROLS.md3.0 ランタイムガバナンス:カナリア、ATR ルール、LLM スキャナー、脅威フィード、自動再構築、シークレットの秘匿化、監視モード
docs/ROADMAP.md製品ロードマップ:コストを考慮したガバナンス、セキュリティの強化、発見可能性
docs/COMPARISON.mdガードのない MCP、軽量プロキシ、完全な AI/MCP ゲートウェイとの比較
docs/ENGINEERING_10_10.mdインジェクション対策の深度、ツールポイズニング、ゲートウェイの成熟度、FinOps 指標、プロジェクトの成熟度で 10/10 を達成するための戦略的な道筋
CONTRIBUTING.mdコントリビューターガイドと good first issue のアイデア
1 行の Docker コマンド

ビルド済みイメージ(最初の publish-docker の実行後。通常は v* リリースタグで実行されます):

docker pull ghcr.io/vaquarkhan/mcp-bastion-proxy:latest
docker run -p 8080:8080 ghcr.io/vaquarkhan/mcp-bastion-proxy:latest
# Dashboard (optional, port 7000):
# docker pull ghcr.io/vaquarkhan/mcp-bastion-dashboard:latest
# docker run -p 7000:7000 ghcr.io/vaquarkhan/mcp-bastion-dashboard:latest
# Pin a release: ghcr.io/vaquarkhan/mcp-bastion-proxy:vX.Y.Z (published on each v* tag)

ローカルでビルド(任意のリビジョン):

docker build -t mcp-bastion/proxy .
docker run -p 8080:8080 mcp-bastion/proxy

MCP エンドポイント:http://localhost:8080/mcp。プロキシには docker-compose up -d を使用します。ダッシュボードを使うには --profile with-dashboard を追加します。DOCKER.md を参照してください(GHCR からのプルコマンドと、フォーク用のパッケージリンクを掲載しています。イメージパスの vaquarkhan をご自身の組織名またはユーザー名に置き換えてください)。

Policy-as-Code(bastion.yaml)

単一の設定ファイルでポリシーを制御します(ピラーの定義については docs/PILLARS.md を参照してください)。bastion.yaml.example を bastion.yaml にコピーして、次を実行します:

from mcp_bastion import build_middleware_from_config
middleware = build_middleware_from_config()

docs/POLICY_AS_CODE.md を参照してください。

ヒント:build_middleware_from_config() を使用する際は、bastion.yaml で hot_reload.enabled: true を設定すると、MCP サーバーを再起動せずにポリシーの変更を適用できます。

開発者向け CLI
mcp-bastion audit                 # local MCP client-config risk report
mcp-bastion scan tools.json       # static tool-definition scan
mcp-bastion validate              # validate bastion.yaml
mcp-bastion serve --http 8080     # run MCP server with config
mcp-bastion dashboard --port 7000 # run metrics dashboard

docs/CLI.md を参照してください。

継続的インテグレーション(このリポジトリ)

すべてのプルリクエストと main へのプッシュ時に、.github/workflows/ci.yml が次を実行します:

  1. pip install -e ".[dev,policy,dashboard]" — テスト、YAML ポリシーの読み込み、ダッシュボードのテスト用 FastAPI を含む Python パッケージをインストールします。
  2. mcp-bastion validate --config bastion.yaml.example — サンプルのポリシーファイルが読み込めることを確認します。
  3. python -m pytest --cov=mcp_bastion --cov-fail-under=92 — Python テストスイート全体を実行し、src/mcp_bastion の行カバレッジを92%以上にします(測定対象のパスとしきい値については、pyproject.toml の [tool.coverage.*] を参照してください)。
  4. npm ci および npm test — TypeScript ワークスペースのテストを実行します。

MCP-Bastion をクローンせずに、CI でご自身のリポジトリの bastion.yaml を検証する方法については、examples/ci/README.md を参照してください。

OpenTelemetry

OTEL_EXPORTER_OTLP_ENDPOINT を設定すると、ツール呼び出しのスパンを OTLP にエクスポートできます。オプションの依存関係をインストールします:pip install mcp-bastion-python[otel]。docs/OTEL.md を参照してください。

Webhook アラートと外部ロギング

Slack(slack_webhook / SLACK_WEBHOOK_URL)、汎用 HTTP webhook(webhook_url / BASTION_WEBHOOK_URL)、または複数の URL(bastion.yaml の alerts.webhooks)を使用できます。POST リクエストは、PagerDuty、Microsoft Teams、Datadog Events、または SIEM が公開する任意の HTTP コレクターに連携できます。bastion.yaml で再試行/バックオフ(retry_attempts、retry_backoff_seconds、retry_backoff_max_seconds、timeout_seconds)を設定します。

メトリクスとトレース: ダッシュボードの /metrics(Prometheus)をスクレイプするか、/api/metrics(JSON)をポーリングして、Grafana、Datadog、またはカスタムポーラーに連携できます。Jaeger、Honeycomb、AWS ADOT などにトレースを送信するには OTEL_EXPORTER_OTLP_ENDPOINT を設定します(pip install mcp-bastion-python[otel])。Python ログ(LoggingAlertSink を含む)は、Fluent Bit、Vector、または CloudWatch agent を経由して Splunk/Elastic/CloudWatch Logs に転送できます。

統合の全一覧と OWASP MCP Top 10 との整合性については、docs/SECURITY_OBSERVABILITY.md を参照してください。


MCP-Bastion の主な機能

## MCP-Bastion を選ぶ理由
  • アクティブな適用 - MCP ツールのトラフィックをインターセプトし、ツールの実行前と機密性の高い結果が伝播する前に、ポリシー(プロンプトインジェクションのチェック、PII の取り扱い、コンテンツルール、RBAC など)を適用します。
  • ローカル優先の分類 - PromptGuard と Presidio はお使いの環境で実行されます。ガードレールのスコアリングのために、プロンプトをサードパーティの API に送信する必要はありません。
  • ステートフルなガードレール - セッションごとのレート制限、反復回数の上限、トークン予算、コスト追跡により、無限ループや想定外の支出を抑制します。
  • 柔軟に組み合わせられる統合 - build_middleware_from_config() で bastion.yaml を使用するか、Python または TypeScript で MCPBastionMiddleware / wrapWithMcpBastion を組み込みます。上流の MCP サーバーの前に別プロセスを配置する場合は、ご自身で管理するラッパーまたはプロキシを使用してください。docs/INTEGRATION_MODELS.md を参照してください。

構成

パス説明
src/mcp_bastion/Python パッケージ:PromptGuard、Presidio、レート制限、RBAC など
packages/core/TypeScript パッケージ:レート制限+来歴+監査はプロセス内で実行。プロンプト/PII/セマンティック/結果の処理はサイドカー(MCP_BASTION_URL)経由
examples/Python の例(examples/README.md)
dashboard/リアルタイムダッシュボードの UI とメトリクス API(dashboard/README.md)
bastion.yaml.exampleポリシー・アズ・コードのサンプル。bastion.yaml にコピーしてください(docs/POLICY_AS_CODE.md)
scripts/validate_checklist.pyエンタープライズ向け検証ランナー
VALIDATION_CHECKLIST.md検証ガイドと MCP Inspector の手順
SETUP_GUIDE.mdセットアップ、設定、検証
DOCKER.mdDocker のワンライン実行と compose
サンプルファイル
ファイル用途
examples/python_server_example.py最小限のミドルウェアチェーン
examples/full_demo.py複数の柱で構成されるスタック(コアの切り替え項目:レート制限、PII、RBAC など - docs/PILLARS.md を参照)
examples/llm_server.pyLLM クライアント向けの共有 MCP サーバー
examples/llm_openai_example.pyOpenAI
examples/llm_claude_example.pyClaude
examples/llm_gemini_example.pyGemini
examples/llm_mistral_example.pyMistral
examples/llm_grok_example.pyGrok(xAI)
examples/server_with_config.pyポリシー・アズ・コード(bastion.yaml)

インストール

Python

uv add mcp-bastion-python
# or
pip install mcp-bastion-python
# pin a specific release (optional)
pip install mcp-bastion-python==5.1.0

前提条件(推奨)

  • PII のマスキング: Presidio は spaCy の英語モデルを必要とします。インストール後、次を実行してください。
    python -m spacy download en_core_web_sm
    これがない場合、実行時に PII の分析が失敗することがあります。
  • ポリシー・アズ・コード(bastion.yaml): YAML のサポートをインストールしてください。
    pip install mcp-bastion-python[policy]
    (pyyaml が追加されます。インストールしない場合、ポリシーファイルの読み込み時に ImportError が発生することがあります。)
  • プロンプトインジェクション(PromptGuard): 2 つのレイヤーがあります。
    1. 正規表現ヒューリスティック(常時有効): 「ignore previous instructions」など、明白なジェイルブレイク文字列をブロックします。モデルのダウンロードは不要です。
    2. ML 分類器(デフォルトでは認証不要): use_ungated_default: true を指定すると、ProtectAI/deberta-v3-base-prompt-injection-v2 を使用します(Hugging Face へのログインは不要です)。任意の認証必須モデルへのアップグレード:use_ungated_default: false を設定し、huggingface-cli login の実行後に meta-llama/Llama-Prompt-Guard-2-86M を使用します。未検証のペイロードは、fail_open: false(デフォルト)の場合、ブロックされます。mcp-bastion doctor を実行して、ML が利用可能か確認してください。

PyPI の wheel には config、cli、otel、ダッシュボードのメトリクス、アラートシンクを含む mcp_bastion ツリー全体が含まれています。一部のモジュールが含まれていない古い wheel を使用している場合は、現行リリースにアップグレードしてください。

TypeScript

npm install @mcp-bastion/core

npm

フレームワークとの統合

お好みの LLM フレームワークに、すぐに使えるセキュリティ機能を追加できます。各パッケージは mcp-bastion-python を自動でインストールします。バージョン列とダウンロード数列には、ecosystem-downloads.json のライブバッジが使用されています(PePy による累計)。推移: pypistats.org。 One-place totals: Integrations download dashboard · ecosystem-downloads.json (sum of all 26 packages, refreshed daily).

PackageProtectsVersionDownloads
mcp-bastion-pythonCore middlewarePyPIdownloads · pypistats
mcp-bastion-langchainLangChainPyPIdownloads · pypistats
mcp-bastion-openaiOpenAI GPTPyPIdownloads · pypistats
mcp-bastion-anthropicAnthropic ClaudePyPIdownloads · pypistats
mcp-bastion-bedrockAWS BedrockPyPIdownloads · pypistats
mcp-bastion-geminiGoogle GeminiPyPIdownloads · pypistats
mcp-bastion-crewaiCrewAIPyPIdownloads · pypistats
mcp-bastion-llamaindexLlamaIndexPyPIdownloads · pypistats
mcp-bastion-groqGroqPyPIdownloads · pypistats
mcp-bastion-mistralMistral AIPyPIdownloads · pypistats
mcp-bastion-cohereCoherePyPIdownloads · pypistats
mcp-bastion-azureAzure OpenAIPyPIdownloads · pypistats
mcp-bastion-vertexaiVertex AIPyPIdownloads · pypistats
mcp-bastion-huggingfaceHugging FacePyPIdownloads · pypistats
mcp-bastion-deepseekDeepSeek AIPyPIdownloads · pypistats
mcp-bastion-togetherTogether AIPyPIdownloads · pypistats
mcp-bastion-fireworksFireworks AIPyPIdownloads · pypistats
mcp-bastion-litellmLiteLLM (100+ providers)PyPIdownloads · pypistats
mcp-bastion-ollamaOllama local modelsPyPIdownloads · pypistats
mcp-bastion-openrouterOpenRouter gatewayPyPIdownloads · pypistats
mcp-bastion-xaixAI GrokPyPIdownloads · pypistats
mcp-bastion-autogenMicrosoft AutoGenPyPIdownloads · pypistats
mcp-bastion-langgraphLangGraphPyPIdownloads · pypistats
mcp-bastion-pydantic-aiPydantic AIPyPIdownloads · pypistats
mcp-bastion-openai-agentsOpenAI Agents SDKPyPIdownloads · pypistats
mcp-bastion-fastmcpFastMCP serversPyPIdownloads · pypistats
pip install mcp-bastion-langchain      # LangChain agents and tools
pip install mcp-bastion-openai         # OpenAI GPT API calls
pip install mcp-bastion-anthropic      # Anthropic Claude API calls
pip install mcp-bastion-bedrock        # AWS Bedrock runtime
pip install mcp-bastion-gemini         # Google Gemini
pip install mcp-bastion-crewai         # CrewAI agent crews
pip install mcp-bastion-llamaindex     # LlamaIndex RAG pipelines
pip install mcp-bastion-groq           # Groq inference
pip install mcp-bastion-mistral        # Mistral AI
pip install mcp-bastion-cohere         # Cohere
pip install mcp-bastion-azure          # Azure OpenAI Service
pip install mcp-bastion-vertexai       # Google Cloud Vertex AI
pip install mcp-bastion-huggingface    # Hugging Face Inference
pip install mcp-bastion-deepseek       # DeepSeek AI
pip install mcp-bastion-together       # Together AI
pip install mcp-bastion-fireworks      # Fireworks AI
pip install mcp-bastion-litellm        # LiteLLM (100+ providers)
pip install mcp-bastion-ollama         # Ollama local models
pip install mcp-bastion-openrouter     # OpenRouter gateway
pip install mcp-bastion-xai            # xAI Grok
pip install mcp-bastion-autogen        # Microsoft AutoGen
pip install mcp-bastion-langgraph      # LangGraph
pip install mcp-bastion-pydantic-ai    # Pydantic AI
pip install mcp-bastion-openai-agents  # OpenAI Agents SDK
pip install mcp-bastion-fastmcp        # FastMCP servers

個別に公開する方法については、integrations/PUBLISH.md をご覧ください。

公開(PyPI / npm)

  • PyPI: python -m build && twine upload dist/*(または、タグに対して GitHub Actions を使用します)。
  • npm: リポジトリのルートから、cd packages/core && npm publish --access public を実行します(または、Trusted Publishers を使用します)。
  • バージョンは pyproject.toml(Python)、packages/core/package.json(npm)、server.json(MCP レジストリ)で設定されています。リリース前にバージョンを更新してください。

開発者ガイド

Python および TypeScript の統合例です。コントリビューター向けおよび機能に関するドキュメント一式:

ドキュメント説明
docs/DEVELOPER_GUIDE.mdリポジトリの構成、ローカル開発、テスト、リリース
docs/FEATURES.md3.0 ランタイムガバナンスを含む、すべてのセキュリティの柱の使い方
docs/RBAC.mdRBAC ロール、fnmatch グロブ、エージェント IAM の組み合わせ
CONTRIBUTING.mdPR チェックリストと、初めての貢献に適した課題
SUPPORT.md · FUNDING.mdサポートとスポンサーシップ

クイックスタート(Python)

既存の MCP サーバーに、次の 3 ステップで MCP-Bastion を追加します。

from mcp_bastion import MCPBastionMiddleware, compose_middleware

# 1. Create the security middleware
bastion = MCPBastionMiddleware(
    enable_prompt_guard=True,
    enable_pii_redaction=True,
    enable_rate_limit=True,
)

# 2. Compose with your middleware chain (Bastion runs first)
middleware = compose_middleware(bastion)

# 3. Pass the composed middleware to your MCP server
# (integration depends on your server framework)

使用例:

例説明
examples/python_server_example.py基本的なミドルウェアチェーン
examples/full_demo.pyミドルウェアスタック一式:add、PII、レート制限、プロンプトインジェクションなど
examples/llm_openai_example.pyOpenAI 用 MCP サーバー
examples/llm_claude_example.pyClaude 用 MCP サーバー
examples/llm_gemini_example.pyGemini 用 MCP サーバー
examples/llm_mistral_example.pyMistral 用 MCP サーバー
examples/llm_grok_example.pyGrok 用 MCP サーバー(xAI、HTTP のみ)
# Windows: $env:PYTHONPATH="src"; python examples/full_demo.py
# Linux/Mac: PYTHONPATH=src python examples/full_demo.py

LLM 統合: OpenAI、Claude、Gemini、Mistral、Grok 用のコピー&ペースト可能な設定については、docs/LLM_INTEGRATION.md をご覧ください。

エンタープライズ検証:

PYTHONPATH=src python scripts/validate_checklist.py

VALIDATION_CHECKLIST.md と SETUP_GUIDE.md をご覧ください。


Python チュートリアル:FastMCP サーバー

secure_fastmcp を使用した MCP-Bastion 対応の FastMCP サーバーです(ツールのディスパッチにパッチを適用します。詳しくは integrations/mcp-bastion-fastmcp/README.md をご覧ください)。

ステップ 1:依存関係をインストールする

pip install mcp mcp-bastion-fastmcp

ステップ 2:サーバーファイルを作成する(server.py)

from mcp.server.fastmcp import FastMCP
from mcp_bastion_fastmcp import secure_fastmcp

mcp = FastMCP("My Secure Server")
secure_fastmcp(mcp)  # call right after FastMCP(), before mcp.run()

@mcp.tool()
def get_weather(city: str) -> str:
    """Get weather for a city."""
    return f"Weather in {city}: 22C, sunny"

if __name__ == "__main__":
    mcp.run(transport="streamable-http")

ステップ 3:サーバーを実行する

python server.py

MCP-Bastion(secure_fastmcp 経由):

  • 実行前にツールの引数をスキャンし、プロンプトインジェクションを検出します
  • 出力時にツールの結果に含まれる PII をマスキングします
  • デフォルトのレート制限(セッションあたり 15 回、タイムアウト 60s。TokenBucketRateLimiter を参照)を適用します

完全な bastion.yaml ポリシー、またはリソース(resources/read)の PII マスキングには、低レベルの MCP Server と build_middleware_from_config() を使用してください。詳しくは docs/QUICK_START.md のパス B をご覧ください。

代替手段:Policy-as-Code

コードの代わりに bastion.yaml を使用します。bastion.yaml.example を bastion.yaml にコピーしてから、次を実行します。

from mcp_bastion import build_middleware_from_config
middleware = build_middleware_from_config()

docs/POLICY_AS_CODE.md および examples/server_with_config.py をご覧ください。


Python:カスタムレート制限

カスタム設定の例:

from mcp_bastion import MCPBastionMiddleware
from mcp_bastion.pillars.rate_limit import TokenBucketRateLimiter
from mcp_bastion.pillars.prompt_guard import PromptGuardEngine

# Stricter limits
rate_limiter = TokenBucketRateLimiter(
    max_iterations=10,
    timeout_seconds=30,
    token_budget=25_000,
)

# Higher threshold = fewer blocks, more risk
prompt_guard = PromptGuardEngine(threshold=0.92)

bastion = MCPBastionMiddleware(
    prompt_guard=prompt_guard,
    rate_limiter=rate_limiter,
    enable_prompt_guard=True,
    enable_pii_redaction=True,
    enable_rate_limit=True,
)

# Disable PII redaction if your data has no PII
bastion_no_pii = MCPBastionMiddleware(enable_pii_redaction=False)

Python:カスタムミドルウェア

Middleware を拡張して、ロギング、メトリクス、または独自のロジックを追加します。

from mcp_bastion import MCPBastionMiddleware
from mcp_bastion.base import Middleware, MiddlewareContext, compose_middleware

class LoggingMiddleware(Middleware):
    async def on_message(self, context, call_next):
        result = await call_next(context)
        # log method, elapsed, etc.
        return result

bastion = MCPBastionMiddleware()  # or use the configured instance from above
middleware = compose_middleware(bastion, LoggingMiddleware())

完全な例については examples/full_demo.py をご覧ください。


TypeScript:MCP サーバーをラップする

ステップ 1:依存関係をインストールする

npm install @modelcontextprotocol/sdk @mcp-bastion/core

ステップ 2:サーバーを作成する(server.ts)

import { Server } from "@modelcontextprotocol/sdk/server/index.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import {
  wrapWithMcpBastion,
} from "@mcp-bastion/core";

const server = new Server({ name: "my-mcp-server", version: "1.0.0" });

// Wrap the server with MCP-Bastion (rate limiting only by default)
// For prompt injection, PII, semantic egress, and result guard, run the Python sidecar
wrapWithMcpBastion(server, {
  enableRateLimit: true,
  maxIterations: 15,
  timeoutMs: 60_000,
  // Optional: enable ML / semantic features via Python sidecar
  sidecarUrl: process.env.MCP_BASTION_SIDECAR || "",
  enablePromptGuard: !!process.env.MCP_BASTION_SIDECAR,
  enablePiiRedaction: !!process.env.MCP_BASTION_SIDECAR,
  // Opt-in cyber extensions — see docs/CYBER_EXTENSIONS_CORE.md
  enableSemanticEgress: true,
  semanticEgressMode: "detect",
  semanticEgressTools: ["create_pull_request", "send_email"],
  tagResultProvenance: true,
  enableAudit: true,
});

// Register tools (handlers are automatically wrapped)
server.setRequestHandler("tools/call" as any, async (request) => {
  if (request.params?.name === "get_weather") {
    return {
      content: [{ type: "text", text: "Sunny, 22C" }],
      isError: false,
    };
  }
  throw new Error("Unknown tool");
});

async function main() {
  const transport = new StdioServerTransport();
  await server.connect(transport);
}

main();

ステップ 3:レート制限のみで実行する

npx tsx server.ts

ステップ 4:ML 機能一式を有効にして実行する(Python サイドカー)

プロンプトインジェクション、PII マスキング、セマンティックな送信制御、結果ガードを使用するには、/prompt-guard、/pii-redact、/semantic-egress、/result-guard を公開する Python HTTP サービスを実行してください(docs/CYBER_EXTENSIONS_CORE.md を参照)。次に、以下を実行します。

# Start the Python sidecar, then the TypeScript server (sidecarUrl or MCP_BASTION_URL)
MCP_BASTION_SIDECAR=http://localhost:8000 npx tsx server.ts

仲介の前提条件: ラッパーが認識できるのは、MCP を介したツール呼び出しのみです。帯域外のシェルや git は対象外です。


TypeScript:個々のハンドラーをラップする

特定のハンドラーのみをラップします。

import {
  wrapCallToolHandler,
  wrapReadResourceHandler,
} from "@mcp-bastion/core";
import {
  CallToolRequestSchema,
  ReadResourceRequestSchema,
} from "@modelcontextprotocol/sdk/types.js";

// Wrap only the tool handler
const safeToolHandler = wrapCallToolHandler(
  async (request) => {
    // Your tool logic
    return { content: [{ type: "text", text: "OK" }], isError: false };
  },
  { enableRateLimit: true, maxIterations: 10 }
);

// Wrap only the resource handler (for PII redaction)
const safeResourceHandler = wrapReadResourceHandler(
  async (request) => {
    const contents = await fetchResource(request.params.uri);
    return { contents };
  },
  { sidecarUrl: "http://localhost:8000", enablePiiRedaction: true }
);

server.setRequestHandler(CallToolRequestSchema, safeToolHandler);
server.setRequestHandler(ReadResourceRequestSchema, safeResourceHandler);

設定リファレンス
オプションPythonTypeScriptデフォルト説明
enable_prompt_guardはいはいTrue(Python) / False(TS)PromptGuard により悪意のあるプロンプトをブロックします
enable_pii_redactionはいはいTrue(Python) / False(TS)送信コンテンツ内の PII をマスキングします
enable_rate_limitはいはいTrueイテレーション数とタイムアウトの上限を適用します
max_iterationsTokenBucketRateLimiter 経由はい15セッションあたりのツール呼び出しの最大数
timeout_seconds / timeoutMsTokenBucketRateLimiter 経由はい60セッションのタイムアウト
token_budgetTokenBucketRateLimiter 経由-50,000リクエストあたりの FinOps トークン上限
sidecarUrl-はい""ML/セマンティック機能用の Python サイドカー URL
enableSemanticEgress-はいfalse/semantic-egress を介して、許可リストにある送信ツールを審査します
semanticEgressMode-はいdetectdetect | quarantine(フェイルクローズ)
semanticEgressTools-はい[]審査するツール名
tagResultProvenance-はいfalse結果テキストを信頼されていないことを示すマーカーで囲みます
enableResultGuard-はいfalse/result-guard を介して結果をスキャンします
resultGuardMode-はいdetectdetect | strict(フェイルクローズ)
enableAudit / onAudit-はいfalseハッシュチェーン監査+オプションのシンク
thresholdPromptGuardEngine 経由-0.85悪意のある確率のしきい値
setLogLevel-はい"info"TypeScript:"debug" | "info" | "warn" | "error"

エラー処理

MCP-Bastion がリクエストをブロックすると、標準の MCP/JSON-RPC エラーを返します。

コード例外発生条件
-32001PromptInjectionErrorツール引数にジェイルブレイク/インジェクションが含まれている
-32002RateLimitExceededErrorセッションがイテレーション数またはタイムアウトの上限を超えた
-32003TokenBudgetExceededErrorセッションがトークン予算を超えた
-32004CircuitBreakerOpenError失敗後、ツールのサーキットブレーカーが開いている
-32005ContentFilterErrorコンテンツフィルターがブロック対象のパターンに一致した
-32006RBACError呼び出し元にこのツールの使用が許可されていない
-32007SchemaValidationErrorツール引数がスキーマ検証に失敗した
-32008ReplayAttackError重複する nonce/リプレイが検出された
-32009CostBudgetExceededErrorセッションのコスト予算を超えた
-32010SemanticFirewallErrorツールのシーケンス/引数パターンがセマンティックファイアウォールの検証に失敗した
-32011ExternalPolicyDeniedErrorOPA/Cedar(またはその他の外部)ポリシーによりリクエストが拒否された
-32012SensitiveContentError機密ビジネス分類器のスコアがしきい値を超えた
-32013AuthenticationErrorエッジ/ゲートウェイ認証(メタデータトークン)に失敗した
-32014ToolNotAllowedErrorツールが許可リストにない
-32015SessionScopeExceededErrorセッションあたりの異なるツール数が多すぎる(スコープの拡大)
-32016ToolMetadataPoisoningErrorツールリスト/メタデータが安全性チェックに失敗した
-32017GroundingViolationErrorツール出力に根拠のないファイル参照が含まれている
-32018PromptGuardUnavailableErrorPromptGuard ML が利用できずフェイルクローズになった(またはヒューリスティックが無効になっている)
-32019AgentAccessDeniedError認証済みエージェントが IAM ポリシーの対象外のツールを使用しようとした
-32020ServerVerificationErrorMCP サーバーのファイルチェックサムが信頼済みマニフェストと一致しない
# Python: exceptions
from mcp_bastion.errors import (
    PromptInjectionError,
    RateLimitExceededError,
    TokenBudgetExceededError,
    CircuitBreakerOpenError,
    ContentFilterError,
    RBACError,
    SchemaValidationError,
    ReplayAttackError,
    CostBudgetExceededError,
    SemanticFirewallError,
    ExternalPolicyDeniedError,
    SensitiveContentError,
    AuthenticationError,
    ToolNotAllowedError,
    SessionScopeExceededError,
    ToolMetadataPoisoningError,
    GroundingViolationError,
    PromptGuardUnavailableError,
    AgentAccessDeniedError,
    ServerVerificationError,
)
import logging
logger = logging.getLogger(__name__)

try:
    result = await middleware(context, call_next)
except (
    PromptInjectionError,
    RateLimitExceededError,
    TokenBudgetExceededError,
    CircuitBreakerOpenError,
    ContentFilterError,
    RBACError,
    SchemaValidationError,
    ReplayAttackError,
    CostBudgetExceededError,
    SemanticFirewallError,
    ExternalPolicyDeniedError,
    SensitiveContentError,
    AuthenticationError,
    ToolNotAllowedError,
    SessionScopeExceededError,
    ToolMetadataPoisoningError,
    GroundingViolationError,
    PromptGuardUnavailableError,
    AgentAccessDeniedError,
    ServerVerificationError,
) as e:
    logger.warning("blocked: %s", e.to_mcp_error())
// TypeScript: handlers return isError: true
import { logger, setLogLevel } from "@mcp-bastion/core";
setLogLevel("debug");  // optional: "debug" | "info" | "warn" | "error"
const result = await guardedHandler(request);
if (result.isError) {
  logger.error("blocked", result.content);
}

テスト

MCP Inspector:

# Start your guarded server
python server.py   # or: npx tsx server.ts

# In another terminal, launch the Inspector
npx -y @modelcontextprotocol/inspector

HTTP(http://localhost:8000/mcp)または stdio 経由で接続し、次を実行します。

  1. ツールの一覧を取得し、無害な引数でツールを呼び出します(成功するはずです)
  2. "Ignore previous instructions" を含む引数でツールを呼び出します(ブロックされるはずです)
  3. 1 つのセッションで 16 回以上ツールを呼び出します(レート制限に達するはずです)

テスト

# Python (PYTHONPATH=src on Windows: $env:PYTHONPATH="src")
python -m pytest tests/ -v

# TypeScript
npm run test --workspace=@mcp-bastion/core

# Full validation checklist (build, pillars, latency)
PYTHONPATH=src python scripts/validate_checklist.py

# MCP Inspector (manual)
npx -y @modelcontextprotocol/inspector

サードパーティコンポーネント

ライセンスについては NOTICE をご覧ください。MCP-Bastion は Meta Llama Prompt Guard 2(Llama 4 Community License)および Microsoft Presidio を使用しています。OWASP に関連する緩和策と依存関係の監査については、docs/SECURITY.md をご覧ください。脆弱性を非公開で報告する場合は、SECURITY.md をご覧ください。

ライセンス

MCP-Bastion は MCP-Bastion Community and Commercial License(LICENSE)に基づいて配布されています。

  • 非営利目的であれば、MCP-Bastion と 著作権表示を明記することで無料で使用できます(CITATION.cff をご覧ください。クレジットにプロジェクトとリポジトリを含めたうえで、作者やソフトウェアの使用者として あなたの 名前、チーム名、または組織名を記載できます)。
  • 著作権は保持されます。ライセンスまたは著作権の記載を削除したり、ライセンス条項を満たさずに、無関係なソフトウェアであるかのように本作品の複製を再配布したりしないでください。
  • ライセンスで定義されている商用利用には、別途書面による契約が必要となる場合があります。 - COMMERCIAL_LICENSE.md をご覧ください。

関連項目:


製品概要とセキュリティ資料

資料用途
MCP-Security-Deck-v3.pdf主資料 — 購入検討者向けのセキュリティ/FinOps/ベンチマークの根拠、セキュリティレビュー、LinkedIn/営業での共有(raw)
docs/mcp-bastian-features-deck.pdf詳細な機能紹介/主要領域の全体像を示す、深掘りを行う関係者向け資料

資料に掲載された数値の再現方法:docs/BENCHMARKS.md · 脅威モデル:docs/THREAT_MODEL.md。

コメント

MCP は初めてですか?

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

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