io.github.pierre3/zap-mcp
dotnet-zap-mcp
OWASP ZAP 用の MCP (Model Context Protocol) サーバーです。AI エージェント (Claude、GitHub Copilot など) が MCP 経由で ZAP の脆弱性スキャンを操作できるようにします。
特徴
OWASP ZAP を制御するための 45 個の MCP ツール (スキャン、アラート、スパイダー、Ajax スパイダー、コンテキスト、認証、レポートなど)
組み込みの Docker Compose 管理 (1 回のツール呼び出しで ZAP を起動/停止)
ゼロ設定セットアップ: API キーを自動生成し、Docker アセットを展開
あらゆる MCP 互換クライアント (Claude Desktop、VS Code など) で動作
Related MCP server: Grype MCP Server
インストール
dotnet tool install -g dotnet-zap-mcp前提条件
docker compose対応の Docker (Docker Engine または Docker Desktop) (組み込みの ZAP コンテナ管理用)
設定
ゼロ設定 (推奨)
設定は不要です。エージェントが DockerComposeUp を呼び出すと、自動的に次の処理が行われます:
Docker アセットを
~/.zap-mcp/docker/に展開ランダムな API キーを生成
localhost:8090で ZAP コンテナを起動ZAP が正常になるまで待機
データの永続化
ZAP コンテナは 2 つの Docker 名前付きボリュームを使用します:
ボリューム | コンテナパス | 目的 |
|
| ZAP の設定、コンテキスト、セッション、スキャンポリシー (再起動後も保持) |
|
| レポート、セッションファイル、コンテキストのインポート/エクスポート用の共有ディレクトリ |
初回起動時には、テンプレートの config.xml が zap-home にコピーされます。以降の起動では API キーのみが更新され、ZAP を通じて行った変更 (コンテキスト、認証設定、スキャンポリシーなど) は保持されます。
zap-data ボリュームには以下が含まれます:
reports/— 生成されたスキャンレポートsessions/— 保存された ZAP セッションcontexts/— エクスポートされたコンテキストファイル
Claude Desktop / Claude Code
MCP 設定に追加します:
{
"mcpServers": {
"zap": {
"command": "zap-mcp"
}
}
}VS Code (Copilot)
.vscode/mcp.json に追加します:
{
"servers": {
"zap": {
"command": "zap-mcp"
}
}
}既存の ZAP インスタンスを使用する場合
既に ZAP インスタンスが実行されている場合は、環境変数で接続情報を渡します:
{
"mcpServers": {
"zap": {
"command": "zap-mcp",
"env": {
"ZAP_BASE_URL": "http://localhost:8090",
"ZAP_API_KEY": "your-api-key"
}
}
}
}利用可能なツール
Docker 管理
ツール | パラメータ | 説明 |
| — | ZAP コンテナを起動し、正常になるまで待機 |
| — | ZAP コンテナを停止して削除 |
| — | コンテナの状態を確認 |
|
| 最近のコンテナログを取得 |
ZAP コア
ツール | パラメータ | 説明 |
| — | ZAP への接続を確認 |
| — | 記録されたホストを一覧表示 |
| — | 記録されたサイトを一覧表示 |
|
| ベース URL の記録済み URL を一覧表示 |
スパイダー
ツール | パラメータ | 説明 |
|
| ページをクロールして発見するスパイダースキャンを開始 |
|
| スパイダーの進行状況を確認 (0〜100%) |
|
| スパイダーが発見した URL を取得 |
|
| 実行中のスパイダースキャンを停止 |
アクティブスキャン
ツール | パラメータ | 説明 |
|
| アクティブな脆弱性スキャンを開始 |
|
| アクティブスキャンの進行状況を確認 (0〜100%) |
|
| 実行中のアクティブスキャンを停止 |
パッシブスキャン
ツール | パラメータ | 説明 |
| — | パッシブスキャンの進行状況を確認 (残りレコード数) |
アラート
ツール | パラメータ | 説明 |
|
| リスクレベル別のアラート数 |
|
| ページネーションとリスクフィルター付きの詳細なアラート一覧 |
レポート
ツール | パラメータ | 説明 |
| — | HTML スキャンレポートを生成 |
| — | JSON スキャンレポートを生成 |
| — | XML スキャンレポートを生成 |
コンテキスト管理
ツール | パラメータ | 説明 |
| — | ZAP で定義されたすべてのコンテキストを一覧表示 |
|
| コンテキストの詳細を取得 (スコープパターンなど) |
|
| 新しいコンテキストを作成 |
|
| コンテキストを削除 |
|
| コンテキストスコープに URL の包含パターンを追加 |
|
| コンテキストスコープに URL の除外パターンを追加 |
|
| コンテキストファイルを ZAP にインポート |
|
| コンテキストをファイルにエクスポート |
認証
ツール | パラメータ | 説明 |
|
| コンテキストに設定された認証方法を取得 |
|
| 認証方法を設定 (フォームベース、JSON ベース、スクリプトベース、HTTP) |
|
| ログイン状態を示す正規表現パターンを設定 |
|
| ログアウト状態を示す正規表現パターンを設定 |
ユーザー
ツール | パラメータ | 説明 |
|
| コンテキストのすべてのユーザーを一覧表示 |
|
| 新しいユーザーを作成 |
|
| ユーザーを削除 |
|
| ユーザー資格情報を設定 (ユーザー名/パスワード) |
|
| ユーザーを有効または無効にする |
強制ユーザー
ツール | パラメータ | 説明 |
|
| コンテキストの強制ユーザーを設定 |
|
| 強制ユーザーモードをグローバルに有効/無効にする |
|
| 強制ユーザーモードの状態と現在の強制ユーザーを取得 |
Ajax スパイダー
ツール | パラメータ | 説明 |
|
| JavaScript 多用アプリ用の Ajax スパイダーを開始 |
|
| 特定のユーザーとして Ajax スパイダーを開始 |
| — | Ajax スパイダーの状態を取得 (実行中/停止) |
| — | Ajax スパイダーの結果サマリーを取得 |
| — | Ajax スパイダーを停止 |
一般的なワークフロー
エージェントが
DockerComposeUpを呼び出して ZAP を起動ブラウザ/Playwright を ZAP のプロキシ (
http://127.0.0.1:8090) として設定プロキシ経由で対象アプリケーションを閲覧
エージェントが
StartSpiderを呼び出してアプリケーションをクロールし、GetSpiderStatusで進行状況を監視エージェントが
GetPassiveScanStatusを呼び出してパッシブスキャンの完了を待機エージェントが主要ページに対して
StartActiveScanを呼び出し、GetActiveScanStatusで進行状況を監視エージェントが
GetAlertsSummaryとGetAlertsを呼び出して脆弱性の検出結果を取得エージェントが
GetHtmlReportまたはGetJsonReportを呼び出してスキャンレポートを生成完了したらエージェントが
DockerComposeDownを呼び出す
注: ZAP の設定 (コンテキスト、認証、スキャンポリシー) は
zap-homeDocker ボリュームに永続化されます。設定を失うことなくコンテナを停止して再起動できます。
試してみる (同梱の脆弱なアプリを使用)
このリポジトリには、ZAP スキャンを試すための意図的に脆弱な Web アプリケーションが含まれています。このアプリには一般的な脆弱性 (XSS、SQL インジェクション、CSRF、オープンリダイレクト) が含まれており、ZAP が実際の検出結果を見つけられます。
セットアップ
# Start ZAP and the vulnerable target app
docker compose -f tests/docker/docker-compose.test.yml up -d --build
# Wait until both containers are healthy
docker compose -f tests/docker/docker-compose.test.yml ps次に、MCP クライアントをこの ZAP インスタンスに接続するように設定します:
{
"mcpServers": {
"zap": {
"command": "zap-mcp",
"env": {
"ZAP_BASE_URL": "http://localhost:8090",
"ZAP_API_KEY": "test-api-key-for-ci"
}
}
}
}脆弱なアプリには、Dockerネットワーク内(ZAPが使用)からは
http://targetで、ホストマシンからはhttp://localhost:8080でアクセスできます。
例1: クイックスキャン
エージェントへのプロンプト:
http://target の脆弱性をスキャンしてください。スパイダークロールを実行し、パッシブスキャンが完了するのを待ってから、アラートの概要を表示し、HTMLレポートを生成してください。
期待されるツールのフロー:
GetVersion → Verify ZAP connectivity
StartSpider → url: "http://target"
GetSpiderStatus → Poll until 100%
GetPassiveScanStatus → Poll until 0 records remaining
GetAlertsSummary → baseUrl: "http://target"
GetAlerts → baseUrl: "http://target"
GetHtmlReport → Generate reportZAPは /search、/login、/users、/about、/contact などのページを発見し、パッシブスキャンはセキュリティヘッダーの欠落やCSRF脆弱性などの問題を報告します。
例2: 認証付きスキャン
/admin ページにはログインが必要です(ユーザー名: admin、パスワード: password)。認証付きスキャンにより、ZAPは保護されたページにアクセスできます。
エージェントへのプロンプト:
http://target の認証付きスキャンを設定してください。ログインフォームは /login にあり、フィールドは "username" と "password" です(認証情報: admin / password)。ログイン成功の指標は "Welcome, admin" です。認証を設定した後、認証済みユーザーとしてサイトをスパイダーし、アクティブスキャンを実行してください。
期待されるツールのフロー:
CreateContext → contextName: "target-auth"
IncludeInContext → regex: "http://target.*"
SetAuthenticationMethod → contextId, authMethodName: "formBasedAuthentication",
authMethodConfigParams: "loginUrl=http://target/login&loginRequestData=username%3D%7B%25username%25%7D%26password%3D%7B%25password%25%7D"
SetLoggedInIndicator → loggedInIndicatorRegex: "Welcome, admin"
CreateUser → contextId, name: "admin"
SetAuthenticationCredentials → contextId, userId, authCredentialsConfigParams: "username=admin&password=password"
SetUserEnabled → contextId, userId, enabled: true
SetForcedUser → contextId, userId
SetForcedUserModeEnabled → enabled: true
StartSpider → url: "http://target", contextName: "target-auth"
GetSpiderStatus → Poll until 100%
GetPassiveScanStatus → Poll until 0 records remaining
StartActiveScan → url: "http://target"
GetActiveScanStatus → Poll until 100%
GetAlertsSummary → baseUrl: "http://target"
GetAlerts → baseUrl: "http://target"
SetForcedUserModeEnabled → enabled: false認証が設定されると、ZAPは /admin にアクセスし、ログインの背後にある脆弱性をテストできます。
例3: 完全な脆弱性評価
エージェントへのプロンプト:
http://target の完全な脆弱性評価を実行してください。サイトをクロールし、アクティブスキャンを実行してから、発見されたすべての脆弱性をリスクレベル別に分類した詳細な内訳を提供してください。
期待されるツールのフロー:
StartSpider → url: "http://target", recurse: true
GetSpiderStatus → Poll until 100%
GetSpiderResults → Review discovered URLs
GetPassiveScanStatus → Poll until 0 records remaining
StartActiveScan → url: "http://target", recurse: true
GetActiveScanStatus → Poll until 100%
GetAlertsSummary → baseUrl: "http://target"
GetAlerts → baseUrl: "http://target", riskId: "3" (High)
GetAlerts → baseUrl: "http://target", riskId: "2" (Medium)
GetAlerts → baseUrl: "http://target", riskId: "1" (Low)
GetHtmlReport → Generate final reportアクティブスキャンは以下の脆弱性を検出します:
高: SQLインジェクション (
/users?id=)、クロスサイトスクリプティング (/search?q=)中: CSRF(
/loginのトークン欠落)、オープンリダイレクト (/redirect?url=)低/情報: セキュリティヘッダーの欠落、Cookieの問題など
クリーンアップ
docker compose -f tests/docker/docker-compose.test.yml down -vライセンス
This server cannot be deployed
Maintenance
Related MCP Connectors
Security scanner for AI agents: prompt injection, leaked secrets, PII, and SSRF-risk URL detection.
Security scanner for AI agents and MCP servers: injection, jailbreak, tool abuse.
CVE lookups (NVD) and dependency-manifest audits (OSV) for AI agents. No API keys.
CVE lookups (NVD) and dependency-manifest audits (OSV) for AI agents. No API keys.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceIntegrates OWASP ZAP security testing with AI assistants through MCP, enabling automated vulnerability scanning and AI-powered security analysis during development. Supports multiple scan types including active, passive, and AJAX spider scans with real-time status updates.5MIT

Grype MCP Serverofficial
AlicenseAqualityFmaintenanceEnables AI assistants to perform vulnerability scanning using Grype, supporting scans of directories, container images, and packages via the Model Context Protocol.99Apache 2.0- FlicenseNot gradedqualityDmaintenanceA lightweight MCP server that wraps OWASP ZAP's REST API as Model Context Protocol tools, enabling AI agents to perform automated security scanning.-

Aribot MCPofficial
AlicenseNot gradedqualityDmaintenanceEnables security work such as threat modeling, scanning, compliance checks, and remediation through AI assistants using the Model Context Protocol.MIT