Wireshark MCP Server Container
A containerized Model Context Protocol (MCP) server that provides comprehensive network packet analysis using Wireshark/tshark. Connect it to any MCP-compatible AI client for automated network security analysis, protocol inspection, and traffic forensics.
How It Works: GitHub-Based PCAP Sync
This container does not store PCAP files. Instead, it uses a GitHub repository as the source of truth for your packet captures.
┌──────────────┐ ┌─────────────────────────┐ ┌──────────────────┐
│ Your GitHub │ │ Wireshark MCP Container │ │ AI Client │
│ Repository │◄─────►│ │◄─────►│ (Cursor, etc.) │
│ │ sync │ tshark analysis engine │ MCP │ │
│ pcaps/ │ │ /tmp/wireshark_workspace │ │ │
└──────────────┘ └─────────────────────────┘ └──────────────────┘
The workflow:
- Store PCAPs in GitHub -- Push
.pcap/.pcapngfiles to any GitHub repo (public or private). - Configure credentials -- Provide your GitHub username, PAT, repo URL, and optional path/branch via environment variables or HTTP headers.
- Sync on demand -- Use
wireshark_list_pcapsto see what's available, thenwireshark_sync_pcaporwireshark_sync_all_pcapsto pull files into the container's temporary workspace. - Analyze -- Run any of the 19 analysis tools against synced PCAPs.
- Clean up -- Use
wireshark_clean_projector let the automatic TTL (default 24h) purge stale workspaces.
This design means the container stays stateless and ephemeral -- PCAP data lives in your GitHub repo, and the container only pulls what it needs for the current analysis session.
Quick Start
Pull from GHCR
docker pull ghcr.io/<your-org>/wireshark-mcp-container:latest
Run with Docker
docker run -d \
-p 3020:3020 \
-e DISABLE_JWT_AUTH=true \
-e GITHUB_USERNAME=your-github-username \
-e GITHUB_PAT=ghp_xxxxxxxxxxxxxxxxxxxx \
-e GITHUB_REPO=https://github.com/your-org/your-pcap-repo \
-e GITHUB_PATH=pcaps \
-e GITHUB_BRANCH=main \
--name wireshark-mcp \
ghcr.io/<your-org>/wireshark-mcp-container:latest
Build Locally
docker build -t wireshark-mcp:latest -f dockerfile .
docker run -d \
-p 3020:3020 \
--env-file .env \
--name wireshark-mcp \
wireshark-mcp:latest
Configuration
All configuration is done through environment variables. See `.env.example` for a complete reference.
Required
| Variable | Description |
|---|---|
GITHUB_USERNAME |
Your GitHub username |
GITHUB_PAT |
GitHub Personal Access Token (needs repo scope for private repos) |
GITHUB_REPO |
Full GitHub repo URL (e.g., https://github.com/org/pcap-repo) |
Optional
| Variable | Default | Description |
|---|---|---|
GITHUB_PATH |
(root) | Subdirectory in the repo where PCAPs are stored |
GITHUB_BRANCH |
main |
Branch to sync from |
PORT |
3020 |
Server port |
HOST |
0.0.0.0 |
Bind address |
TRANSPORT |
streamable-http |
MCP transport (streamable-http or stdio) |
DISABLE_JWT_AUTH |
true |
Set to false to enable Azure AD JWT authentication |
AZURE_AD_TENANT_ID |
Required when JWT auth is enabled | |
AZURE_AD_CLIENT_ID |
Optional audience validation when JWT auth is enabled | |
ENABLE_AUTH_LOGGING |
false |
Log user access to tools |
WIRESHARK_PROJECT_TTL |
86400 |
Seconds before stale project workspaces are auto-purged |
Passing Credentials via HTTP Headers
Instead of environment variables, credentials can be passed per-request via HTTP headers. This is useful when multiple users share a single server instance:
| Header | Maps to |
|---|---|
X-GitHub-Username |
GITHUB_USERNAME |
X-GitHub-PAT |
GITHUB_PAT |
X-GitHub-Repo |
GITHUB_REPO |
X-GitHub-Path |
GITHUB_PATH |
X-GitHub-Branch |
GITHUB_BRANCH |
Headers take precedence over environment variables.
MCP Tools
PCAP Management
| Tool | Description |
|---|---|
wireshark_list_pcaps |
List synced and available PCAPs (local + GitHub) |
wireshark_sync_pcap |
Download a single PCAP from GitHub |
wireshark_sync_all_pcaps |
Download all PCAPs from GitHub (skips already-synced) |
wireshark_remove_pcap |
Remove a local PCAP copy |
wireshark_clean_project |
Remove entire project workspace |
Analysis
| Tool | Description |
|---|---|
wireshark_pcap_triage |
Automated first-pass triage (start here) |
wireshark_analyze_pcap |
Comprehensive packet analysis |
wireshark_protocol_hierarchy |
Protocol distribution breakdown |
wireshark_conversations |
TCP/UDP/IP conversation statistics |
wireshark_display_filter |
Apply Wireshark display filters |
wireshark_follow_stream |
Reconstruct TCP/UDP stream payloads |
wireshark_top_talkers |
Identify hi |
Tools 12
wireshark_list_pcapsList synced and available PCAPs (local + GitHub)wireshark_sync_pcapDownload a single PCAP from GitHubwireshark_sync_all_pcapsDownload all PCAPs from GitHub (skips already-synced)wireshark_remove_pcapRemove a local PCAP copywireshark_clean_projectRemove entire project workspacewireshark_pcap_triageAutomated first-pass triagewireshark_analyze_pcapComprehensive packet analysiswireshark_protocol_hierarchyProtocol distribution breakdownwireshark_conversationsTCP/UDP/IP conversation statisticswireshark_display_filterApply Wireshark display filterswireshark_follow_streamReconstruct TCP/UDP stream payloadswireshark_top_talkersIdentify high-volume network traffic sourcesEnvironment Variables
GITHUB_USERNAMErequiredYour GitHub usernameGITHUB_PATrequiredGitHub Personal Access TokenGITHUB_REPOrequiredFull GitHub repo URLGITHUB_PATHSubdirectory in the repo where PCAPs are storedGITHUB_BRANCHBranch to sync from