基于MCP协议的智能分层端口扫描服务,专为AI助手和开发工具设计,可快速发现网络资产和潜在风险,保障服务正常运行。
# 克隆项目
git clone https://github.com/relaxcloud-cn/port-scanner.git
cd mcp-port-scanner
# 安装Python依赖
pip install -r requirements.txt
pip install mcp
# 安装RustScan(必需)
# macOS
brew install rustscan
# Linux
wget https://github.com/RustScan/RustScan/releases/download/2.0.1/rustscan_2.0.1_amd64.deb
sudo dpkg -i rustscan_2.0.1_amd64.deb
# 启动stdio模式服务(本地Cursor集成)
docker-compose up -d mcp-port-scanner
# 启动SSE模式服务(支持远程访问)
docker-compose up -d mcp-port-scanner-sse
# 查看服务状态
docker-compose ps
graph TB
subgraph "接口层 (Interfaces)"
CLI["🖥️ CLI
命令行接口"]
MCP["🔌 MCP
协议接口"]
HTTP["🌐 HTTP
Web接口"]
SSE["📡 Cursor SSE
实时推送"]
end
subgraph "适配器层 (Adapters)"
CLI_ADAPTER["CLI适配器"]
MCP_LOCAL["MCP本地适配器"]
MCP_REMOTE["MCP远程适配器"]
SSE_ADAPTER["SSE适配器"]
end
subgraph "服务层 (Service Layer)"
SCANNER["🔍 Scanner
端口扫描器"]
DETECTOR["🔎 Detector
HTTP检测器"]
PROBER["🕵️ Prober
Web探测器"]
MODELS["📊 Models
数据模型"]
end
CLI --> CLI_ADAPTER
MCP --> MCP_LOCAL
MCP --> MCP_REMOTE
HTTP --> MCP_REMOTE
SSE --> SSE_ADAPTER
CLI_ADAPTER --> SCANNER
MCP_LOCAL --> SCANNER
MCP_REMOTE --> SCANNER
SSE_ADAPTER --> SCANNER
SCANNER --> DETECTOR
DETECTOR --> PROBER
SCANNER -.-> MODELS
DETECTOR -.-> MODELS
PROBER -.-> MODELS
style CLI fill:#e1f5fe
style MCP fill:#f3e5f5
style HTTP fill:#e8f5e8
style SSE fill:#fff3e0
style SCANNER fill:#ffebee
style DETECTOR fill:#f1f8e9
style PROBER fill:#e3f2fd
style MODELS fill:#fafafa
flowchart TD
START([开始扫描]) --> COMMON[🔍 常用端口扫描
Top 1000 ports]
COMMON --> CHECK{开放端口数量?}
CHECK -->|< 3个端口| FULL[🔍 全端口深度扫描
1-65535 ports
可能有隐藏服务]
CHECK -->|≥ 3个端口| SKIP[⏭️ 跳过全端口扫描
已获得足够信息]
FULL --> HTTP[🔎 HTTP服务检测
识别Web服务]
SKIP --> HTTP
HTTP --> WEB{发现Web服务?}
WEB -->|是| PROBE[🕵️ Web深度探测
• 目录扫描
• 管理后台发现
• 技术栈识别]
WEB -->|否| RESULT
PROBE --> RESULT[📊 输出扫描结果]
style START fill:#e3f2fd
style COMMON fill:#f3e5f5
style CHECK fill:#fff3e0
style FULL fill:#ffebee
style SKIP fill:#e8f5e8
style HTTP fill:#f1f8e9
style WEB fill:#fff3e0
style PROBE fill:#e1f5fe
style RESULT fill:#fafafa
# 扫描单个目标
python -m mcp_port_scanner scan 192.168.1.1
# 扫描指定端口
python -m mcp_port_scanner scan 192.168.1.1 -p 80,443,8080
# 批量扫描
python -m mcp_port_scanner batch 192.168.1.1 192.168.1.2 192.168.1.3
scan_target - 智能单目标扫描
batch_scan - 批量扫描
get_scan_status - 查询扫描状态
list_active_scans - 列出活跃扫描
get_scan_result - 获取扫描结果
stdio模式(推荐本地使用): Docker环境:
{
"mcpServers": {
"port-scanner-stdio": {
"command": "docker",
"args": ["exec", "-i", "mcp-port-scanner", "python", "-m", "mcp_port_scanner.interfaces.mcp_local_server"],
"description": "新版本MCP服务器 - 7个工具,智能扫描策略"
}
}
}
本地Python环境:
{
"mcpServers": {
"port-scanner-local": {
"command": "python",
"args": ["-m", "mcp_port_scanner.interfaces.mcp_local_server"],
"cwd": "/path/to/mcp-port-scanner",
"env": {
"PYTHONPATH": "src"
},
"description": "本地新版本MCP服务器"
}
}
}
SSE模式(支持远程访问):
{
"mcpServers": {
"port-scanner-remote": {
"url": "http://YOUR_SERVER_IP:3000/mcp"
}
}
}
推荐使用 prompt.md 作为AI助手的系统提示词,获得专业的网络安全分析能力。
from mcp_port_scanner import PortScannerSDK
# 创建实例
sdk = PortScannerSDK()
# 扫描目标
result = sdk.scan("192.168.1.1")
print(f"发现 {len(result.open_ports)} 个开放端口")
print(f"发现 {len(result.http_services)} 个Web服务")
print(f"发现 {len(result.admin_directories)} 个管理界面")
单目标扫描:
请扫描 8.8.8.8,进行全面的安全分析
批量扫描:
批量扫描以下目标:
- 8.8.8.8
- www.producthunt.com
- 192.168.2.229
应急响应:
紧急扫描 192.168.2.229,怀疑有异常服务
以下是使用 Cursor 作为 MCP 客户端,与通过 Docker 运行的扫描器服务进行交互的实际工作流程。 1. 快速扫描常用端口 2. 发现开放端口后的智能分析 3. 深入探测Web服务和管理后台
| 属性 | 详情 |
|---|---|
| 快速扫描 | 84.28 - 230.5秒,仅常用端口 |
| 智能扫描(少端口) | 30 - 60秒,包含全端口扫描 |
| 智能扫描(多端口) | 88 - 202.37秒,没有全端口扫描,所有扫描层级 |
| 完整扫描 | 655 - 951秒,全端口扫描,所有扫描层级 |
| C段扫描 | 5 - 15分钟,254个IP地址 |
⚠️ 重要提示
- 仅在授权的网络环境中使用。
- 遵守当地法律法规。
- 合理控制扫描频率。
- 不记录敏感信息。
我们欢迎并感谢社区的贡献。请参考贡献指南来帮助改进项目。
本项目采用MIT许可证 - 查看 LICENSE 文件了解详情。