
PCAP फ़ाइलों के विश्लेषण के लिए एक स्विस-नाइफ MCP सर्वर
एक MCP सर्वर जो sharkd — Wireshark का प्रोग्रामेटिक इंटरफ़ेस — को LLMs के लिए टूल के सेट के रूप में उजागर करता है। PCAP/PCAPNG फ़ाइलें लोड करें और प्राकृतिक भाषा में उनका विश्लेषण करें।
sharkd प्रदान करता है)git clone https://github.com/weirdmachine64/sharkmcp.git
cd sharkmcp
pip install -e .
या बिना इंस्टॉल किए सीधे रिपॉजिटरी से चलाएँ:
uvx --from git+https://github.com/weirdmachine64/sharkmcp sharkmcp
अपने .mcp.json में जोड़ें:
{
"mcpServers": {
"sharkmcp": {
"command": "uvx",
"args": ["--from", "git+https://github.com/weirdmachine64/sharkmcp", "sharkmcp"],
"env": {
"SHARKMCP_TIMEOUT": "300"
}
}
}
}
| एनव वेरिएबल | डिफ़ॉल्ट | विवरण |
|---|---|---|
SHARKMCP_SHARKD_BIN | sharkd | sharkd बाइनरी का पथ |
SHARKMCP_TIMEOUT | 300 | प्रति अनुरोध टाइमआउट सेकंड में |
प्रत्येक लोड की गई PCAP को एक समर्पित sharkd सबप्रोसेस मिलता है। महँगे स्कैन (कन्वर्सेशन, एक्सपर्ट जानकारी, एक्सपोर्ट ऑब्जेक्ट) के परिणाम मेमोरी में कैश किए जाते हैं ताकि पेजिनेटेड फॉलो-अप कॉल बिना पुनः स्कैन किए परोसे जा सकें।
| उपकरण | विवरण |
|---|---|
load_pcap(path, alias?) | PCAP/PCAPNG फ़ाइल लोड करें |
list_pcaps() | सभी लोड की गई PCAPs सूचीबद्ध करें |
unload_pcap(alias) | सत्र समाप्त करें और मेमोरी मुक्त करें |
| उपकरण | विवरण |
|---|---|
pcap_summary(alias) | फ्रेम गणना, अवधि, फ़ाइल आकार, देखे गए प्रोटोकॉल |
server_info(alias) | सभी उपलब्ध टैप प्रकार, फ़ॉलो प्रोटोकॉल, फ़ील्ड प्रकार |
| उपकरण | विवरण |
|---|---|
list_packets(alias, filter?, columns?, refs?) | डिस्प्ले फ़िल्टर के साथ पेजिनेटेड फ्रेम सूची |
packet_detail(alias, frame, include_bytes?, include_hidden?) | एक फ्रेम के लिए पूर्ण प्रोटोकॉल ट्री |
extract_fields(alias, fields, filter?) | प्रति पैकेट मनमाने फ़ील्ड को तालिका के रूप में निकालें |
| उपकरण | विवरण |
|---|---|
validate(alias, filter?, field?) | डिस्प्ले फ़िल्टर और/या फ़ील्ड नाम मान्य करें |
complete(alias, field?, pref?) | उपसर्ग द्वारा फ़ील्ड या प्राथमिकता नाम ऑटोकम्प्लीट करें |
get_preference(alias, preference?) | डिसेक्टर प्राथमिकताएँ पढ़ें |
set_preference(alias, name, value) | इस सत्र के लिए एक डिसेक्टर प्राथमिकता सेट करें |
set_frame_comment(alias, frame, comment) | एक फ्रेम पर टिप्पणी करें (सत्र-स्कोप्ड) |
| उपकरण | विवरण |
|---|---|
protocol_hierarchy(alias, filter?) | फ्रेम/बाइट गणना के साथ नेस्टेड प्रोटोकॉल ट्री |
io_stats(alias, interval_ms?, filter?) | प्रति-अंतराल फ्रेम और बाइट गणना |
iograph(alias, graphs, interval_ms?, filters?) | बहु-पंक्ति ट्रैफ़िक ग्राफ़; packets, bytes, bits, sum:<field>, avg:<field>, min:<field>, max:<field>, load:<field>, frames:<field> समर्थित |
follow_stream(alias, protocol, filter) | एक स्ट्रीम को पुनः संयोजित करें (tcp, udp, tls, http, http2, quic, sip, dccp, websocket) |
| उपकरण | विवरण |
|---|---|
conversations(alias, type?, sort_by?) | वार्तालाप तालिका — प्रति पीयर जोड़ी बाइट्स/फ्रेम |
endpoints(alias, type?, sort_by?) | एंडपॉइंट तालिका — प्रति होस्ट tx/rx |
दोनों के लिए समर्थित लेयर प्रकार: tcp, udp, ip, ipv6, eth, sctp, dccp, mptcp, wifi, bluetooth, zigbee, fc, fddi, usb, और अन्य।
| उपकरण | विवरण |
|---|---|
expert_info(alias, filter?) | प्रति-फ्रेम विसंगति पहचान — त्रुटियाँ, चेतावनियाँ, नोट्स, चैट |
protocol_stats(alias, protocol) | dns, http, http_requests, http_server, sip, dhcp, h225, http2, rtsp के लिए समग्र आँकड़े |
service_response_time(alias, protocol) | smb, smb2, snmp, ldap, diameter, rpc, gtp, और अधिक के लिए अनुरोध/प्रतिक्रिया विलंबता |
response_time_delay(alias, protocol) | radius, h225_ras, megaco, mgcp के लिए राउंड-ट्रिप विलंब |
sequence_diagram(alias, type?) | tcp, icmp, icmpv6, any के लिए प्रवाह आरेख डेटा |
| उपकरण | विवरण |
|---|---|
voip_calls(alias, filter?) | स्थिति और प्रतिभागियों के साथ SIP/H.323 कॉल सूची |
rtp_streams(alias, stream_spec?) | RTP स्ट्रीम इन्वेंटरी; प्रति-स्ट्रीम जिटर/हानि के लिए stream_spec पास करें |
multicast_streams(alias, filter?) | UDP मल्टीकास्ट स्ट्रीम सांख्यिकी |
| उपकरण | विवरण |
|---|---|
export_objects(alias, type?) | निकालने योग्य ऑब्जेक्ट सूचीबद्ध करें (http, imf, smb, tftp, dicom, ftp-data) |
download_object(alias, token) | किसी ऑब्जेक्ट, TLS सत्र कुंजी (ssl-secrets), या RTP ऑडियो (rtp:<spec>) को base64 के रूप में डाउनलोड करें |
| उपकरण | विवरण |
|---|---|
tap(alias, specs, filter?, skip?, limit?) | कोई भी sharkd टैप सीधे चलाएँ — एक PCAP स्कैन में अधिकतम 16 स्पेक्स। मान्य पहचानकर्ता खोजने के लिए server_info का उपयोग करें। |
> 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")
LLM
│ MCP (stdio)
▼
SharkMCP सर्वर
│ JSON-RPC 2.0 (stdin/stdout)
├─ sharkd [pcap-1]
├─ sharkd [pcap-2]
└─ sharkd [pcap-N]
प्रति लोड की गई PCAP एक sharkd सबप्रोसेस। सत्र पृथक हैं — विभिन्न उपनामों पर समवर्ती क्वेरी एक-दूसरे को कभी ब्लॉक नहीं करतीं।