Kali MCP Server について
Kali MCP Serverは、Kali LinuxのセキュリティツールをLLMに接続し、ペネトレーションテストやセキュリティ評価に利用できます。分類されたツールをstdioで提供し、Docker内で実行できます。
主な機能
- 01偵察・ネットワークスキャンツール
- 02Web脆弱性テストとファジング
- 03パスワード解析とブルートフォース
- 04エクスプロイト検索とMetasploit実行
- 05Dockerによるコンテナ実行
活用シーン
- 01ドメイン、DNSレコード、ホストの列挙
- 02ネットワークポートとWeb脆弱性のスキャン
- 03パスワードハッシュとログイン情報のテスト
- 04エクスプロイト検索とMetasploitモジュール実行
MCP 対応
stdio経由で21種類のKaliセキュリティツールをMCPクライアントに公開し、コマンド出力とエラーログを返します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
🐉 Kali Linux MCP サーバー
📖 プロジェクト概要
Kali Linux MCP サーバーは、LLMを包括的な侵入テスト、偵察、列挙ツール群にネイティブに接続するために設計された、特化型のModel Context Protocol(MCP)実装です。FastMCP Python SDKを基盤とし、自然言語によるリクエストを、Kali Linux標準ユーティリティの安全にカプセル化されたコマンドライン実行に変換します。
これらのツールをMCPリソースとして公開することで、AIエージェントはWHOIS検索、Nmapスキャンの実行、Webディレクトリのファジング、エクスプロイトデータベースの検索、さらにはMetasploit Frameworkとの連携まで自律的に行い、その結果として標準出力とエラーログを構造化してLLMのコンテキストウィンドウに返します。
主な機能
- 🎯 包括的な侵入テスト用セキュリティツールキット:LLMに侵入テストツールの各種カテゴリをネイティブに公開します。機能は論理的に分類されており、パスワードクラッキングとブルートフォース攻撃、エクスプロイトとスニッフィング専用のモジュールも含まれます。
- 📦 自動化された分離コンテナ化:付属のDocker設定により、手間なく再現可能なセットアップを実現します。Debianパッケージのインストール中に手動プロンプトを抑制するため、環境変数
DEBIAN_FRONTEND=noninteractiveを使用し、完全に自動化されたビルドプロセスを保証します。 - ネイティブなMCP SDK統合:公式の
mcpPython SDKを基盤として堅牢に構築されています。環境は柔軟で、分離されたコンテナ内にSDKをグローバルにインストール(--break-system-packages)することも、ローカルのPython仮想環境を介してインストールすることもできます。 - ⚡ 標準化された
stdioトランスポート:JSON-RPC通信に標準入出力を直接使用することで、複雑なネットワーク設定を回避し、AI IDE(CursorやVS Codeなど)やデスクトップクライアント(Claude Desktopなど)との即時利用可能な互換性を確保します。
デモ
ハッシュクラッキング
脆弱性スキャン
前提条件
必要な依存関係は、選択した実行方法によって異なります。
オプションA:🐳 Dockerで実行(推奨)
Dockerを使用すると、Python 3、pip、およびKali Linuxツールの豊富なセット(nmap、sqlmap、tcpdump、metasploit-frameworkなど)を自動的に用意する分離コンテナ内でサーバーが実行されます。
- Docker Engine: インストールされ、実行中である必要があります。この方法は、ローカルにセキュリティツールを必要とせず、Windows、macOS、Linuxで問題なく動作します。
オプションB:🐍 ローカルPythonで実行
Dockerを使用せず、ホストマシン上で直接スクリプトを実行する場合は、必要なツールがホスト上でネイティブに利用できる必要があります。
- オペレーティングシステム: Kali Linux(推奨)、または必要な侵入テストツールがインストールされ、システムの
PATHに設定されている別のLinuxディストリビューション。 - Python: Python 3.10以降。
- 依存関係:
mcpPython SDK(pip install mcp)。 - 権限: パケットスニッフィング用の
tcpdumpなど、一部の公開ツールをネイティブに実行するには、明示的にroot権限が必要です。
セットアップ方法
🐳 オプション A:Docker 実装
このサーバーは多数の特定のバイナリツールに依存しているため、Docker でパッケージ化する方法が「ゴールドスタンダード」です。
最も手早く始めるには、Docker Hub から公式イメージをプルします。
docker pull cyberillo/kali-mcp-server:latest
MCP クライアントに必要な stdio トランスポートを使用して、コンテナを対話モードで実行するには、次のようにします。
docker run -i --rm kali-mcp-server
(注:tcpdump や netdiscover などのツールには、昇格された権限が必要です。これらのツールが明示的に必要な場合は、docker run コマンドに --privileged または特定の --cap-add フラグを追加する必要がある場合がありますが、一般的な使用では強く推奨されません。)
または、以下の手順に従って、自分で Docker イメージをビルドすることもできます。
Dockerfile の概要
-
ベースイメージ: サーバーは、公式の
kalilinux/kali-rollingベースイメージを基に構築されています。 -
ツールチェーンのインストール: システムを更新し、
nmap、sqlmap、metasploit-framework、gobuster、hydra、johnなどの必須ツールをインストールします。 -
ワードリスト:
rockyou.txtワードリストはデフォルトで圧縮されているため、自動的に展開され、パスワードクラッキングやファジングツールですぐに利用できます。 -
Python 環境: PEP 668 の
--break-system-packagesフラグを使用して、隔離されたコンテナ内にmcpPython SDK をグローバルにインストールします。
- リポジトリをクローンし、ディレクトリに移動します。
git clone https://github.com/cyberillo/kali-mcp-server.git
cd kali-mcp-server
- 🏗️ イメージをビルドします
docker build -t kali-mcp-server .
- 🏃 コンテナを実行します
MCP クライアントに必要な stdio トランスポートを使用して、コンテナを対話モードで実行するには、次のようにします。
docker run -i --rm kali-mcp-server
(注:tcpdump や netdiscover などのツールには、昇格された権限が必要です。これらのツールが明示的に必要な場合は、docker run コマンドに --privileged または特定の --cap-add フラグを追加する必要がある場合がありますが、一般的な使用では強く推奨されません。)
🛠️ オプション B:ローカル開発環境のセットアップ
Docker は推奨されるデプロイ方法ですが、開発やデバッグのために Kali Linux マシン上でサーバーを直接実行することもできます。
- リポジトリをクローンし、ディレクトリに移動します。
git clone https://github.com/cyberillo/kali-mcp-server.git
cd kali-mcp-server
- 🐍 Python 仮想環境をセットアップします:
python3 -m venv venv
source venv/bin/activate
- MCP SDK をインストールします:
pip install mcp
- Kali のすべてのツールがインストールされていることを確認します:
nmap、gobuster、sqlmap、msfconsoleなどのツールが、システムのPATHから利用できることを確認してください。 - サーバーをローカルでデバッグモードで実行します:
標準入力/出力を使用して、Python スクリプトを直接テストできます。
python3 kali-mcp-server.py
🤖 使用方法
1. Claude Desktop の設定
次の内容を claude_desktop_config.json ファイルに追加します(通常、Mac では ~/Library/Application Support/Claude/claude_desktop_config.json、Windows では %APPDATA%\Claude\claude_desktop_config.json にあります)。
上記のパスに見つからない場合は、File > Settings > Developer > Edit Config に移動してください。
Docker を使用する場合(推奨):
{
"mcpServers": {
"kali-tools": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"kali-mcp-server"
]
}
}
}
ローカルの Python を使用する場合:
{
"mcpServers": {
"kali-tools": {
"command": "/path/to/your/venv/bin/python3",
"args": [
"/path/to/kali-mcp-server.py"
]
}
}
}
2. GitHub Copilot(VS Code)
- 存在しない場合は、ワークスペースに
.vscodeディレクトリを追加します。 - 次のように
.vscode/mcp.jsonを更新して、MCP サーバーを追加します。
{
"servers": {
"kali-mcp-server": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"kali-mcp-server"
]
}
},
"inputs": []
}
3. Cursor/その他の IDE
Model Context Protocol に対応した IDE では、stdio トランスポートタイプを使用して新しい MCP サーバーを設定します。
- タイプ:
stdio - コマンド:
docker - 引数:
run -i --rm kali-mcp-server
MCP ツール定義
サーバーは、運用フェーズに応じて分類された21種類の専用ツールを公開します。
| カテゴリ | ツール名 | 説明とパラメーター |
|---|---|---|
| Recon | whois_lookup | WHOIS 検索を実行します。パラメーター: domain (str)。 |
| Recon | dnsenum_scan | DNS レコードを列挙します。パラメーター: domain (str)。 |
| Recon | whatweb_scan | CMS とヘッダーを特定します。パラメーター: target_url (str)。 |
| Recon | amass_enum | パッシブ方式でサブドメインを列挙します。パラメーター: domain (str)。 |
| Recon | netdiscover_scan | 稼働中のホストを検出します。パラメーター: ip_range (str)。 |
| Scanning | nmap_scan | ネットワークの検出とポートスキャンを実行します。パラメーター: target (str)、flags (str、デフォルト:-sV -F)。 |
| Scanning | enum4linux_scan | Windows/Samba システムを列挙します。パラメーター: target_ip (str)。 |
| Scanning | smbclient_list | SMB 共有を一覧表示します。パラメーター: target_ip (str)、user (str)、password (str)。 |
| Web Sec | nikto_scan | Web の脆弱性スキャンを実行します。パラメーター: target_url (str)。 |
| Web Sec | gobuster_dir | ディレクトリへのブルートフォース攻撃を実行します。パラメーター: target_url (str)、wordlist (str)。 |
| Web Sec | dirb_scan | Web コンテンツをスキャンします。パラメーター: target_url (str)、wordlist (str)。 |
| Web Sec | ffuf_scan | 高速な Web ディレクトリファジングを実行します。パラメーター: target_url (str)、wordlist (str)。 |
| Web Sec | wfuzz_scan | Web パラメーター/ディレクトリのファジングを実行します。パラメーター: target_url (str)、wordlist (str)。 |
| Web Sec | sqlmap_scan | SQL インジェクションの検出/悪用を行います。パラメーター: target_url (str)、params (str)。 |
| Web Sec | wpscan_enum | WordPress の脆弱性スキャナーです。パラメーター: target_url (str)。 |
| Cracking | hydra_bruteforce | ログイン認証情報に対するブルートフォース攻撃を実行します。パラメーター: target (str)、service (str)、user (str)、wordlist (str)。 |
| Cracking | john_crack | パスワードハッシュを解読します。パラメーター: hash_file (str)、wordlist (str)。 |
| Cracking | hashcat_crack | 大量のリソースを必要とするハッシュ解読を実行します。パラメーター: hash_file (str)、hash_type (str)、wordlist (str)。 |
| Exploit | searchsploit_query | Exploit Database を検索します。パラメーター: query (str)。 |
| Exploit | tcpdump_sniff | ネットワークパケットをキャプチャします。パラメーター: interface (str)、packet_count (str)。 |
| Exploit | metasploit_exploit | MSF モジュールを実行します。パラメーター: module (str)、options (str)。 |
LLM 向けのヒント: LLM に
metasploit_exploitの実行を依頼する場合は、オプションをKEY=VALUEのカンマ区切りで適切に指定してください(例:RHOSTS=192.168.1.5, LHOST=10.0.0.2)。
⚙️ 環境変数
Python サーバースクリプトではアプリケーションレベルのカスタム環境変数を強制していませんが、Docker 環境では次の標準 Linux 変数を使用します。
DEBIAN_FRONTEND:apt のインストール中に対話型プロンプトへの応答待ちでビルドプロセスが停止しないよう、Dockerfile で noninteractive に設定します。
⚠️ トラブルシューティング
- コマンドがタイムアウトする: サーバーでは
run_cmd関数に安全のためのタイムアウトが組み込まれています(デフォルトは300秒で、Nikto や Metasploit などの負荷が高いツールでは600秒以上に延長されます)。ターゲットがまったく応答しない場合、ツールは LLM を無期限に待機させることなく、タイムアウトエラーを正常に返します。 - アクセスが拒否される(Docker): Docker コマンドを実行する権限がユーザーにあることを確認するか、適切なユーザー権限でクライアント IDE を実行してください。Docker のホストネットワークルーティングまたは特権モードが有効になっていないと、コンテナ内の
netdiscoverやtcpdumpなどのツールは外部トラフィックをキャプチャできず、エラーも表示されない場合があります。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。