article
README
🚀 AI代理聊天工具集成Nmap工具
本项目提供了一个基于网络的Gradio聊天界面,用户可通过该界面与由OpenAI API驱动的AI助手进行交互。此AI助手具备使用本地文件系统和借助容器化Nmap服务器开展网络扫描的能力,为网络安全检测和信息收集提供了便利。
🚀 快速开始
确保满足以下先决条件,然后按照安装与设置步骤操作,最后运行应用程序即可开始使用。
先决条件
- Python:3.9+
- Docker:安装最新版本并运行。
- Node.js/npm:需要
npx来运行文件系统MCP服务器。 - OpenAI API密钥:设置为环境变量
OPENAI_API_KEY。
安装与设置
- 克隆仓库:
git clone <your-repository-url> cd <your-repository-directory> - 设置OpenAI API密钥:
作为环境变量导出您的API密钥。将
your_api_key_here替换为实际密钥。- Linux/macOS:
export OPENAI_API_KEY='your_api_key_here' - Windows(命令提示符):
set OPENAI_API_KEY=your_api_key_here - Windows(PowerShell):
$env:OPENAI_API_KEY='your_api_key_here'
- Linux/macOS:
- 构建Nmap Docker镜像:
导航到包含
nmap-server.py和Dockerfile的目录,然后运行:
(确保docker build -t nmap-mcp-server .Dockerfile内容正确,特别是如果不是modelcontextprotocol,请检查MCP包名称) - 安装Python依赖项:
建议使用虚拟环境。
python -m venv venv # 激活虚拟环境 # Linux/macOS: source venv/bin/activate # Windows: .\venv\Scripts\activate # 安装需求 pip install -r requirements.txt
运行应用程序
确保OpenAI API密钥已设置,Docker正在运行,并且在项目根目录中激活了虚拟环境。
python app.py
# 一个示例MCP服务器,其中包含几个Nmap扫描功能。
✨ 主要特性
- 对话式AI助手:用户可与AI助手进行自然流畅的对话交互。
- 文件系统访问工具:可对应用程序目录进行文件系统访问。
- Nmap网络扫描工具:
ping_host[citation: 14]scan_network(前100个端口)[citation: 16]all_scan_network(全面扫描)[-A][citation: 18]all_ports_scan_network(所有65535个端口)[citation: 20]smb_share_enum_scan(SMB共享枚举)[citation: 22]
- 基于网络的UI:使用Gradio构建,方便用户操作。
- 容器化Nmap工具服务器:采用Docker容器化技术,便于依赖管理和隔离。
🔧 技术细节
架构
- Gradio UI (
app.txt):负责处理用户输入,并显示对话历史,为用户提供直观的交互界面。 - 主要应用程序 (
app.txt):- 初始化Gradio界面,确保界面正常显示。
- 管理对话状态,保证对话的连续性和准确性。
- 设置和管理MCP服务器,为文件系统访问和Nmap扫描提供支持。
- 实例化并运行OpenAI代理,实现与AI助手的交互。
- OpenAI代理 (
agents库):处理用户消息,根据需求调用工具,并生成响应[citation: 1, 3]。 - MCP服务器:
- 文件系统服务器:通过
npx运行,提供本地文件访问[citation: 1]。 - Nmap工具包服务器 (
nmap-server.txt在Docker中):在Docker容器中运行,通过MCP将Nmap扫描功能作为工具暴露出来[citation: 2, 14]。app.txt使用docker run为每个请求启动此服务器。
- 文件系统服务器:通过
应用程序原理
应用程序使用了OpenAI代理SDK框架,用户的请求由AI代理处理。该代理能够理解请求内容,并根据需求决定是否调用可用工具。具体具有以下特点:
- 使用Gradio提供基于网络的界面,方便用户与AI助手进行交互。
- 后端采用OpenAI模型驱动的AI代理,需要设置OpenAI API密钥。
- 借助模型上下文协议(MCP)服务器实现文件系统访问,使用
@modelcontextprotocol/server-filesystem。 - 包装在Docker容器中的MCP服务器,可提供Nmap扫描功能,包括ping、端口扫描、服务发现、SMB共享枚举等[citation: 14, 16, 18, 20, 22]。Nmap服务器在Docker容器中运行,便于依赖管理和隔离。
微信扫一扫