关于 Sharkmcp
Sharkmcp 是基于 Wireshark/tshark 的抓包与分析 MCP 服务,面向调查网络流量的 AI 助手。它既可管理实时抓包,也能分析现有 PCAP 文件。
主要功能
- 01启动带过滤条件的后台抓包
- 02分析现有 PCAP 文件
- 03输出 JSON、字段或文本
- 04使用密钥日志解密 TLS
- 05保存并复用配置
适用场景
- 01调试程序时检查请求流量
- 02筛选并检查 TLS 握手
- 03查看先前捕获的网络流量
MCP 相关
向 MCP 客户端提供启动和停止抓包、分析 PCAP 文件以及保存或加载配置的工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
SharkMCP - 网络数据包分析 MCP 服务
一个通过集成 Wireshark/tshark 提供网络数据包捕获与分析能力的 Model Context Protocol (MCP) 服务。专为 AI 助手执行网络安全分析、故障排查和数据包检查而设计。
此服务旨在适用于你希望让 Agent 调试发送请求的程序并验证数据包流量的场景,支持以下工作流:
- 开始录制数据包
- 运行工具或执行请求
- 停止录制并分析结果
架构
SharkMCP 提供了一种简单的、专注于本地开发的架构:
┌─────────────────────────────────────────────────────────┐
│ SharkMCP Server │
├─────────────────────────────────────────────────────────┤
│ MCP Protocol Layer │
│ ├─ start_capture_session │
│ ├─ stop_capture_session │
│ ├─ analyze_pcap_file │
│ └─ manage_config │
├─────────────────────────────────────────────────────────┤
│ tshark Integration Layer │
│ ├─ Cross-platform executable detection │
│ ├─ Process management │
│ └─ Output parsing (JSON/fields/text) │
├─────────────────────────────────────────────────────────┤
│ Host System Integration │
│ ├─ Local tshark installation │
│ ├─ Direct network interface access │
│ └─ Native file system operations │
└─────────────────────────────────────────────────────────┘
功能特性
- 异步数据包捕获:以可配置的过滤器和超时启动后台捕获会话。
- PCAP 文件分析:分析现有的数据包捕获文件
- 灵活的输出格式:JSON、自定义字段或传统文本输出
- SSL/TLS 解密:支持使用 SSL keylog 文件解密 HTTPS 流量
- 可复用配置:保存并复用捕获/分析配置
/!\ 数据包信息可能非常庞大。请确保使用限定范围的显示过滤器,以免超出对话上下文容量。
前置条件
系统要求
- Wireshark/tshark:必须已安装且可访问
- Node.js:版本 18+
- pnpm:包管理器(推荐)
安装 Wireshark/tshark
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 包含全面的集成测试,用于验证数据包捕获功能。
运行测试
# Run all tests
pnpm test
配置
MCP 客户端设置
{
"mcpServers": {
"sharkmcp": {
"command": "node",
"args": ["/path/to/SharkMCP/dist/index.js"],
}
}
}
SSL/TLS 解密(可选)
要解密 HTTPS 流量,请导出 SSLKEYLOGFILE 环境变量:
export SSLKEYLOGFILE=/path/to/sslkeylog.log
然后配置你的应用程序将 SSL 密钥记录到此文件。设置该环境变量后,许多应用程序会自动支持此功能。
然后将日志文件路径传递给 MCP 服务中的 stop_capture_session 工具。
使用方法
可用工具
- start_capture_session:启动后台数据包捕获
- stop_capture_session:停止捕获并分析结果
- analyze_pcap_file:分析现有的 PCAP 文件
- manage_config:保存/加载可复用配置
基本示例
启动捕获会话:
Interface: en0
Capture Filter: port 443
Timeout: 30 seconds
分析捕获的流量:
Display Filter: tls.handshake.type == 1
Output Format: json
保存配置:
{
"name": "https-monitoring",
"description": "Monitor HTTPS traffic",
"captureFilter": "port 443",
"displayFilter": "tls.handshake.type == 1",
"outputFormat": "json",
"timeout": 60,
"interface": "en0"
}
开发
项目结构
SharkMCP/
├── src/
│ ├── index.ts # Main server setup
│ ├── types.ts # TypeScript interfaces
│ ├── utils.ts # Utility functions
│ └── tools/ # Individual tool implementations
│ ├── start-capture-session.ts
│ ├── stop-capture-session.ts
│ ├── analyze-pcap-file.ts
│ └── manage-config.ts
├── test/ # Test files
│ └── integration.test.js # Integration tests
├── package.json
└── README.md
开发命令
# Development mode with auto-reload
pnpm run dev
# Build for production
pnpm run build
# Run tests
pnpm run test
# Type checking
pnpm run build
安全注意事项
- 网络权限:数据包捕获需要提升权限
- 文件访问:临时文件创建在
/tmp/目录中 - Docker 安全:容器以非 root 用户运行
- SSL Keylog:敏感的 SSL 密钥应安全处理
故障排查
常见问题
"tshark not found":
- 确保已安装 Wireshark 且 tshark 在 PATH 中
- 使用以下命令检查安装:
tshark -v
数据包捕获权限被拒绝:
- 在 Linux 上:将用户添加到
wireshark组或以sudo运行 - 在 macOS 上:在系统偏好设置中授予终端网络访问权限
- 在 Windows 上:以管理员身份运行
未捕获到任何数据包:
- 验证网络接口名称(Linux 上使用
ip link,macOS 上使用ifconfig) - 检查捕获过滤器语法
- 确保接口上有流量
贡献(非常欢迎!)
- Fork 仓库
- 创建功能分支
- 遵循现有代码风格进行修改
- 为新功能添加测试
- 提交 pull request
许可证
MIT License
问题 / 建议
如有任何问题或建议,欢迎提交 issue。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。