MCP-Bastion について
MCP-Bastionは、MCPサーバー向けのローカルセキュリティミドルウェアです。エージェントの権限や実行時の挙動を管理するチーム向けに、ツールカタログのスキャン、設定監査、実行時の制御を提供し、外部の安全性APIを必要としません。
主な機能
- 01エージェント識別とツール単位のアクセス制御
- 02インジェクションの阻止と個人情報のマスキング
- 03ツールカタログのスキャンとクライアント設定の監査
- 04呼び出し回数、時間、支出の制限
- 05監査ログとセキュリティ状況ダッシュボード
活用シーン
- 01エージェントごとに利用可能なツールを制限
- 02デプロイ前のツールカタログ確認
- 03ローカルMCPクライアントの権限確認
- 04過剰な呼び出しとデータ漏えいの抑制
MCP 対応
MCPサーバーをミドルウェアで保護し、ツール呼び出し、リソース読み取り、プロンプト取得などのメソッドを検査します。ツールカタログのスキャンとローカルMCPクライアント設定の監査にも対応します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCP-Bastion
README · Documentation · Demos · Dashboard / Observability · Multi-language · Benchmark · License · Security
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 |
スキャン → テスト → 強制適用(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 scan | mcp-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 — クライアント側の静的スキャナー。クラウド不要、ML のダウンロード不要
mcp-bastion audit — enforce の前にローカルの MCP 攻撃対象領域を把握。ネットワーク不要、Vault 不要
スキーマ · スキル · OSV — デフォルトでオフライン。ログインサーバー不要、ホームへの通信なし
機能紹介
ダッシュボードのウォークスルー
リアルタイムのセキュリティ態勢と実行時ダッシュボード — ローカルのみ、インフラ不要。mcp-bastion dashboard --demo · ダッシュボードのドキュメント · 以前の Vimeo ウォークスルー
ステートフル/ステートレスのハイブリッド 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 はエージェントのゼロトラスト制御プレーンとして機能し、本番環境における最も困難な課題に対応します。
- 混乱した代理人(エージェント IAM): ID を認識するルーティングにより、API トークンをエージェント IDにひも付け、ツールごとに厳格な RBAC を適用します。カスタマーサポートボットは
search_docsを呼び出せますが、delete_userは呼び出せません。 - サプライチェーンとタイポスクワッティングへの対策: 暗号学的な SHA-256 マニフェスト検証により、MCP サーバーのアーティファクトが承認済みチェックサムから変わった場合、トラフィックを遮断します。
- データ流出とインジェクションの防止: 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 サーフェス全体への対応と水平スケーリング(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 |
| ゲート不要の PromptGuard | prompt_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 が提供するもの… |
|---|---|
| 書き換えずにガードレールを導入 | そのまま使えるミドルウェア: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 をご覧ください。
再現方法: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 と不正利用のパターンもブロックします。
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**のフラグで各柱を制御できます。 |
| CLI | mcp-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 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/prevalidate | Sonar 形式の課題一覧+評価(ローカルスキャンスイート) |
| http://localhost:7000/api/issue-guide?check=weak_schema | PMD 形式のルールカード(または ?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/metrics | Prometheus テキスト |
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 / Rust | docs/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 / サードパーティーの MCP | docs/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.md | mcp-bastion-suite を使った多言語コネクター |
| docs/index.md | Markdown ドキュメントのホーム(ソースハブ) |
| docs/POLICY_AS_CODE.md | bastion.yaml リファレンス:キー、例、ホットリロード、アラート |
| docs/LLM_INTEGRATION.md | LLM 統合:OpenAI、Claude、Gemini、Mistral、Grok(stdio と HTTP の設定) |
| docs/DETAILED_TUTORIAL.md | 新しいチーム向けの段階的な実装チュートリアル |
| docs/USE_CASES.md | 実際のユースケース:エンタープライズゲートウェイ、LLM 製品、内部ツール、SaaS、コンプライアンス |
| docs/ATTACK_PREVENTION.md | MCP-Bastion が実際の攻撃(インジェクション、PII 漏洩、レート枯渇、パストラバーサル、RBAC、リプレイ)を防ぐ方法を示す例 |
| docs/PILLARS.md | 基準となる柱の数:リクエストパス機能 18 個(コア 10 個 + 拡張 8 個)、ダッシュボードの pillar_health 行 14 個、bastion.yaml のトップレベル領域 20+ 個。対象範囲についてはドキュメントを参照してください |
| docs/SUPPLY_CHAIN.md | CI のマージゲート、リリース、npm の来歴、PyPI Trusted Publishing、CycloneDX SBOM |
| docs/CRA_COMPLIANCE.md | CRA / OpenSSF の管理者としての対応方針(Article 14 + SBOM。ランタイムの変更なし) |
| docs/CRA_SBOM_TUTORIAL.md | CycloneDX 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.md | OWASP 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.md | TypeScript 拡張 A/E/F(セマンティックな外向き通信、結果の来歴、監査) |
| docs/GITHUB_PAGES.md | この同じリポジトリから、GitHub Pages のウェブサイトとしてドキュメントを公開 |
| docs/QUICK_START.md | 最小限の FastMCP / bastion.yaml / CI スニペット(価値を得るまでの時間を短縮) |
| docs/DISCOVERY.md | レジストリとエコシステムの検出チェックリスト |
| docs/ENTERPRISE_RUNTIME_CONTROLS.md | 3.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 が次を実行します:
pip install -e ".[dev,policy,dashboard]"— テスト、YAML ポリシーの読み込み、ダッシュボードのテスト用 FastAPI を含む Python パッケージをインストールします。mcp-bastion validate --config bastion.yaml.example— サンプルのポリシーファイルが読み込めることを確認します。python -m pytest --cov=mcp_bastion --cov-fail-under=92— Python テストスイート全体を実行し、src/mcp_bastionの行カバレッジを92%以上にします(測定対象のパスとしきい値については、pyproject.tomlの[tool.coverage.*]を参照してください)。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 ツールのトラフィックをインターセプトし、ツールの実行前と機密性の高い結果が伝播する前に、ポリシー(プロンプトインジェクションのチェック、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.md | Docker のワンライン実行と compose |
サンプルファイル
| ファイル | 用途 |
|---|---|
examples/python_server_example.py | 最小限のミドルウェアチェーン |
examples/full_demo.py | 複数の柱で構成されるスタック(コアの切り替え項目:レート制限、PII、RBAC など - docs/PILLARS.md を参照) |
examples/llm_server.py | LLM クライアント向けの共有 MCP サーバー |
examples/llm_openai_example.py | OpenAI |
examples/llm_claude_example.py | Claude |
examples/llm_gemini_example.py | Gemini |
examples/llm_mistral_example.py | Mistral |
examples/llm_grok_example.py | Grok(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 つのレイヤーがあります。
- 正規表現ヒューリスティック(常時有効): 「ignore previous instructions」など、明白なジェイルブレイク文字列をブロックします。モデルのダウンロードは不要です。
- 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
フレームワークとの統合
お好みの 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).
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.md | 3.0 ランタイムガバナンスを含む、すべてのセキュリティの柱の使い方 |
| docs/RBAC.md | RBAC ロール、fnmatch グロブ、エージェント IAM の組み合わせ |
| CONTRIBUTING.md | PR チェックリストと、初めての貢献に適した課題 |
| 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.py | OpenAI 用 MCP サーバー |
examples/llm_claude_example.py | Claude 用 MCP サーバー |
examples/llm_gemini_example.py | Gemini 用 MCP サーバー |
examples/llm_mistral_example.py | Mistral 用 MCP サーバー |
examples/llm_grok_example.py | Grok 用 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);
設定リファレンス
| オプション | Python | TypeScript | デフォルト | 説明 |
|---|---|---|---|---|
enable_prompt_guard | はい | はい | True(Python) / False(TS) | PromptGuard により悪意のあるプロンプトをブロックします |
enable_pii_redaction | はい | はい | True(Python) / False(TS) | 送信コンテンツ内の PII をマスキングします |
enable_rate_limit | はい | はい | True | イテレーション数とタイムアウトの上限を適用します |
max_iterations | TokenBucketRateLimiter 経由 | はい | 15 | セッションあたりのツール呼び出しの最大数 |
timeout_seconds / timeoutMs | TokenBucketRateLimiter 経由 | はい | 60 | セッションのタイムアウト |
token_budget | TokenBucketRateLimiter 経由 | - | 50,000 | リクエストあたりの FinOps トークン上限 |
sidecarUrl | - | はい | "" | ML/セマンティック機能用の Python サイドカー URL |
enableSemanticEgress | - | はい | false | /semantic-egress を介して、許可リストにある送信ツールを審査します |
semanticEgressMode | - | はい | detect | detect | quarantine(フェイルクローズ) |
semanticEgressTools | - | はい | [] | 審査するツール名 |
tagResultProvenance | - | はい | false | 結果テキストを信頼されていないことを示すマーカーで囲みます |
enableResultGuard | - | はい | false | /result-guard を介して結果をスキャンします |
resultGuardMode | - | はい | detect | detect | strict(フェイルクローズ) |
enableAudit / onAudit | - | はい | false | ハッシュチェーン監査+オプションのシンク |
threshold | PromptGuardEngine 経由 | - | 0.85 | 悪意のある確率のしきい値 |
setLogLevel | - | はい | "info" | TypeScript:"debug" | "info" | "warn" | "error" |
エラー処理
MCP-Bastion がリクエストをブロックすると、標準の MCP/JSON-RPC エラーを返します。
| コード | 例外 | 発生条件 |
|---|---|---|
| -32001 | PromptInjectionError | ツール引数にジェイルブレイク/インジェクションが含まれている |
| -32002 | RateLimitExceededError | セッションがイテレーション数またはタイムアウトの上限を超えた |
| -32003 | TokenBudgetExceededError | セッションがトークン予算を超えた |
| -32004 | CircuitBreakerOpenError | 失敗後、ツールのサーキットブレーカーが開いている |
| -32005 | ContentFilterError | コンテンツフィルターがブロック対象のパターンに一致した |
| -32006 | RBACError | 呼び出し元にこのツールの使用が許可されていない |
| -32007 | SchemaValidationError | ツール引数がスキーマ検証に失敗した |
| -32008 | ReplayAttackError | 重複する nonce/リプレイが検出された |
| -32009 | CostBudgetExceededError | セッションのコスト予算を超えた |
| -32010 | SemanticFirewallError | ツールのシーケンス/引数パターンがセマンティックファイアウォールの検証に失敗した |
| -32011 | ExternalPolicyDeniedError | OPA/Cedar(またはその他の外部)ポリシーによりリクエストが拒否された |
| -32012 | SensitiveContentError | 機密ビジネス分類器のスコアがしきい値を超えた |
| -32013 | AuthenticationError | エッジ/ゲートウェイ認証(メタデータトークン)に失敗した |
| -32014 | ToolNotAllowedError | ツールが許可リストにない |
| -32015 | SessionScopeExceededError | セッションあたりの異なるツール数が多すぎる(スコープの拡大) |
| -32016 | ToolMetadataPoisoningError | ツールリスト/メタデータが安全性チェックに失敗した |
| -32017 | GroundingViolationError | ツール出力に根拠のないファイル参照が含まれている |
| -32018 | PromptGuardUnavailableError | PromptGuard ML が利用できずフェイルクローズになった(またはヒューリスティックが無効になっている) |
| -32019 | AgentAccessDeniedError | 認証済みエージェントが IAM ポリシーの対象外のツールを使用しようとした |
| -32020 | ServerVerificationError | MCP サーバーのファイルチェックサムが信頼済みマニフェストと一致しない |
# 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 経由で接続し、次を実行します。
- ツールの一覧を取得し、無害な引数でツールを呼び出します(成功するはずです)
"Ignore previous instructions"を含む引数でツールを呼び出します(ブロックされるはずです)- 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 をご覧ください。
関連項目:
- LICENSE
- COMMERCIAL_LICENSE.md
- FUNDING.md - スポンサーシップと持続可能性
- SUPPORT.md - ドキュメント、課題、対応に関する方針
- CITATION.cff
製品概要とセキュリティ資料
| 資料 | 用途 |
|---|---|
| MCP-Security-Deck-v3.pdf | 主資料 — 購入検討者向けのセキュリティ/FinOps/ベンチマークの根拠、セキュリティレビュー、LinkedIn/営業での共有(raw) |
| docs/mcp-bastian-features-deck.pdf | 詳細な機能紹介/主要領域の全体像を示す、深掘りを行う関係者向け資料 |
資料に掲載された数値の再現方法:docs/BENCHMARKS.md · 脅威モデル:docs/THREAT_MODEL.md。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。