使用说明
项目简介
Nmap MCP 服务器是一个基于 Model Context Protocol (MCP) 构建的后端应用,它将强大的网络扫描工具 Nmap 通过 MCP 协议暴露给 LLM 客户端。借助此服务器,LLM 可以安全、可控地执行网络扫描任务,并获取结构化的扫描结果用于分析和决策。
主要功能点
- 执行 Nmap 扫描: 允许 LLM 客户端调用 'run-nmap-scan' 工具,指定目标和扫描选项来执行 Nmap 扫描。
- 获取扫描详情: 提供 'get-scan-details' 工具,根据扫描 ID 获取特定扫描的概要信息。
- 列出所有扫描: 使用 'list-all-scans' 工具,查看所有已执行扫描的列表。
- 分析扫描结果: 提供 'analyze-scan' Prompt 模板,允许 LLM 客户端根据扫描 ID 和关注点(如安全、服务概览)生成分析扫描结果的 Prompt。
- 资源管理: 将扫描结果作为资源进行管理,并可通过 'nmap://scan/{scan_id}' 格式的 URI 进行访问和读取。
- 速率限制: 服务器内置简单的速率限制机制,防止滥用扫描功能。
安装步骤
-
安装 Python 依赖: 确保你的系统已安装 Python 3.10 或更高版本。然后使用 pip 安装 'python-libnmap' 库:
pip install python-libnmap -
安装 Nmap: 确保你的系统已安装 Nmap 扫描工具。
- Debian/Ubuntu 系统:
sudo apt-get install nmap - Fedora/CentOS 系统:
sudo dnf install nmap - 其他系统请参考 Nmap 官方文档进行安装。
- Debian/Ubuntu 系统:
-
安装 Nmap MCP Server: 你可以直接从源代码运行,或者将项目安装为 Python 包。
- 从源代码运行: 克隆仓库后,进入项目根目录,然后运行:
python -m src.nmap_mcp - 安装为 Python 包: 在项目根目录运行以下命令进行安装:
安装完成后,可以使用 'nmap-mcp' 命令启动服务器。pip install -e .
- 从源代码运行: 克隆仓库后,进入项目根目录,然后运行:
服务器配置
MCP 客户端需要配置以下 JSON 格式信息以连接到 Nmap MCP 服务器。
{ "serverName": "nmap", "command": "nmap-mcp", "args": [] }
配置参数说明:
- 'serverName': 服务器名称,固定为 "nmap"。
- 'command': 启动服务器的命令。如果选择安装为 Python 包,则使用 "nmap-mcp";如果从源代码运行,则使用 "python -m src.nmap_mcp"。
- 'args': 启动命令的参数,本服务器无需额外参数,保持为空列表 '[]' 即可。
基本使用方法
以下是一些基本的使用示例,展示如何通过 MCP 客户端与 Nmap MCP 服务器交互。
-
运行 Nmap 扫描: 客户端调用 'run-nmap-scan' 工具,并提供目标和扫描选项。例如,扫描 '192.168.1.0/24' 网段的 22, 80, 443 端口并进行版本检测:
{ "tool_call": { "tool_name": "run-nmap-scan", "parameters": { "target": "192.168.1.0/24", "options": "-sV -p 22,80,443" } } }服务器将返回扫描完成的消息,其中包含扫描 ID。
-
获取扫描详情: 使用扫描 ID 调用 'get-scan-details' 工具,获取该扫描的概要信息:
{ "tool_call": { "tool_name": "get-scan-details", "parameters": { "scan_id": "<scan_id>" // 替换为实际的扫描 ID } } }服务器将返回包含扫描目标、选项、时间戳、主机数量等信息的文本。
-
列出所有扫描: 调用 'list-all-scans' 工具,无需参数,获取所有已完成扫描的列表:
{ "tool_call": { "tool_name": "list-all-scans", "parameters": {} } }服务器将返回包含所有扫描 ID、目标、选项和主机数量的列表。
-
分析扫描结果: 使用 'analyze-scan' Prompt 模板,指定扫描 ID 和分析焦点,生成用于分析扫描结果的 Prompt:
{ "get_prompt": { "prompt_name": "analyze-scan", "parameters": { "scan_id": "<scan_id>", // 替换为实际的扫描 ID "focus": "security" // 可选,例如 "security", "services", "overview" } } }服务器将返回包含分析指令的消息,LLM 客户端可以使用该消息来分析扫描结果资源 'nmap://scan/{scan_id}'。
请注意,执行网络扫描可能涉及安全风险和法律问题。请确保在授权的范围内进行扫描操作。
信息
分类
开发者工具