Mastyf.ai について
Mastyf.ai は、AI エージェントと MCP のためのローカル参照モニターおよびセキュリティゲートウェイとして動作する、オープンソースの AI セキュリティプラットフォームです。ツール呼び出しを実行前にポリシーで判定し、すべての決定を記録します。エージェントの動作を制限したいチーム向けです。
主な機能
- 01ツール呼び出しごとの傍受と判定
- 02パターン、スキーマ、意味レベルの多層チェック
- 03audit、warn、block の実行モード
- 04活動ログとコスト集計を備えたダッシュボード
活用シーン
- 01エージェントによる機密パスへのアクセスや鍵の漏えいを遮断
- 02デプロイ前のポリシーに対する敵対的テスト
MCP 対応
本プロジェクトは MCP クライアントとツールバックエンドの間に置かれるゲートウェイとして、ツール呼び出しをポリシーに基づき検査・遮断します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y @mastyf_ai/serverMASTYF_AI_DB_PATHPath to SQLite history databaseALERT_WEBHOOK_URLシークレットSlack or Discord webhook for critical alertsMETRICS_ENABLEDExpose Prometheus metricsローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
mastyf.ai
プロンプトだけでなく、アクションの境界を守ります。
AI エージェントと MCP 向けのローカル参照モニター兼セキュリティゲートウェイです。
LLM がアクションを提案し、Mastyf がそのアクションを現実世界に反映させるかどうかを判断します。
ウェブサイト · クイックスタート · ポリシー · ダッシュボード · GitHub
メモ
エンタープライズおよびクラウドプラットフォームのサポート: Mastyf は、分散 Redis 状態、サブ秒単位のフェイルクローズ型適用、リアルタイムの BigQuery 監査ログを備えた、Google Cloud Agent Gateway(
us-central1)向けネイティブCONTENT_AUTHZService Extension として検証され、デプロイされています。Google Agent Gateway Runbookをご覧ください。
問題
AI エージェントは、ファイルの読み取り、コードのプッシュ、データベースへのクエリ、シェルコマンドの実行、外部 API の呼び出しを行えます。しかも、機械の速度で自律的に実行します。
従来のセキュリティ制御は、そのような事態を想定して作られていません。
Mastyf.ai は、AI 向けの境界セキュリティレイヤーとして機能します。すべてのツール呼び出しを傍受し、マルチエージェント・スウォーム分析を用いてセキュリティポリシーと照合し、悪意のあるアクションや許可されていないアクションが実行される前にブロックします。
すべての判断が適用され、ログに記録され、監査可能です。
防止する脅威
| 脅威 | 発生例 |
|---|---|
| プロンプトインジェクション | エージェントの動作を乗っ取るため、ツール引数に埋め込まれた悪意のある指示 |
| パストラバーサル | /etc/passwd、.ssh/id_rsa、.aws/credentials へのアクセス試行 |
| シークレットの窃取 | ツール引数を通じて漏えいする API キーやトークン |
| シェルインジェクション | リバースシェル、rm -rf、エンコードされた PowerShell コマンド |
| データの持ち出し | 大量の SQL ダンプ、git push、aws s3 cp、許可されていないファイル転送 |
| SSRF | メタデータエンドポイント、localhost、プライベート IP 範囲への呼び出し |
| エンコーディングによる回避 | パターン検出を回避するために使われる Base64 のデータや Unicode のホモグリフ |
| コストの悪用 | トークン予算を消費し続ける、止まらないエージェントのループ |
| ラグプル攻撃 | セッション中にひそかに変更されるツール定義 |
クイックスタート
🛡️ Mastyf セキュリティゲートウェイと保護されたエージェント(Python クイックスタート)
ローカルの参照モニター、MCP ディスカバリー、平易な英語で操作する保護エージェントのランタイムを起動します:
# Install Mastyf Gateway package
git clone https://github.com/mastyf-ai/mastyf.ai.git
cd mastyf.ai/mastyf_gateway
pip install -e .
# Launch Mastyf (Auto-discovers tools, prompts for permissions, and starts protected agent)
mastyf
- 初回起動時に、Mastyf はローカルの MCP サーバー/ツールを自動検出し、平易な英語で必要な権限を尋ね、保守的な差分を提示します。確認後、ポリシーが有効になります。
- 会話型エージェントからのすべてのツール実行提案は、参照モニター($A = \text{CBAC} \cap \text{DIFC} \cap \text{Workflow}$)によって傍受されます。ALLOW 以外のアクションでは、ツールのバックエンドに厳密に 0 バイトが送信されます。
- リアルタイムのセキュリティ HUDと、暗号学的な監査証跡の連鎖(
mastyf audit verify)が含まれます。
よく使う CLI コマンド
# Start interactive protected agent (or first-run onboarding if fresh install)
mastyf
# Run a single query non-interactively
mastyf -m "Find unpaid customer invoices"
# Propose a policy change in plain English
mastyf policy "Allow reading invoices, but never delete data or make HTTP calls"
# Inspect staged proposed policy vs active policy diff
mastyf policy status
# Promote staged policy to active enforcement
mastyf policy activate
# Intercept an MCP server via stdio reverse proxy
mastyf proxy -- uvx mcp-server-sqlite --db /tmp/test.db
# Cryptographically verify the tamper-evident execution receipt ledger
mastyf audit verify --ledger ~/.mastyf/receipts.jsonl
# Run local action boundary failure mode demonstrations
mastyf demo --scenario all
ソースからビルドする(TypeScript/クラウドプラットフォーム)
リポジトリをクローンし、セットアップスクリプトを実行します。
必要なもの:
- Git
- Linux(必要に応じて、セットアップスクリプトが Nix を自動インストールします)
git clone https://github.com/mastyf-ai/mastyf.ai.git
cd mastyf.ai
chmod +x setup.sh
./setup.sh
セットアップスクリプトは次の処理を自動的に行います:
- Nix をインストールします(必要な場合)
- Nix flakes を有効にします
- 開発環境を作成します
- プロジェクトの依存関係をすべてインストールします
- ネイティブパッケージを再ビルドします
- プロジェクト全体をビルドします
- 便利な
mastyfシェルエイリアスを追加します
インストールが完了したら、プロキシとダッシュボードを起動します:
node dist/cli.js start
または、新しいターミナルを開いた後にエイリアスを使用するだけです:
mastyf
ダッシュボードは次の場所で利用できます:
- ダッシュボード:http://localhost:4000
インストールをテストする
ダッシュボードが起動している場合は、HTTP ブリッジを確認します:
curl -X POST http://localhost:4000/mcp -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","id":"1","method":"tools/list","params":{}}'
ダッシュボード
AI が行うすべてのアクションを完全に可視化します。
| セクション | 表示内容 |
|---|---|
| 保護 | ブロック率、よくトリガーされるルール、リアルタイムの脅威フィード |
| アクティビティ | 各ツール呼び出しの全引数、許可またはブロックの状態、タイムスタンプ |
| ポリシー | YAML からのホットリロードに対応したリアルタイムのルールエディター |
| 脅威ラボ | AI が提案する攻撃テスト。適用前にレビューして承認します |
| コスト | ツール呼び出しごとに内訳を示したトークン使用量とコストの見積もり |
ダッシュボード認証は、ループバック接続を含め、デフォルトで有効です。起動スクリプトは
$MASTYF_HOME/dashboard_api_keyを作成しますが、その値を表示することはありません。DASHBOARD_AUTH_DISABLED=trueを設定できるのは、ローカルで明示的にテストを分離する場合に限られます。この設定は、ループバック以外のアドレスへのバインドでは拒否されます。
強制適用の仕組み
すべてのツール呼び出しは、インフラストラクチャに到達する前に 3 つのレイヤーを通過します。
レイヤー 1 - パターン検出 インジェクション、危険なパス、漏えいしたシークレット、シェルコマンド、エンコーディングの細工を正規表現ベースでスキャンします。外部依存関係なしにマイクロ秒単位で実行されます。
レイヤー 2 - スキーマ検証 ポリシー評価に進む前に、不正なペイロード、サイズ超過の引数、JSON-RPC 違反を拒否します。
レイヤー 3 - セマンティックレビュー パターンチェックを通過した境界的な呼び出しを、オプションのローカル LLM(Ollama)またはクラウドモデルで評価します。モデルが設定されていない場合は、ヒューリスティックにフォールバックします。
いずれかのチェックに失敗するとブロックされます。ツールは実行されません。すべてログに記録されます。
ポリシー
ルールは default-policy.yaml にあります。ルールを管理するのはあなたです。mastyf.ai がルールを強制します。
policy:
mode: block
default_action: pass
unicode_strict: true
rules:
- name: block-sensitive-paths
action: block
argPatterns:
- field: path
patterns: ['^/etc/', '/\.ssh', '/\.aws/credentials']
- name: rate-limit-tool-calls
action: block
maxCallsPerMinute: 120
- name: block-shell-injection
action: block
patterns: ['rm\s+-rf', 'curl\s', 'wget\s', '`[^`]+`']
3 つの強制適用モードを使って、安全に展開できます:
| モード | 動作 | 使用するタイミング |
|---|---|---|
audit | すべてをログに記録し、何もブロックしません | 最初の週。AI の動作を把握します |
warn | ログに記録して警告しますが、引き続き転送します | 強制適用前の調整段階 |
block | 実行前に違反を停止します | 本番環境 |
HIPAA、PCI-DSS、GxP、データレジデンシー用の事前構築済みテンプレートは、policy-templates/ にあります。
アーキテクチャ
mastyf.ai は、連携する 2 つのスウォームを稼働させます。CI スウォームは、コードのリリース前にポリシーを攻撃します。ランタイムスウォームは、本番環境で発生するすべてのライブツール呼び出しに対してポリシーを適用し、そこから学習します。4 つのフィードバックループが両者をつなぎ、システムが時間とともに回避されにくくなります。
flowchart TB
AI["🤖 AI Clients\nCursor · Claude Desktop · Cline"]
subgraph CI["🔵 CI Swarm (PR + Nightly)"]
direction LR
Scout["🔍 Scout Agent\nSAST, deps, config scan"]
Corpus["📋 Corpus Agent\n228 fixtures eval"]
Evasion["⚡ Evasion Agent\n120+ probes + generate new"]
Parity["🔄 Parity Agent\nNode vs Python"]
ProxyA["🖥️ Proxy Agent\nLive stdio MCP tests"]
Report["📊 Report Agent\nsecurity-swarm/latest.json"]
Scout --> Corpus --> Evasion --> Parity --> ProxyA --> Report
end
subgraph Runtime["🟢 Runtime Swarm (Production Proxy)"]
direction LR
BG["🛡️ BlockGuard\nsync policy"]
IL["📈 InstantLearner\nper-block stats + suggestions"]
SA["🧠 SemanticAuditor\nasync LLM, optional"]
PS["🔗 PatternSynthesizer\nbatch suggestions"]
Cal["⚙️ Calibrator\nlabels + thresholds"]
BG --> IL --> PS --> Cal
BG --> SA --> PS
end
Tools["🗄️ MCP Tools\nfilesystem · GitHub · databases · APIs"]
AI -->|"every tool call"| BG
BG -->|"✅ allowed"| Tools
Report -->|"🔁 Loop A: bypasses to corpus"| Corpus
Cal -->|"🔁 Loop B: blocks to rules"| BG
Cal -->|"🔁 Loop C: labels to LLM"| SA
Report -->|"🔁 Loop D: CI metrics weekly"| Cal
style CI fill:#EFF6FF,stroke:#3B82F6,stroke-width:2px,color:#1E3A5F
style Runtime fill:#F0FDF4,stroke:#22C55E,stroke-width:2px,color:#14532D
style Scout fill:#DBEAFE,stroke:#3B82F6,color:#1E40AF
style Corpus fill:#DBEAFE,stroke:#3B82F6,color:#1E40AF
style Evasion fill:#DBEAFE,stroke:#3B82F6,color:#1E40AF
style Parity fill:#DBEAFE,stroke:#3B82F6,color:#1E40AF
style ProxyA fill:#DBEAFE,stroke:#3B82F6,color:#1E40AF
style Report fill:#DBEAFE,stroke:#3B82F6,color:#1E40AF
style BG fill:#BBF7D0,stroke:#16A34A,color:#14532D
style IL fill:#BBF7D0,stroke:#16A34A,color:#14532D
style SA fill:#BBF7D0,stroke:#16A34A,color:#14532D
style PS fill:#BBF7D0,stroke:#16A34A,color:#14532D
style Cal fill:#BBF7D0,stroke:#16A34A,color:#14532D
style AI fill:#FEF3C7,stroke:#F59E0B,stroke-width:2px,color:#78350F
style Tools fill:#FEF3C7,stroke:#F59E0B,stroke-width:2px,color:#78350F
標準ゲート: 228/228 件のコーパス、回避 0 件、パリティ 100%
CI スウォーム
すべての PR と夜間に実行されます。6 つのエージェントが順番に動作し、それぞれが前のエージェントの発見事項を強化します。
| エージェント | 機能 |
|---|---|
| Scout | SAST スキャン、依存関係の監査、設定のレビュー |
| Corpus | 現行ポリシーに対して、228 件すべての攻撃フィクスチャを評価します |
| Evasion | 120 件以上の回避プローブを実行し、LLM を使用して新たなプローブを生成します |
| Parity | Node と Python の実装が同じ判定を出すことを検証します |
| Proxy | 稼働中のプロキシインスタンスに対する、ライブ stdio MCP セッションテスト |
| Report | 結果とメトリクスの全容を記載した security-swarm/latest.json を書き込みます |
ランタイムスウォーム
本番プロキシ内で、すべてのツール呼び出しに対して実行されます。
| コンポーネント | 機能 |
|---|---|
| BlockGuard | すべての呼び出しに対して、アクティブなポリシーを同期的に適用します。フェイルクローズ方式です。 |
| InstantLearner | ブロックごとの統計情報を追跡し、ルールの提案をリアルタイムで提示します |
| SemanticAuditor | パターンチェックを通過しても不審に見える呼び出しを、オプションで非同期に LLM でレビューします |
| PatternSynthesizer | InstantLearner と SemanticAuditor からの提案をまとめて、候補ルールを作成します |
| Calibrator | 候補にラベルを付け、しきい値を調整し、承認されたルールを BlockGuard に戻して反映します |
フィードバックループ
| ループ | シグナル | 効果 |
|---|---|---|
| A | CI で回避が発見された | コーパスに追加され、CI が以降その脅威を継続的に防御します |
| B | ランタイムのブロックパターン | 新しいルールに合成され、BlockGuard に反映されます |
| C | Calibrator のラベル | SemanticAuditor のしきい値の微調整に使用されます |
| D | CI メトリクス(毎週) | ランタイム設定を更新し、CI と本番環境を同期させます |
プロキシは、stdio、HTTP、SSE、streamable HTTP、WebSocket の 5 つのトランスポートに対応しています。
Redis、Postgres、Kubernetes を使用するエンタープライズデプロイについては、docs/ENTERPRISE_DEPLOYMENT.md を参照してください。
Threat Lab
Threat Lab はライブトラフィックを監視し、不審なパターンを検出すると、ローカル LLM を使って新しい攻撃テストケースを提案します。何も自動的には適用されません。提案がルールになる前に、ダッシュボードですべての提案を確認し、承認してください。
承認された発見事項は、継続的な回帰テストのために CI の攻撃コーパスにフィードバックされます。
ollama serve
ollama pull qwen3:8b
export OLLAMA_BASE_URL=http://127.0.0.1:11434
export MASTYF_AI_LLM_PROVIDER=ollama
export MASTYF_AI_LLM_MODEL=qwen3:8b
pnpm dashboard:proxy
MCP パッケージの信頼スコア
npm から MCP サーバーをインストールする前に、https://www.mastyf.ai/certified で信頼スコアを確認してください。スコアには、CVE の露出、タイポスクワッティングのリスク、メンテナーに関するシグナル、既知の攻撃パターンが反映されます。無料で、アカウント登録も不要です。
よく使うコマンド
| コマンド | 機能 |
|---|---|
pnpm dashboard:proxy | 標準のローカルアプライアンスおよびゲートウェイ BFF(:4000 の /api/gateway/*)。docs/DASHBOARD_CANONICAL_RUNBOOK.md を参照してください。 |
node dist/cli.js start | ポート 4000 でプロキシとダッシュボードを起動します |
node dist/cli.js onboard | MCP 設定をラップし、プロキシ経由でルーティングします |
node dist/cli.js doctor | DB、ポリシー、環境のヘルスチェックを実行します |
node dist/cli.js scan --all | MCP 設定をスキャンし、CVE とインジェクションのリスクを確認します |
pnpm test | テストスイート全体を実行します |
pnpm security-swarm:fast | セキュリティの回帰テストをすばやく実行します。所要時間は 5~15 分です |
pnpm security-swarm:analyze | 包括的な敵対的分析を実行します |
トラブルシューティング
| 問題 | 対処方法 |
|---|---|
| ダッシュボードにデータが表示されない | プロキシとダッシュボードで同じ MASTYF_AI_DB_PATH を共有する必要があります。デフォルトは ~/.mastyf-ai/history.db です |
dist/cli.js が見つからない | pnpm build を実行してください |
| AI が引き続きツールを直接呼び出す | node dist/cli.js onboard --apply を実行してください |
| 起動時に Ollama の警告が表示される | ollama serve を実行するか、環境から MASTYF_AI_LLM_PROVIDER を削除してください |
| npm install が失敗する | npm での公開はまだ開始されていません。git clone と pnpm install を使用してください |
詳しくはこちら
- エンタープライズデプロイ(Redis、Postgres、Helm)
- MCP ペリメーター製品ロードマップ(実行可能)
- 多層防御パイプライン
- Security Swarm と CI レッドチーム
- 実環境での MCP 統合例
- コア検出エンジン
学術研究論文と引用
Mastyf Guard、そのベンチマーク手法、または Cognitive Harvard Architecture を研究や本番システムで使用する場合は、オープンアクセスの出版物を引用してください。
Das, R. (2026). AI エージェントのペリメーター防御のための Cognitive Harvard Architectures:Capability-Based Access Control による Model Context Protocol における Confused Deputy 問題の解決。 Zenodo。doi: 10.5281/zenodo.22179415。
@article{das2026cognitive,
title={Cognitive Harvard Architectures for AI Agent Perimeter Defense: Resolving the Confused Deputy Problem in Model Context Protocol via Capability-Based Access Control},
author={Das, Rudraneel},
journal={Zenodo},
year={2026},
doi={10.5281/zenodo.22179415},
url={https://doi.org/10.5281/zenodo.22179415}
}
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。