jayc279/security-scanner
GitHub: jayc279/security-scanner
一个基于 Python FastMCP 构建的 MCP 服务器,将 nmap 的网络扫描能力安全地暴露给 Claude Code 和 Cursor,实现 AI 驱动的自动化网络架构探测与漏洞检查。
Stars: 0 | Forks: 0
# FastMCP 安全扫描器服务器
一个使用 Python FastMCP 构建的、企业级可用的 Model Context Protocol (MCP) 服务器。该服务器直接向 Claude Code 和 Cursor 暴露了 nmap 的安全封装,允许自动化工作流查询网络架构、发现开放端口、进行操作系统指纹识别以及检查软件漏洞。
## 架构与目录结构
本项目采用模块化、解耦的布局结构,会自动注册在隐藏的本地配置路径中发现的新工具:
```
├── .claude/
│ └── skills/
│ └── port-scan/
│ ├── SKILL.md # Systemic discovery definitions for Claude Code
│ └── scripts/
│ ├── __init__.py
│ ├── perform_scan.py # Boundary Map Tool (@mcp.tool)
│ ├── detect_os.py # OS Signature Tool (@mcp.tool)
│ └── detect_vulns.py # Threat Listing Tool (@mcp.tool)
├── pyproject.toml # Build manifests and dependencies (uv/hatchling)
├── local_scanner.py # Main FastMCP Server Hub and Dynamic Coordinator
└── test_scanner.py # Complete mock-isolated unit test suite
```
## 安全与防御性护栏
- 启动前二进制文件验证:如果缺少底层系统级的 nmap 二进制文件,服务器将在启动时优雅地执行失败关闭,防止产生原始的未处理 traceback。
- 输入清理:对 Host 参数进行修剪和验证,以保护服务器免受 shell 注入或恶意目标参数的攻击。
- Mock 隔离测试:单元测试套件完全隔离了网络层,确保在测试例程期间不会有任何流量逃逸到主机接口。
## 入门指南
### 1. 前置条件
确保已安装 Python uv 包管理器以及主机级别的 nmap 二进制文件:
```
# macOS
brew install nmap
# Ubuntu/Debian
sudo apt-get install nmap
# Windows
# 从 https://nmap.org 下载并安装二进制文件
```
### 2. 开发环境设置与测试
安装项目依赖并使用预配置的测试套件验证架构:
```
# Clone 并进入 repository 目录
cd security-scanner
# 执行 test suite 以验证 module registration 和 mocking
uv run pytest test_scanner.py -v
```
### 3. 在 Claude Code 中注册服务器
要将此服务器在本地链接到您的工作区环境以便进行即时开发分析,请执行标准的发现命令:
```
claude mcp add security-scanner --scope project -- uv run local_scanner.py
```
## 添加新的扫描功能
该架构采用零维护的动态注册模型。要创建一个新的网络功能:
1. 将新脚本放入 `.claude/skills/port-scan/scripts/` 目录中(例如 `dns_lookup.py`)。
2. 在文件顶部导入共享的 mcp 服务器上下文。
3. 将 `@mcp.tool()` 装饰器应用到您的主函数上。
```
from local_scanner import mcp
@mcp.tool()
def identify_dns_records(target: str) -> dict:
"""Analyze target network zones to resolve active records."""
# Your network parsing logic here
return {"status": "complete"}
```
`local_scanner.py` 引擎会在下次启动时自动发现、加载并向 Claude Code 展示这个新工具。
标签:逆向工具