Wireshark MCPは、Wiresharkのコマンドライン版であるtsharkをMCP(Model Context Protocol)サーバーとして包み、Claude CodeやClaude Desktop、Cursorなどから「このpcapで通信量の多いIPは?」と自然言語で解析させる仕組みです。Wireshark公式の機能ではなく、有志が公開している複数の実装の総称です。この記事では2026年10月時点の4実装を比較します。bx33661版・mcp-wireshark・mixelpixx版は起動とツール一覧を確認し、WireMCPは公開情報をもとに紹介します。MCPそのものの仕組みはMCP(Model Context Protocol)とは?AIと外部ツールをつなぐ標準規格の仕組みをわかりやすく解説で扱っています。
まとめ:Wireshark MCPの要点
- いま選ぶならbx33661版(
pip install wireshark-mcp・3.0.0)。手元の計測で52ツールを公開し、うち41が読み取り専用。2026年10月も更新が続いている。 mcp-wireshark0.5.0は、そのままpipで入れると起動しない。依存の上限が無く、2026年7月に出たMCP Python SDK 2系が入ってAttributeErrorで落ちる。"mcp<2"を併記すれば14ツールで動く。- 旧来よく紹介されてきた
pip install wireshark-mcp-server(mixelpixx版)はPyPIに存在しない。GitHubから直接入れれば13ツールで起動する。 - 前提はPython 3.10以上とPATH上の
tshark。Wiresharkの最新安定版は4.6.9(2026年9月23日)。 - bx33661版3.0は、
WIRESHARK_MCP_ALLOWED_DIRSを設定しない限りファイル書き込みを拒否する。設定すると読み取りもそのディレクトリ内に限られる。 - MCPに固定のポート番号は無い。stdio接続はネットワークに出ないのでWiresharkで見えず、HTTP接続なら
json.value.string == "tools/call"でツール呼び出しを抜き出せる。
以下、仕組み、実装の比較、導入、解析例、通信の観測、セキュリティの順に説明します。
Wireshark MCPの仕組み:tsharkをMCPサーバーにする構成
構成は3層です。AIクライアント(Claude Codeなど)がMCPサーバーを子プロセスとして起動し、MCPサーバーがtsharkやcapinfosをコマンドとして実行して、その出力をAIが読める形に整えて返します。AIはpcapのバイナリを直接読むのではなく、「どのツールをどの表示フィルタで呼ぶか」を選ぶ役です。
そのため解析の正確さはtsharkの解析器(ディセクター)で決まり、AIが担うのはツールの選択と結果の読み解きです。「DNSクエリの宛先を一覧して」と頼むと、AIはDNS抽出ツールを呼び、返ってきた表をもとに答えます。Wiresharkの表示フィルタを覚えていなくても調べられる点が、GUIで直接操作する場合との一番の違いです。
逆に言えば、AIの答えはツールの出力より正確にはなりません。後述するとおり、検知系ツールの「疑わしい」は単純なしきい値で出るため、最終判断は人がパケットを見て下す前提で使います。
Wireshark MCP実装4つの比較と選び方
「Wireshark MCP」と名の付くリポジトリは多数あります。GitHubのスター数と更新状況を参考に4実装を選びました。2026年10月16日にmacOSで3実装の起動とツール一覧を確認し、WireMCPは公開情報で比較しています。
| 実装 | 導入 | 版・最終更新 | ツール数(実測) | 状態 |
|---|---|---|---|---|
| bx33661/Wireshark-MCP | pip install wireshark-mcp |
3.0.0(2026-09-05) | 52(読み取り専用41) | 起動可 |
| khuynh22/mcp-wireshark | pip install mcp-wireshark |
0.5.0(2026-07-08) | 14(読み取り専用12) | mcp 2系で起動不可 |
| mixelpixx/Wireshark-MCP | GitHubから導入 | 0.1.0(2026-02更新) | 13(注釈なし) | PyPI未公開 |
| 0xKoda/WireMCP | git clone+npm | 2025-07以降更新なし | 未計測 | Node.js製 |
bx33661版wireshark-mcpの推奨理由
bx33661/Wireshark-MCPはMITライセンスで、パケット一覧・ストリーム追跡・統計に加え、認証情報の抽出、ポートスキャンやDNSトンネルの検知、TLS復号の補助までを1つにまとめています。各ツールには読み取り専用かどうかの注釈があり、対応クライアントでは承認方針を分ける材料になります。ただし、注釈はサーバーの自己申告であり、読み取り専用の動作を保証するものではありません。
依存はmcp>=2.1.1,<3とSDKの版を上下で固定しており、SDKの更新で突然壊れにくい作りです。後発の実装を選ぶ理由が特に無ければ、これを基準にしてください。
mcp-wiresharkのSDK 1系への依存固定
mcp-wiresharkは14ツールと小さく、IEC 61850(変電所の制御通信)のGOOSE・SV・MMS解析を持つのが特徴です。ただし依存指定がmcp>=0.9.0で上限が無く、新しい仮想環境にpip install mcp-wiresharkだけで入れると、2026年7月28日に公開されたMCP Python SDK 2系(手元では2.3.0)が入り、起動時にAttributeError: 'Server' object has no attribute 'list_tools'で終了しました。SDK 2系での書き換え点はMCP Python SDK v2 移行:FastMCPからMCPServerへの書き換え手順と据え置き判断にまとめています。
python3 -m venv .venv && . .venv/bin/activate
pip install mcp-wireshark "mcp<2" # 手元では mcp 1.30.0 が入り14ツールで起動
mixelpixx版とWireMCPを選ばない理由
mixelpixx/Wireshark-MCPはREADMEにpip install wireshark-mcp-serverとありますが、PyPIの該当ページは404で入りません。pip install git+https://github.com/mixelpixx/Wireshark-MCPなら導入でき、13ツールで起動しました。Nmap連携のツールはnmapコマンドがある環境でだけ追加される作りです。読み取り専用の注釈が無いため、注釈に基づく自動分類はできません。書き込み系の識別には、ツール名・説明・実装の確認が必要です。
0xKoda/WireMCPはスター数が595と最多で、検索でも「wiremcp」として名前が出ますが、2025年7月9日を最後に更新が止まっています。ライブキャプチャとURLhausの脅威情報照会が中心の小さな実装で、MCPの仕様改定に追随していない点を承知で使う必要があります。
Wireshark MCPのインストールとClaudeへの登録
以下はbx33661版の手順です。2026年10月16日に、macOS上でWireshark 4.6.9のtsharkとPython 3.12を使って確認しました。
tsharkの導入とPATH設定
Wiresharkの公式ダウンロードから最新安定版4.6.9(2026年9月23日公開)を入れます。macOSのDMGにはtshark本体のほか「Add Wireshark to the system path.pkg」と「Install ChmodBPF.pkg」が同梱されており、前者でPATHが通ります。WindowsはC:\Program Files\WiresharkをシステムのPATHに足し、Linuxはディストリビューションのtsharkパッケージで入ります。
tshark --version # TShark (Wireshark) 4.6.9 と表示されればよい
pcapファイルを解析するだけなら、キャプチャ権限(macOSのChmodBPF、Linuxのwiresharkグループ)は要りません。ライブキャプチャもAIにやらせる場合だけ設定します。
wireshark-mcpの仮想環境への導入と設定出力
python3 -m venv ~/.venvs/wireshark-mcp
. ~/.venvs/wireshark-mcp/bin/activate
pip install wireshark-mcp # 2026-10-16時点で 3.0.0
wireshark-mcp doctor # tshark などの検出結果を表示
wireshark-mcp install # 検出したMCPクライアントを選んで設定を追記
wireshark-mcp installとwireshark-mcp configは、クライアント設定のcommandにPythonのパスを書き込みます。手元では、仮想環境を有効にせず~/.venvs/wireshark-mcp/bin/wireshark-mcp configのようにフルパスで実行すると、commandが仮想環境の外のPythonを指しました。そのPythonにはwireshark_mcpが入っていないため、クライアントから起動できません。activateしてから実行するか、書き出されたcommandが仮想環境内のbin/python3になっているかを確認してください。
Claude CodeとClaude Desktopへの手動登録
Claude Codeはclaude mcp addで登録します。環境変数は-eで渡します(Claude Code 2.1.299のヘルプで構文を確認)。
mkdir -p "$HOME/pcap-work"
claude mcp add wireshark -e WIRESHARK_MCP_ALLOWED_DIRS=$HOME/pcap-work -- "$HOME/.venvs/wireshark-mcp/bin/wireshark-mcp" serve --profile analysis
claude mcp list
Claude Desktopは、macOSなら~/Library/Application Support/Claude/claude_desktop_config.jsonのmcpServersに追記します。wireshark-mcp configが出力するJSONをそのまま貼れば、tsharkのパスも環境変数として入ります。Codex CLI向けにはwireshark-mcp config --format codex-tomlでTOML形式を出せます。
Wireshark MCPのプロファイル別ツール数
ツール定義の読み込み方はAIクライアントによって異なります。一括で入力する方式では定義がコンテキストを消費しますが、必要なツールだけを後から読み込む方式もあります。bx33661版は--profileで公開するツールを減らせ、手元の計測では次のとおりでした。
| プロファイル | ツール数 | 外れるもの |
|---|---|---|
| full(既定) | 52 | なし |
| analysis | 40 | ライブキャプチャ・ファイル書き込み系 |
| core | 32 | 上記+復号・解析器の上書き・低レベル表示 |
保存済みpcapを読ませるだけならanalysisで足ります。書き込み系が最初から見えないので、誤ってファイルを作る操作をAIに選ばせる余地もなくなります。
pcapを解析させる手順と出力例
Wiresharkの公式サンプル集にあるdns.cap(DNSのみ38パケット)を、MCPクライアントからbx33661版のツールに渡した結果です。AIを介さず、ツールの生の戻り値を見ています。
wireshark_quick_analysis:ファイル情報(38パケット・278.9秒)、プロトコル階層(eth→ip→udp→dns)、通信量上位のIP(192.168.170.8と192.168.170.20が各28パケット)を1回で返す。最初に呼ばせるツール。wireshark_extract_dns_queries:dns.qry.name・dns.qry.type・応答フラグの表を返す。limit=5で呼ぶと「Showing 5/39 lines. Next: offset=5」と続きの取り方まで付く。wireshark_detect_dns_tunnel:「50文字超のクエリ名が2件」を根拠に、重大度medium・確度candidateで1件を報告した。
最後の検知は誤検知です。該当したのは_ldap._tcp.Default-First-Site-Name._sites.dc._msdcs.…という69文字のクエリで、Active Directoryのドメインコントローラーを探す正規のSRVレコード照会です。判定はdns.qry.name.len > 50という長さのしきい値だけで出ています。社内ネットワークのpcapではこの種の照会が日常的に出るため、検知系ツールの結果は「調べる候補の一覧」として扱い、AIの要約をそのまま報告書に載せないでください。IDSのように継続監視でシグネチャ検知をしたい場合は、Suricata(スリカタ)とは?導入からルール作成・IPSモード運用まで【8.0対応】のような専用製品の守備範囲です。
ツールの出力は既定で8,000文字を超えると前後を残して切り詰められ、offset・limit・display_filterで続きを取る設計です。大きなpcapでは、最初に「対象のIPとポートで表示フィルタをかけてから」と指示すると、往復が減ります。
MCPのポート番号とWiresharkで見えるMCP通信
MCPのポート番号と実装別の既定値
MCPの仕様は標準トランスポートとしてstdioとStreamable HTTPの2つを定めていますが、どちらにも予約ポートはありません。stdioはクライアントがサーバーを子プロセスとして起動し、標準入出力で改行区切りのJSON-RPCをやり取りするので、ポートを使いません。HTTPの場合はサーバー実装が待ち受けポートを決めます。手元で確認した既定値は、bx33661版の--transport streamable-httpが127.0.0.1:8080、MCP Python SDK 2.3.0のMCPServerが127.0.0.1:8000でした。エンドポイントのパスはbx33661版で/mcpです。
Claude Desktopなどにローカル登録したWireshark MCPは通常stdioで動くため、その通信はWiresharkやtcpdumpでは見えません。ネットワーク上に流れるのは、HTTPトランスポートで動かしたときだけです。トランスポートの違いはStreamable HTTPとは?MCPのトランスポートとSSEの違い、2026-07-28仕様の変更点で詳しく扱っています。
HTTPのMCP通信をtsharkで抜き出す表示フィルタ
bx33661版をHTTPで起動し、MCP Python SDK 2.3.0のクライアントからツール一覧の取得とツール呼び出しを行いました。この環境ではBPFの権限が無くループバックを直接キャプチャできないため、間に置いた中継プロキシで記録したバイト列をtext2pcapでpcapに変換して確認しています。
tshark -r mcp_http.pcap -Y 'json.value.string == "tools/call"' \
-T fields -e frame.number -e json.value.string
# 16 2.0,tools/call,wireshark_get_file_info,/tmp/ws_pcap/dns.cap
Wiresharkはポート8080をHTTPとして解析し、application/jsonの本文をJSONとして分解するので、JSON-RPCのmethodの値で絞り込めます。"initialize"や"tools/list"に変えれば接続の開始やツール一覧の取得も追えます。出力の2列目にある、カンマ区切りの4番目の値に注目してください。ツールに渡したpcapのパスが平文で見えています。TLSで暗号化していないHTTPでは、通信を取得できる位置にいる第三者がツールの引数を読めます。認証の有無とは別の問題で、同じネットワークにいるだけで必ず取得できるわけではありません。
MCP仕様2026-07-28版のHTTP識別ヘッダ
2026年7月28日に公開されたMCP仕様のStreamable HTTPでは、プロトコルレベルのセッションとGETのストリームが削除され、要求ごとにMcp-Method(例:tools/call)のHTTPヘッダを付け、ツール呼び出し・リソース読み取り・プロンプト取得ではMcp-Nameも付ける形に変わりました。Mcp-Nameには、それぞれツール名・リソースURI・プロンプト名が入ります。この版で話すクライアントとサーバーなら、本文を解析しなくてもヘッダで絞り込めます。
ただし手元の組み合わせ(mcp 2.3.0のクライアントとbx33661版3.0.0)は、stdioでもHTTPでも2025-11-25で接続し、HTTPではmcp-session-idヘッダとGET・DELETEの要求が出ていて、Mcp-Methodヘッダはありませんでした。実際にどちらの版で接続しているかは、initializeの応答かmcp-protocol-versionヘッダで確かめてから、フィルタを選んでください。仕様改定の全体はMCP仕様2026-07-28版とは:ステートレス化の変更点と2025-11-25版からの移行手順を参照してください。
Wireshark MCPのセキュリティと運用上の注意
bx33661版3.0では、ライブキャプチャやpcap保存などファイルを作る11ツールは、環境変数WIRESHARK_MCP_ALLOWED_DIRSに既存のディレクトリを指定するまで動きません。未設定で保存系ツールを呼ぶと「File writes are disabled」で拒否されました。指定するディレクトリは先に作っておく必要があり、存在しないパスを指定するとサーバーが起動時にValueErrorで終了しました。もう1つの挙動として、この変数を設定すると、読み取り専用ツールでも許可ディレクトリの外のpcapは「path is outside allowed directories」で開けなくなります。解析対象のpcapも作業用ディレクトリに置く運用にしておくと、AIが意図しないファイルを読みにいく余地も狭まります。
HTTPでの待ち受けは既定で127.0.0.1に限られ、外部のインターフェースに公開するには--allow-insecure-httpを明示する必要があります。前の章で見たとおり平文のMCP通信は引数まで読めるので、このフラグは認証付きのTLSプロキシの内側以外では使わないでください。
クラウドAIを使う場合の論点は、pcapから抽出されたツールの出力がAIの提供元に送られることです。ローカル解析でも、出力に認証情報や通信内容が含まれれば外部送信の対象になります。平文のHTTPやFTP、Telnetのpcapには認証情報がそのまま入っており、bx33661版にはそれを抜き出すwireshark_extract_credentialsまであります。クラウドのAIで解析するなら、事前にeditcapや表示フィルタで対象の通信だけに切り出し、本番環境の生キャプチャを丸ごと渡さないことです。顧客ネットワークのpcapを扱う場合や、社内規程でAIへのデータ持ち出しが制限されている場合は、Wireshark MCPを使わずに従来どおりWiresharkで解析するのが妥当な場面です。AIエージェントに渡すデータの範囲と権限の設計に迷う場合は、AIセキュリティ対策の支援もご相談いただけます。
よくある質問
Wireshark MCPは無料で使えますか?
この記事で比べた実装はいずれもMITライセンスのOSSで、Wiresharkも無料です。費用がかかるのは、呼び出す側のAIクライアント(Claudeの有料プランやAPI利用料など)です。ツールの出力が長いほど入力トークンが増えるので、プロファイルと表示フィルタで量を絞ると費用も抑えられます。
WiresharkでMCPの通信自体をキャプチャできますか?
HTTPトランスポートの通信はキャプチャできます。ただし、HTTPSの本文解析にはTLSの復号が必要です。平文HTTPまたは復号済みの通信では、表示フィルタjson.value.string == "tools/call"でツール呼び出しを抜き出せます。stdioで動かしている場合は標準入出力のやり取りなので、ネットワーク上に流れず見えません。
tcpdumpで取ったpcapも解析させられますか?
できます。tcpdumpが書き出すpcap形式はtsharkがそのまま読めるため、サーバー上でtcpdumpを使って取得し、手元に持ってきたファイルをWireshark MCPに渡す運用が現実的です。サーバーにtsharkとMCPサーバーを入れる必要はありません。
Claude以外のクライアントでも使えますか?
使えます。MCPに対応したクライアントなら、Cursor、VS Code、Codex CLIなどから同じサーバーを呼べます。bx33661版はwireshark-mcp clientsで対応クライアントと設定ファイルの場所を一覧でき、Codex CLI向けのTOMLもconfig --format codex-tomlで出せます。
AIにライブキャプチャもさせられますか?
bx33661版ではfullプロファイルのwireshark_captureで可能ですが、OS側のキャプチャ権限(macOSはChmodBPF、Linuxはwiresharkグループ)と、WIRESHARK_MCP_ALLOWED_DIRSの設定が必要です。mcp-wiresharkのlive_captureは5分または1万パケットが上限です。キャプチャは人が行い、解析だけをAIに任せる分担の方が権限を絞れます。