Nmap MCP服务器
一个模型上下文协议(MCP)服务器,它将Nmap CLI功能作为MCP工具公开,使用 FastMCP 通过stdio传输。此服务器通过Nmap命令行工具提供全面的网络扫描功能。
🚀 FastMCP实施
此服务器是使用 FastMCP,一个现代化的高性能MCP框架,提供:
- 简化的API:基于干净装饰器的工具注册
- 类型安全:完整的类型提示和验证
- 标准运输:通过标准输入/输出进行高效通信
- 异步支持:具有适当错误处理的非阻塞操作
特性
Nmap MCP服务器使用FastMCP装饰器公开以下工具:
1.基本扫描(nmap_basic_scan)
执行不同强度级别的基本Nmap扫描:
- 快速:快速扫描,高吞吐量
- 全面的:具有服务检测和操作系统检测的全扫描
- 隐形:低轮廓扫描以避免检测
2.服务检测(nmap_service_detection)
使用可配置的强度级别(0-9)检测目标主机上运行的服务和版本。
3.操作系统检测(nmap_os_detection)
通过可配置的重试尝试检测目标主机上运行的操作系统。
4.脚本扫描(nmap_script_scan)
运行NSE(Nmap脚本引擎)脚本进行高级侦察和漏洞评估。
5.隐形扫描(nmap_stealth_scan)
使用可配置的定时模板以最小的检测量执行SYN扫描。
6.全面扫描(nmap_comprehensive_scan)
结合多种检测方法进行全功能扫描。
7.Ping扫描(nmap_ping_scan)
使用各种ping方法(ICMP、TCP或两者)发现实时主机。
8.端口扫描(nmap_port_scan)
使用不同的方法(SYN、Connect、UDP)扫描特定端口。
9.漏洞扫描(nmap_vulnerability_scan)
运行不同类别的漏洞检测脚本。
10.网络发现(nmap_network_discovery)
发现整个网络上的主机和服务。
11.自定义扫描(nmap_custom_scan)
使用用户定义的Nmap选项执行扫描,以获得最大的灵活性。
先决条件
- Python 3.10或更高版本
- Nmap已安装并在系统PATH中可用
安装Nmap
macOS:
brew install nmapUbuntu/Debian:
sudo apt update
sudo apt install nmapCentOS/RHEL:
sudo yum install nmap
# or for newer versions:
sudo dnf install nmap窗户: 从下载并安装 nmap.org
安装
- 克隆此存储库:
git clone
cd nmap-mcp-server- 安装依赖项:
pip install -e .用法
运行FastMCP服务器
服务器可以直接使用stdio传输运行:
python server.py或者使用已安装的脚本:
nmap-mcp-serverClaude桌面配置
将以下配置添加到您的Claude Desktop MCP设置中:
{
"mcpServers": {
"NmapMCP": {
"command": "uv",
"args": [
"--directory",
"/Users/haji/mcp-servers/nmap-mcp-server",
"run",
"server.py"
]
}
}
}配置步骤:
- 打开克劳德桌面
- 转到“设置”→ MCP服务器
- 添加上面的JSON配置
- 重新启动克劳德桌面
- 验证服务器是否已连接
FastMCP工具示例
基本网络扫描
# The tool is called with typed parameters
result = await nmap_basic_scan(
targets="192.168.1.0/24",
ports="common",
scan_type="quick"
)服务检测
result = await nmap_service_detection(
targets="example.com",
ports="80,443,8080",
intensity=7
)脆弱性评估
result = await nmap_vulnerability_scan(
targets="192.168.1.100",
ports="common",
vuln_category="all"
)自定义扫描
result = await nmap_custom_scan(
targets="example.com",
custom_options="-sS -p 1-1000 -A --script=vuln",
output_format="normal"
)FastMCP架构
服务器使用FastMCP的干净装饰器模式:
@app.tool(
name="nmap_basic_scan",
description="Perform a basic Nmap scan of specified targets"
)
async def nmap_basic_scan(
targets: str,
ports: str = "common",
scan_type: str = "quick"
) -> str:
"""Perform a basic Nmap scan of specified targets."""
# Implementation here
return result安全考虑
⚠️ 重要安全注意事项:
- 遵守法律:仅扫描您拥有或明确允许扫描的网络和系统。
- 网络影响:某些扫描可能会占用大量资源,并可能影响网络性能。
- 检测:激进的扫描可能会触发安全系统和防火墙。
- 速率限制:服务器包括超时和速率限制,以防止滥用。
错误处理
FastMCP服务器包括全面的错误处理功能,用于:
- 找不到Nmap命令
- 命令超时
- 无效的参数
- 网络连接问题
- 权限错误
日志记录
服务器使用Python的内置日志系统。日志包括:
- 命令执行详细信息
- 错误消息
- 性能指标
测试
测试FastMCP服务器:
# Test tool registration and functionality
python test_fastmcp.py
# Test examples
python example_usage.py贡献
- 分叉存储库
- 创建要素分支
- 进行更改
- 如果适用,添加测试
- 提交拉取请求
许可证
此项目根据MIT许可证获得许可-有关详细信息,请参阅许可证文件。
免责声明
此工具仅用于教育和授权的安全测试目的。用户有责任确保在扫描任何网络或系统之前获得适当的授权。
支持
对于问题和疑问:
- 检查错误日志
- 验证Nmap是否已安装且可访问
- 确保您拥有适当的权限
- 在存储库上打开问题
更新日志
版本1.0.0
- FastMCP实现的初始版本
- 支持所有主要的Nmap扫描技术
- 全面的错误处理
- 标准运输方式
- 类型安全工具定义
- 带uv的Claude桌面配置
