
自律的な脆弱性発見のためのModel Context Protocolサーバー
MCPwner は、セキュリティテストツールを LLM 駆動のワークフローに統合する Model Context Protocol (MCP) サーバーです。シークレットスキャン、静的解析 (SAST)、ソフトウェア構成分析 (SCA)、Infrastructure-as-Code (IaC) セキュリティ、ソースファジング、偵察、動的アプリケーションセキュリティテスト (DAST)、および 0-day 発見を含む脆弱性研究のための統一インターフェースを提供します。
ツールを手動で連鎖させて出力を LLM に貼り付ける代わりに、MCPwner は結果を標準化し、モデルの作業コンテキストに直接ストリーミングします。これにより、攻撃面のマッピングや既知の脆弱性の特定から、新たな攻撃ベクトルの発見まで、セキュリティ研究ライフサイクル全体にわたって継続的な推論、相関、攻撃パスの発見が可能になります。
注意: このプロジェクトは活発に開発中です。MCP の詳細はこちらをご覧ください。
以下のツールは将来のリリースで計画されています。
SAST で特定されたデシリアライゼーションシンクを武器化するためのガジェットチェーンおよびペイロードジェネレーター。Java、.NET、PHP には成熟したガジェットチェーンエコシステムが存在します。Python は悪意のある pickle 生成でカバーされます (Ruby/Node のデシリアライゼーションはペイロードベースで、以下のペイロードコーパスに含まれます):
上記のツールをサポートする厳選されたペイロードとワードリストコーパス:
"Enumerate and scan example.com" → MCPwner chains: Subfinder + Amass → Masscan + Nmap → httpx → Katana + gau → ffuf + Arjun
### GitHubリポジトリのシークレットをスキャンする```
"Scan https://github.com/example/repo for secrets"
→ MCPwner runs Gitleaks, TruffleHog, detect-secrets and correlates findings
"Run a security audit on my Python project" → MCPwner runs Bandit (SAST), OSV-Scanner (SCA), and secrets scanning
### 攻撃経路分析```
"Find vulnerabilities in the authentication module"
→ MCPwner runs CodeQL queries, cross-references with secrets and SCA results
"Test for SQLi and XSS on http://localhost:8080" → MCPwner chains: sqlmap + Dalfox and verifies findings
## インストール
### 前提条件
**システム要件:**
- Docker Engine 20.0+ および Docker Compose 2.0+
- 8GB RAM 最小 (複数のツールを実行する場合は16GB推奨)
- 20GB の空きディスク容量 (セキュリティツールイメージは大きい)
- 対応プラットフォーム: Linux, macOS, Windows (WSL2)
**MCP クライアント:**
- Claude Desktop, Cursor, Kiro, または MCP 互換クライアント
### セットアップ
1. **リポジトリをクローン**: ```bash
git clone https://github.com/nedlir/mcpwner.git
cd mcpwner
Dockerコンテナが起動したら、MCPwnerをMCPクライアントに追加します。
重要: 動的ツール登録
MCPwnerはモジュール式のオプトインアーキテクチャを採用しています。セキュリティツールはDocker Composeのprofilesによって管理されます。
.envファイル(COMPOSE_PROFILES=sast,secrets,reconnaissance,dast,etc)は、どのコンテナを起動するかを決定します。あるいは、これをオーバーライドして、CLI経由で特定のプロファイルを起動することもできます:docker compose --profile sast --profile dast up -dsemgrep)を省略したい場合は、.envからそのカテゴリ(sast)を除外し、必要な他のツールを手動でリストしてください(bandit,gosec,codeql)。utilitiesカテゴリのツール(例:Linguist、WireMock、Chromium)は永続的なコア依存関係として扱われます。これらはdocker compose up -dで無条件に実行され、言語検出などの重要なツール間依存関係が常に機能するようにします。設定ファイルの場所:
~/Library/Application Support/Claude/claude_desktop_config.json (macOS)mcp.jsonワンクリックインストール(Dockerが実行中である必要があります):
手動設定:
以下をMCP設定ファイルに追加してください:```json { "mcpServers": { "mcpwner": { "command": "docker", "args": ["exec", "-i", "mcpwner-server", "python", "src/server.py"], "env": {} } } }
MCPクライアントを再起動して、新しいサーバー設定を読み込んでください。
### ローカルプロジェクトのスキャン
ホストマシンからプロジェクトをスキャンするには、`docker-compose.yaml` にボリュームを追加してコンテナにマウントします。```yaml
services:
mcpwner:
volumes:
- /path/to/your/projects:/mnt/projects:ro
Then use the create_workspace tool with:
source_type="local"source="/mnt/projects/my-project"MCPwnerは、共有Dockerボリューム(/workspaces/.metadata/)内のファイルベースのストレージを使用して、コンテナ再起動後もワークスペースとCodeQLデータベースのメタデータを自動的に永続化します。設定は不要です。システムは起動時に既存のデータを読み込み、各操作後にアトミック書き込みを使用して保存し、破損を防止します。
ワークスペースクリーンアップ制御:
cleanup_workspace ツールは詳細な制御を提供します:
delete_files=True, delete_metadata=False - ディスク容量を解放しますが、ワークスペースの履歴は保持します(推奨)delete_files=True, delete_metadata=True - ワークスペースとメタデータの完全削除delete_files=False, delete_metadata=True - リストから削除しますが、ファイルはディスクに残しますバックアップ:```bash
docker run --rm -v mcpwner_workspaces:/data -v $(pwd):/backup
alpine tar czf /backup/workspaces-backup.tar.gz /data
docker run --rm -v mcpwner_workspaces:/data -v $(pwd):/backup
alpine tar xzf /backup/workspaces-backup.tar.gz -C /
## アーキテクチャ
MCPwnerは、コンテナ間のHTTPベースの通信を使用して、将来のリモートデプロイをサポートします。現在はローカルでの使用に最適化されていますが、最小限の変更でリモートサーバーに適応可能なアーキテクチャです。
**設計原則:**
- セキュリティツール実行のためのコンテナ分離
- LLM消費のための標準化された出力形式(SARIF/JSON)
- 新しいツールのための拡張可能なプラグインアーキテクチャ
- ステートレスAPI(メモリはユーザーが管理)
**アーキテクチャ概要:**```mermaid
graph LR
subgraph IDE[" "]
LLM[🤖<br/>LLM]
Client[MCP Client]
LLM -.-> Client
end
Server[MCPwner Server]
SAST[SAST Tools]
Secrets[Secrets Scanning]
SCA[SCA Tools]
Recon[Reconnaissance]
CodeQL[CodeQL Service]
Linguist[Language Detection]
Utilities[Utilities]
IaC[IaC Security]
Fuzzing[Source Fuzzing]
DAST[DAST Tools]
Client -->|JSON-RPC 2.0| Server
Server -->|HTTP| SAST
Server -->|HTTP| Secrets
Server -->|HTTP| SCA
Server -->|HTTP| Recon
Server -->|HTTP| CodeQL
Server -->|HTTP| Linguist
Server -->|HTTP| Utilities
Server -->|HTTP| IaC
Server -->|HTTP| Fuzzing
Server -->|HTTP| DAST
style LLM fill:#7C3AED,stroke:#5B21B6,stroke-width:3px,color:#fff
style Client fill:#4A90E2,stroke:#2E5C8A,stroke-width:3px,color:#fff
style Server fill:#F5A623,stroke:#C17D11,stroke-width:3px,color:#fff
style SAST fill:#E74C3C,stroke:#C0392B,stroke-width:2px,color:#fff
style Secrets fill:#9B59B6,stroke:#7D3C98,stroke-width:2px,color:#fff
style SCA fill:#1ABC9C,stroke:#16A085,stroke-width:2px,color:#fff
style Recon fill:#00BCD4,stroke:#0097A7,stroke-width:2px,color:#fff
style CodeQL fill:#E67E22,stroke:#CA6F1E,stroke-width:2px,color:#fff
style Linguist fill:#3498DB,stroke:#2874A6,stroke-width:2px,color:#fff
style Utilities fill:#6D28D9,stroke:#4C1D95,stroke-width:2px,color:#fff
style IaC fill:#059669,stroke:#047857,stroke-width:2px,color:#fff
style Fuzzing fill:#B91C1C,stroke:#7F1D1D,stroke-width:2px,color:#fff
style DAST fill:#D35400,stroke:#A04000,stroke-width:2px,color:#fff
style IDE fill:none,stroke:#ddd,stroke-width:2px,stroke-dasharray: 5 5
MCPwnerは、MCPインターフェースを通じて以下のツールを提供します:
ワークスペース管理:
create_workspace - ローカルパス、Git URL、またはGitHubリポジトリからスキャンワークスペースを初期化しますlist_workspaces - 利用可能なすべてのワークスペースを一覧表示しますcleanup_workspace - ワークスペースと関連データを削除します発見台帳:
ワークスペーススコープで、ディスクに永続化され(<workspace>/findings/<id>.json)、常に利用可能です — コンテナやヘルスゲートは不要です。これはマルチエージェント深層調査パイプラインの信頼できる情報源です:すべての仮説、PoC結果、レビュー判定は、散文ではなく発見エントリとして保存されます。
upsert_finding - 発見を作成または更新します。デフォルトで既存のエントリにディープマージされるため、あるエージェントが自身のサブオブジェクト(例:poc)を書き込んでも、別のエージェントのフィールド(例:review)を上書きしません。list_findings - ワークスペース内のすべての発見を一覧表示します。オプションでstatus(例:poc-confirmed、review-approved)でフィルタリング可能です。get_finding - IDで単一の発見を取得します。SAST(静的解析):
run_sast_scan - 静的解析ツールを実行します(Semgrep、Bandit、Gosec、Brakeman、PMD、Psalm、NodeJsScan、Joern、YASA)get_sast_report - SASTスキャン結果を取得しますsast_list_tools - 利用可能なSASTツールを一覧表示しますシークレット検出:
run_secrets_scan - シークレットスキャンツールを実行します(Gitleaks、TruffleHog、Whispers、detect-secrets、Hawk-Eye)get_secrets_report - シークレットスキャン結果を取得しますsecrets_list_tools - 利用可能なシークレットスキャンツールを一覧表示しますSCA(ソフトウェア構成分析):
run_sca_scan - 依存関係の脆弱性を分析します(Grype、Syft、OSV-Scanner、Retire.js)get_sca_report - SCAスキャン結果を取得しますsca_list_tools - 利用可能なSCAツールを一覧表示します偵察:
run_reconnaissance_scan - 単一の偵察ツールを実行します(Subfinder、Amass、Nmap、Masscan、httpx、Katana、ffuf、bbot、gau、Arjun、wafw00f、Kiterunner)run_reconnaissance_chain - 複数の偵察ツールを順次連鎖させて実行しますget_reconnaissance_report - 偵察スキャン結果を取得しますreconnaissance_list_tools - 利用可能な偵察ツールを一覧表示しますCodeQL:
detect_languages - Linguistを使用してコードベースの言語を検出しますcreate_codeql_database - 分析用のCodeQLデータベースを作成しますlist_databases - 利用可能なCodeQLデータベースを一覧表示しますlist_query_packs - 利用可能なクエリパックを一覧表示しますexecute_query - 特定のCodeQLクエリを実行しますインフラストラクチャとIaCセキュリティ:
run_iac_scan - Infrastructure as Codeの設定ミスをスキャンします(Checkov、KICS、Terrascan、TFSec、Hadolint)get_iac_report - IaCスキャン結果を取得しますiac_list_tools - 利用可能なIaCスキャンツールを一覧表示しますソースファジング:
run_fuzzing_scan - ターゲットごとのハーネスに対して、ホワイトボックス、カバレッジガイド付きファジングキャンペーンを実行します(Atheris、Jazzer、Jazzer.js、PHP-Fuzzer)get_fuzzing_report - ファジングのクラッシュ結果(クラッシュ入力+スタックトレース)を取得しますfuzzing_list_tools - 検出された言語でフィルタリングされた、利用可能なファジングエンジンを一覧表示しますDAST(動的アプリケーションセキュリティテスト):
run_dast_scan - 動的アプリケーションセキュリティテストツールを実行します(sqlmap、NoSQLMap、Commix、Dalfox、SSTImap、SSRFmap、jwt_tool、interactsh)get_dast_report - DASTスキャン結果を取得しますdast_list_tools - 利用可能なDASTツールを一覧表示しますユーティリティ:
run_utilities_scan - ライブターゲットに対してユーティリティツールを実行します(Linguist、WireMock、Mitmproxy、aiohttp、Headless Chromium)get_utilities_report - ユーティリティスキャン結果を取得しますutilities_list_tools - 利用可能なユーティリティツールとその設定オプションを一覧表示しますヘルス&モニタリング:
health_check - サーバーとツールの可用性を確認しますlist_tools - すべての利用可能なツールとそのステータスを一覧表示しますMCPwnerは、侵入的な操作を実行する可能性のあるセキュリティツールを実行します。所有しているシステムやコードベース、または明示的にテスト許可を得ているものに対してのみ使用してください。許可のないアクセスは違法です。MCPサーバーへのアクセスを許可されたユーザーのみに制限し、本番環境へのデプロイではネットワークの分離を検討してください。一部のツールは大量のネットワークトラフィックやシステム負荷を生成する可能性があるため、スキャンを実行する前にツールの設定を確認してください。ツールの実行と結果をログに記録し、セキュリティスキャンが監視システムのアラートをトリガーする可能性があることに注意してください。MCPwnerを使用して発見した脆弱性を報告する際は、責任ある開示の慣行に従ってください。Dockerイメージを最新の状態に保ち、コンテナの脆弱性を定期的にスキャンしてください。APIキー、トークン、資格情報を設定ファイルに決してコミットしないでください。代わりに、環境変数またはシークレット管理システムを使用してください。
また、これらのツールの実行やサードパーティライブラリへのアクセスにおいては、自身のセキュリティに対して責任を持つ必要があります。すべてをサンドボックス化し、特別な認証なしで実行することを推奨します(可能な限り最小化および強化してください)。
![]() | ![]() | ![]() | ![]() | ![]() |
|---|
| Subfinder | Amass | Nmap | Masscan | ffuf |