SharkMCP是一个模型上下文协议(MCP)服务器,通过与Wireshark/tshark集成,提供网络数据包捕获和分析功能。它专为AI助手进行网络安全分析、故障排除和数据包检查而设计。
该服务器适用于需要让代理调试发送请求的程序并验证数据包流量的场景,支持以下工作流程:
macOS(使用Homebrew):
brew install wireshark
Ubuntu/Debian:
sudo apt update
sudo apt install tshark wireshark-common
Windows:从 wireshark.org 下载
git clone https://github.com/kriztalz/SharkMCP.git
cd SharkMCP
pnpm install
pnpm run build
pnpm start
⚠️ 重要提示
数据包信息可能非常多。请确保使用范围显示过滤器,以免使对话上下文过载。
SharkMCP提供了一个简单的、专注于本地开发的架构:
┌─────────────────────────────────────────────────────────┐
│ SharkMCP Server │
├─────────────────────────────────────────────────────────┤
│ MCP协议层 │
│ ├─ start_capture_session │
│ ├─ stop_capture_session │
│ ├─ analyze_pcap_file │
│ └─ manage_config │
├─────────────────────────────────────────────────────────┤
│ tshark集成层 │
│ ├─ 跨平台可执行文件检测 │
│ ├─ 进程管理 │
│ └─ 输出解析(JSON/字段/文本) │
├─────────────────────────────────────────────────────────┤
│ 主机系统集成 │
│ ├─ 本地tshark安装 │
│ ├─ 直接网络接口访问 │
│ └─ 原生文件系统操作 │
└─────────────────────────────────────────────────────────┘
{
"mcpServers": {
"sharkmcp": {
"command": "node",
"args": ["/path/to/SharkMCP/dist/index.js"],
}
}
}
要解密HTTPS流量,请导出 SSLKEYLOGFILE
环境变量:
export SSLKEYLOGFILE=/path/to/sslkeylog.log
然后配置应用程序将SSL密钥记录到该文件。许多应用程序在设置了环境变量后会自动支持此功能。
之后,在 stop_capture_session
工具中将日志文件路径名传递给MCP服务器。
启动捕获会话:
接口:en0
捕获过滤器:端口443
超时时间:30秒
分析捕获的流量:
显示过滤器:tls.handshake.type == 1
输出格式:json
保存配置:
{
"name": "https-monitoring",
"description": "监控HTTPS流量",
"captureFilter": "port 443",
"displayFilter": "tls.handshake.type == 1",
"outputFormat": "json",
"timeout": 60,
"interface": "en0"
}
SharkMCP/
├── src/
│ ├── index.ts # 主服务器设置
│ ├── types.ts # TypeScript接口
│ ├── utils.ts # 实用函数
│ └── tools/ # 单个工具实现
│ ├── start-capture-session.ts
│ ├── stop-capture-session.ts
│ ├── analyze-pcap-file.ts
│ └── manage-config.ts
├── test/ # 测试文件
│ └── integration.test.js # 集成测试
├── package.json
└── README.md
# 开发模式,自动重新加载
pnpm run dev
# 生产环境构建
pnpm run build
# 运行测试
pnpm run test
# 类型检查
pnpm run build
/tmp/
中创建。“tshark未找到”:
tshark -v
检查安装情况。数据包捕获权限被拒绝:
wireshark
组或使用 sudo
运行。未捕获到数据包:
ip link
,macOS上使用 ifconfig
)。本项目采用MIT许可证。
如果您有任何问题或建议,请随时创建一个issue。