这是一个用于集成Wireshark网络分析能力与AI系统(如Claude)的模型上下文协议(MCP)服务器。此实现提供了直接与Claude集成的功能,无需手动复制粘贴提示。
Wireshark MCP提供了一种标准化的方式,使AI助手能够通过Wireshark访问和分析网络数据包。它通过实现模型上下文协议,弥合了低级网络数据与高级AI理解之间的差距。
<p align="center"> <img src="https://raw.githubusercontent.com/sarthaksiddha/Wireshark-mcp/main/docs/images/wireshark-mcp-flow.png" alt="Wireshark MCP 流程" width="600"/> </p>该服务器提供了以下工具:
# 克隆仓库
git clone https://github.com/sarthaksiddha/Wireshark-mcp.git
cd Wireshark-mcp
# 安装依赖
pip install -e .
# 使用stdio传输运行(适用于Claude桌面)
python mcp_server.py --stdio
# 使用SSE传输运行(适用于其他MCP客户端)
python mcp_server.py --host 127.0.0.1 --port 5000
要配置Claude桌面以使用Wireshark MCP服务器:
{
"mcpServers": {
"wireshark": {
"command": "python",
"args": [
"/path/to/wireshark-mcp/mcp_server.py",
"--stdio"
]
}
}
}
将/path/to/wireshark-mcp替换为实际的仓库路径。
Wireshark MCP服务器提供了以下工具:
capture_live_traffic:使用tshark捕获实时网络流量analyze_pcap:分析现有的pcap文件get_protocol_list:获取支持的协议列表一旦配置完成,您可以在Claude中使用Wireshark MCP服务器进行如下查询:
from wireshark_mcp import WiresharkMCP, Protocol
from wireshark_mcp.formatters import ClaudeFormatter
# 使用pcap文件初始化
mcp = WiresharkMCP("capture.pcap")
# 生成基本的数据包摘要
context = mcp.generate_context(
max_packets=100,
focus_protocols=[Protocol.HTTP, Protocol.DNS],
include_statistics=True
)
# 为Claude格式化
formatter = ClaudeFormatter()
claude_prompt = formatter.format_context(
context,
query="在这个HTTP流量中你看到了哪些不寻常的模式?"
)
# 保存到文件以便在Claude中使用
with open("claude_prompt.md", "w") as f:
f.write(claude_prompt)
有三种主要方式可以将Wireshark MCP与Claude结合使用:
为了无缝地与Claude桌面集成:
# 使用stdio传输运行MCP服务器
python mcp_server.py --stdio
然后按照“配置Claude桌面”部分所述配置Claude桌面。这种方法提供了直接集成,无需任何复制粘贴。
对于快速分析而无需复杂设置(需要复制粘贴):
python scripts/simple_pcap_analysis.py path/to/your/capture.pcap
这会生成一个markdown文件,您可以将其复制并粘贴到Claude.ai。
为了与Claude的API进行程序化集成:
from claude_client import ClaudeClient # 您的实现
from wireshark_mcp import WiresharkMCP
from wireshark_mcp.formatters import ClaudeFormatter
# 处理PCAP文件
mcp = WiresharkMCP("capture.pcap")
context = mcp.generate_context()
# 为Claude格式化
formatter = ClaudeFormatter()
prompt = formatter.format_context(context, query="分析这个网络流量")
# 发送到Claude API
client = ClaudeClient(api_key="your_api_key")
response = client.analyze(prompt)
参见Claude集成指南获取详细的API指令。
欢迎贡献!特别需要帮助的地方包括:
详情请参阅CONTRIBUTING.md。
该项目采用MIT许可证 - 详情请参阅LICENSE文件。 </中文翻译>