MCP Hub
Back to servers

SharkMCP

Enables LLMs to load and analyze PCAP/PCAPNG files using Wireshark's sharkd interface, supporting packet inspection, traffic structure, conversations, and protocol statistics through natural language.

glama
Stars
13
Updated
Apr 27, 2026
Validated
Apr 29, 2026

SharkMCP

An MCP server that exposes sharkd — Wireshark's programmatic interface — as a set of tools for LLMs. Load PCAP/PCAPNG files and analyse them with natural language.

Requirements

  • Python 3.10+
  • Wireshark (provides sharkd)

Installation

git clone https://github.com/weirdmachine64/sharkmcp.git
cd sharkmcp
pip install -e .

Or run directly from the repo without installing:

uvx --from git+https://github.com/weirdmachine64/sharkmcp sharkmcp

Configuration

Add to your .mcp.json:

{
  "mcpServers": {
    "sharkmcp": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/weirdmachine64/sharkmcp", "sharkmcp"],
      "env": {
        "SHARKMCP_TIMEOUT": "300"
      }
    }
  }
}
Env varDefaultDescription
SHARKMCP_SHARKD_BINsharkdPath to sharkd binary
SHARKMCP_TIMEOUT300Per-request timeout in seconds

Tools

Each loaded PCAP gets a dedicated sharkd subprocess. Results from expensive scans (conversations, expert info, export objects) are cached in memory so paginated follow-up calls are served without re-scanning.

Session

ToolDescription
load_pcap(path, alias?)Load a PCAP/PCAPNG file
list_pcaps()List all loaded PCAPs
unload_pcap(alias)Terminate session and free memory

Overview

ToolDescription
pcap_summary(alias)Frame count, duration, file size, protocols seen
server_info(alias)All available tap types, follow protocols, field types

Packet Inspection

ToolDescription
list_packets(alias, filter?, columns?, refs?)Paginated frame list with display filter
packet_detail(alias, frame, include_bytes?, include_hidden?)Full protocol tree for one frame
extract_fields(alias, fields, filter?)Extract arbitrary fields per packet as a table

Utilities

ToolDescription
validate(alias, filter?, field?)Validate a display filter and/or field name
complete(alias, field?, pref?)Autocomplete field or preference names by prefix
get_preference(alias, preference?)Read dissector preferences
set_preference(alias, name, value)Set a dissector preference for this session
set_frame_comment(alias, frame, comment)Annotate a frame (session-scoped)

Traffic Structure

ToolDescription
protocol_hierarchy(alias, filter?)Nested protocol tree with frame/byte counts
io_stats(alias, interval_ms?, filter?)Per-interval frame and byte counts
iograph(alias, graphs, interval_ms?, filters?)Multi-line traffic graph; supports packets, bytes, bits, sum:<field>, avg:<field>, min:<field>, max:<field>, load:<field>, frames:<field>
follow_stream(alias, protocol, filter)Reassemble a stream (tcp, udp, tls, http, http2, quic, sip, dccp, websocket)

Conversations & Topology

ToolDescription
conversations(alias, type?, sort_by?)Conversation table — bytes/frames per peer pair
endpoints(alias, type?, sort_by?)Endpoint table — tx/rx per host

Supported layer types for both: tcp, udp, ip, ipv6, eth, sctp, dccp, mptcp, wifi, bluetooth, zigbee, fc, fddi, usb, and more.

Protocol Statistics

ToolDescription
expert_info(alias, filter?)Per-frame anomaly detection — errors, warnings, notes, chats
protocol_stats(alias, protocol)Aggregate stats for dns, http, http_requests, http_server, sip, dhcp, h225, http2, rtsp
service_response_time(alias, protocol)Request/response latency for smb, smb2, snmp, ldap, diameter, rpc, gtp, and more
response_time_delay(alias, protocol)Round-trip delay for radius, h225_ras, megaco, mgcp
sequence_diagram(alias, type?)Flow diagram data for tcp, icmp, icmpv6, any

Media & VoIP

ToolDescription
voip_calls(alias, filter?)SIP/H.323 call list with state and participants
rtp_streams(alias, stream_spec?)RTP stream inventory; pass stream_spec for per-stream jitter/loss
multicast_streams(alias, filter?)UDP multicast stream statistics

Export & Objects

ToolDescription
export_objects(alias, type?)List extractable objects (http, imf, smb, tftp, dicom, ftp-data)
download_object(alias, token)Download an object, TLS session keys (ssl-secrets), or RTP audio (rtp:<spec>) as base64

Escape Hatch

ToolDescription
tap(alias, specs, filter?, skip?, limit?)Run any sharkd tap directly — up to 16 specs in one PCAP scan. Use server_info to discover valid identifiers.

Example

> load_pcap("/captures/traffic.pcap", alias="traffic")
> protocol_hierarchy("traffic")
> expert_info("traffic", limit=20)
> conversations("traffic", type="tcp", sort_by="bytes")
> extract_fields("traffic", ["dns.qry.name", "dns.a"], filter="dns")
> follow_stream("traffic", "http", "tcp.stream eq 0")
> export_objects("traffic", type="http")
> download_object("traffic", "eo:http_0")

Architecture

    LLM
     │  MCP (stdio)
     ▼
 SharkMCP server
     │  JSON-RPC 2.0 (stdin/stdout)
     ├─ sharkd [pcap-1]
     ├─ sharkd [pcap-2]
     └─ sharkd [pcap-N]

One sharkd subprocess per loaded PCAP. Sessions are isolated — concurrent queries on different aliases never block each other.

Reviews

No reviews yet

Sign in to write a review