
PCAP 파일 분석을 위한 만능 MCP 서버
LLM을 위한 도구 세트로서 sharkd — Wireshark의 프로그래밍 인터페이스 — 를 노출하는 MCP 서버입니다. 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() | 로드된 모든 PCAP 목록 |
unload_pcap(alias) | 세션 종료 및 메모리 해제 |
| 도구 | 설명 |
|---|---|
pcap_summary(alias) | 프레임 수, 기간, 파일 크기, 발견된 프로토콜 |
server_info(alias) | 사용 가능한 모든 탭 유형, follow 프로토콜, 필드 유형 |
| 도구 | 설명 |
|---|---|
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 server
│ JSON-RPC 2.0 (stdin/stdout)
├─ sharkd [pcap-1]
├─ sharkd [pcap-2]
└─ sharkd [pcap-N]
로드된 PCAP당 하나의 sharkd 하위 프로세스. 세션은 격리되어 있으며, 다른 별칭에 대한 동시 쿼리는 서로를 차단하지 않습니다.