📦 nmap MCP server — 网络审计扫描
v1.0.0基于 nmap 的 MCP 服务器,集成 14 项专用扫描工具,支持主机发现、端口扫描、服务与系统指纹识别,结合 AI 快速定位网络风险。
详细分析 ▾
运行时依赖
版本
初始公开版本 — 14个nmap工具,支持结构化JSON输出、范围强制、审计日志和注入加固
安装命令
点击复制技能文档
# nmap-mcp 技能 将 nmap 封装为结构化工具的 MCP server,具备作用域强制、审计日志和持久化扫描结果功能。 ## 前置条件 - 已安装 nmap(位于 /usr/bin/nmap 或在 config.yaml 中配置路径) - Python 3.10+ 并安装 fastmcp、python-nmap、pyyaml - 若需 SYN/OS/ARP 扫描:为 nmap 二进制文件授予 cap_net_raw 能力(见 Setup) ## 设置 ``bash # 1. 安装 Python 依赖 pip install fastmcp python-nmap pyyaml # 2. 授予 nmap 原始套接字能力(SYN + OS 检测必需) # 仅需执行一次,升级 nmap 后需重新执行 sudo setcap cap_net_raw+ep $(which nmap) # 3. 验证是否生效 getcap $(which nmap) # 预期输出:/usr/bin/nmap cap_net_raw=ep # 4. 配置作用域(编辑 config.yaml —— 设置允许的 CIDR) # 5. 注册到 mcporter(见下方 mcporter.json 条目) ` ## mcporter.json 条目 `json { "nmap": { "command": "python3", "args": ["-u", "/path/to/nmap-mcp/server.py"], "type": "stdio", "env": { "NMAP_CONFIG": "/path/to/nmap-mcp/config.yaml" } } } ` ## 配置 (config.yaml) `yaml # 作用域强制 —— 超出这些 CIDR 的目标将被拒绝 allowed_cidrs: - "127.0.0.0/8" - "192.168.1.0/24" # 你的本地网络 # 路径(如省略则使用相对路径) audit_log: "./audit.log" scan_dir: "./scans" nmap_bin: "/usr/bin/nmap" # 超时时间(秒) timeouts: quick: 120 standard: 300 deep: 600 ` ## 工具 | 工具 | 用途 | 所需权限 | |------|---------|-----------| | nmap_ping_scan | ICMP+TCP 主机发现 | 无 | | nmap_arp_discovery | ARP 主机发现(局域网) | cap_net_raw | | nmap_top_ports | 快速扫描 N 个常见端口 | 无 | | nmap_syn_scan | SYN 半开端口扫描 | cap_net_raw | | nmap_tcp_scan | 完整 TCP 连接端口扫描 | 无 | | nmap_udp_scan | UDP 端口扫描 | cap_net_raw | | nmap_service_detection | 服务/版本检测 | 无 | | nmap_os_detection | OS 指纹识别 | cap_net_raw | | nmap_script_scan | 运行指定 NSE 脚本 | 无 | | nmap_vuln_scan | 运行 vuln NSE 类别 | 无 | | nmap_full_recon | SYN+服务+OS+脚本 | cap_net_raw | | nmap_custom_scan | 任意 flags(受作用域限制并记录) | 视参数而定 | | nmap_list_scans | 列出最近保存的扫描 | 无 | | nmap_get_scan | 按 ID 获取扫描结果 | 无 | ## 运行测试 ``bash python3 -m pytest tests/ -v # 28 项测试,覆盖作用域强制、审计日志、 # 扫描持久化、注入防护与实时扫描