Skip to main content
Glama
pierre3

io.github.pierre3/zap-mcp

by pierre3

dotnet-zap-mcp

NuGet NuGet Downloads Release

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

前提条件

  • .NET 10 SDK

  • docker compose 対応の Docker (Docker Engine または Docker Desktop) (組み込みの ZAP コンテナ管理用)

設定

ゼロ設定 (推奨)

設定は不要です。エージェントが DockerComposeUp を呼び出すと、自動的に次の処理が行われます:

  1. Docker アセットを ~/.zap-mcp/docker/ に展開

  2. ランダムな API キーを生成

  3. localhost:8090 で ZAP コンテナを起動

  4. ZAP が正常になるまで待機

データの永続化

ZAP コンテナは 2 つの Docker 名前付きボリュームを使用します:

ボリューム

コンテナパス

目的

zap-home

/home/zap/.ZAP

ZAP の設定、コンテキスト、セッション、スキャンポリシー (再起動後も保持)

zap-data

/zap/wrk/data

レポート、セッションファイル、コンテキストのインポート/エクスポート用の共有ディレクトリ

初回起動時には、テンプレートの config.xmlzap-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 管理

ツール

パラメータ

説明

DockerComposeUp

ZAP コンテナを起動し、正常になるまで待機

DockerComposeDown

ZAP コンテナを停止して削除

DockerComposeStatus

コンテナの状態を確認

DockerComposeLogs

tail

最近のコンテナログを取得

ZAP コア

ツール

パラメータ

説明

GetVersion

ZAP への接続を確認

GetHosts

記録されたホストを一覧表示

GetSites

記録されたサイトを一覧表示

GetUrls

baseUrl

ベース URL の記録済み URL を一覧表示

スパイダー

ツール

パラメータ

説明

StartSpider

urlmaxChildrenrecursesubtreeOnlycontextName

ページをクロールして発見するスパイダースキャンを開始

GetSpiderStatus

scanId

スパイダーの進行状況を確認 (0〜100%)

GetSpiderResults

scanId

スパイダーが発見した URL を取得

StopSpider

scanId

実行中のスパイダースキャンを停止

アクティブスキャン

ツール

パラメータ

説明

StartActiveScan

urlrecurseinScopeOnlyscanPolicyNamecontextId

アクティブな脆弱性スキャンを開始

GetActiveScanStatus

scanId

アクティブスキャンの進行状況を確認 (0〜100%)

StopActiveScan

scanId

実行中のアクティブスキャンを停止

パッシブスキャン

ツール

パラメータ

説明

GetPassiveScanStatus

パッシブスキャンの進行状況を確認 (残りレコード数)

アラート

ツール

パラメータ

説明

GetAlertsSummary

baseUrl

リスクレベル別のアラート数

GetAlerts

baseUrlstartcountriskId

ページネーションとリスクフィルター付きの詳細なアラート一覧

レポート

ツール

パラメータ

説明

GetHtmlReport

HTML スキャンレポートを生成

GetJsonReport

JSON スキャンレポートを生成

GetXmlReport

XML スキャンレポートを生成

コンテキスト管理

ツール

パラメータ

説明

GetContextList

ZAP で定義されたすべてのコンテキストを一覧表示

GetContext

contextName

コンテキストの詳細を取得 (スコープパターンなど)

CreateContext

contextName

新しいコンテキストを作成

RemoveContext

contextName

コンテキストを削除

IncludeInContext

contextNameregex

コンテキストスコープに URL の包含パターンを追加

ExcludeFromContext

contextNameregex

コンテキストスコープに URL の除外パターンを追加

ImportContext

contextFilePath

コンテキストファイルを ZAP にインポート

ExportContext

contextNamecontextFilePath

コンテキストをファイルにエクスポート

認証

ツール

パラメータ

説明

GetAuthenticationMethod

contextId

コンテキストに設定された認証方法を取得

SetAuthenticationMethod

