使用说明
AI助手聊天与Nmap工具集成
该项目使用Gradio提供了一个基于网络的聊天界面,用户可以在其中与由OpenAI API提供支持的人工智能助手进行交互。该助手配备了与本地文件系统交互的工具,并使用容器化的Nmap服务器执行网络扫描。
概述
该应用程序使用OpenAI代理SDK框架。用户请求由AI代理处理,AI代理可以对请求进行推理并决定是否使用可用工具。它的特点是:
- Gradio前端,便于交互。
- 利用OpenAI模型的AI代理后端(需要API密钥)。
- 用于文件系统访问的模型上下文协议(MCP)服务器(使用
@modelcontextprotocol/server-filesystem). - 提供Nmap扫描功能(ping、端口扫描、服务发现、SMB共享枚举)的容器化MCP服务器[引用:14,16,18,20,22]。
Nmap服务器在Docker容器内运行,便于依赖管理和隔离。
特性
- 对话式AI助手。
- 文件系统访问工具(作用域为应用程序目录)。
- 通过Nmap的网络扫描工具:
ping_host[引用:14]scan_network(前100个端口)[引用:16]all_scan_network(-全面扫描)[引用:18]all_ports_scan_network(共65535个端口)[引用:20]smb_share_enum_scan(SMB共享枚举)[引用:22]
- 使用Gradio的基于Web的UI[引用:11,12]。
- 使用Docker的容器化Nmap工具服务器。
建筑
- Gradio用户界面(
app.txt):处理用户输入并显示对话历史记录。 - 主要应用(
app.txt):- 初始化Gradio接口。
- 管理对话状态。
- 设置和管理MCP服务器。
- 实例化并运行OpenAI代理。
- OpenAI代理(
agents图书馆):处理用户消息,在需要时调用工具,并生成响应[引用:1,3]。 - MCP服务器:
- 文件系统服务器:通过运行
npx提供本地文件访问[引用:1]。 - Nmap工具包服务器(
nmap-server.txt在Docker中):在Docker容器内运行,通过MCP将Nmap扫描函数作为工具公开[引用:2,14]。app.txt用途docker run为每个请求启动此服务器。
- 文件系统服务器:通过运行
先决条件
- python: 3.9+
- 码头工人:已安装并正在运行的最新版本。
- 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内容正确,特别是MCP包名称(如果不正确)modelcontextprotocol) -
安装Python依赖项: 建议使用虚拟环境。
python -m venv venv # Activate the virtual environment # Linux/macOS: source venv/bin/activate # Windows: .\venv\Scripts\activate # Install requirements pip install -r requirements.txt
运行应用程序
确保您的OpenAI API密钥已设置,Docker正在运行,并且您位于项目的根目录中,虚拟环境已激活。
python app.py
An example MCP server with a couple nmap scans as tools.