contextIdauthMethodNameauthMethodConfigParams

認証方法を設定 (フォームベース、JSON ベース、スクリプトベース、HTTP)

SetLoggedInIndicator

contextIdloggedInIndicatorRegex

ログイン状態を示す正規表現パターンを設定

SetLoggedOutIndicator

contextIdloggedOutIndicatorRegex

ログアウト状態を示す正規表現パターンを設定

ユーザー

ツール

パラメータ

説明

GetUsersList

contextId

コンテキストのすべてのユーザーを一覧表示

CreateUser

contextIdname

新しいユーザーを作成

RemoveUser

contextIduserId

ユーザーを削除

SetAuthenticationCredentials

contextIduserIdauthCredentialsConfigParams

ユーザー資格情報を設定 (ユーザー名/パスワード)

SetUserEnabled

contextIduserIdenabled

ユーザーを有効または無効にする

強制ユーザー

ツール

パラメータ

説明

SetForcedUser

contextIduserId

コンテキストの強制ユーザーを設定

SetForcedUserModeEnabled

enabled

強制ユーザーモードをグローバルに有効/無効にする

GetForcedUserStatus

contextId

強制ユーザーモードの状態と現在の強制ユーザーを取得

Ajax スパイダー

ツール

パラメータ

説明

StartAjaxSpider

urlinScopecontextNamesubtreeOnly

JavaScript 多用アプリ用の Ajax スパイダーを開始

StartAjaxSpiderAsUser

contextNameuserIdurlsubtreeOnly

特定のユーザーとして Ajax スパイダーを開始

GetAjaxSpiderStatus

Ajax スパイダーの状態を取得 (実行中/停止)

GetAjaxSpiderResults

Ajax スパイダーの結果サマリーを取得

StopAjaxSpider

Ajax スパイダーを停止

一般的なワークフロー

  1. エージェントが DockerComposeUp を呼び出して ZAP を起動

  2. ブラウザ/Playwright を ZAP のプロキシ (http://127.0.0.1:8090) として設定

  3. プロキシ経由で対象アプリケーションを閲覧

  4. エージェントが StartSpider を呼び出してアプリケーションをクロールし、GetSpiderStatus で進行状況を監視

  5. エージェントが GetPassiveScanStatus を呼び出してパッシブスキャンの完了を待機

  6. エージェントが主要ページに対して StartActiveScan を呼び出し、GetActiveScanStatus で進行状況を監視

  7. エージェントが GetAlertsSummaryGetAlerts を呼び出して脆弱性の検出結果を取得

  8. エージェントが GetHtmlReport または GetJsonReport を呼び出してスキャンレポートを生成

  9. 完了したらエージェントが DockerComposeDown を呼び出す

注: ZAP の設定 (コンテキスト、認証、スキャンポリシー) は zap-home Docker ボリュームに永続化されます。設定を失うことなくコンテナを停止して再起動できます。

試してみる (同梱の脆弱なアプリを使用)

このリポジトリには、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 report

ZAPは /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

ライセンス

MIT

A
license - permissive license
Not graded
quality - not tested
D
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Integrates 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.
    5
    MIT
  • A
    license
    A
    quality
    F
    maintenance
    Enables AI assistants to perform vulnerability scanning using Grype, supporting scans of directories, container images, and packages via the Model Context Protocol.
    9
    9
    Apache 2.0
  • A
    license
    A
    quality
    D
    maintenance
    Enables AI agents to search, retrieve, and analyze vulnerability data from the NIST National Vulnerability Database through a comprehensive Model Context Protocol server.
    8
    8
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    A lightweight MCP server that wraps OWASP ZAP's REST API as Model Context Protocol tools, enabling AI agents to perform automated security scanning.

View all related MCP servers

Related MCP Connectors

  • 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.

  • Security scanner for MCP servers. Detect vulnerabilities, prompt injection, and tool poisoning.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/pierre3/dotnet-zap-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server