hospital-vuln-scanner-mcp
README.md
# Hospital Vulnerability Scanner MCP Server
[](https://pypi.org/project/hospital-vuln-mcp)
[](https://pypi.org/project/hospital-vuln-mcp)
[](https://github.com/12211725-star/hospital-vuln-mcp/blob/main/LICENSE)
English | [中文](README_CN.md)
医院漏洞扫描 MCP 服务器,为 AI 助手提供医疗信息系统**真实安全扫描**能力。支持端口扫描、漏洞检测、医疗系统识别、合规报告生成等 14 个工具。
## ✨ 功能特性
- 🔍 **真实漏洞扫描** — 支持 quick/standard/deep 三种模式,自动调用 nmap/nuclei 或 Python 回退
- 🏥 **医疗系统识别** — 自动识别 HIS/PACS/LIS/RIS/EMR 等医疗信息系统
- 🌐 **网络发现** — 网络资产发现和端口扫描
- 📊 **报告生成** — 支持 PDF/HTML/JSON/CSV 格式报告
- 🔐 **合规检查** — 符合等保 2.0 要求
- ⚡ **零依赖运行** — 无需安装 nmap/nuclei,Python 原生扫描也能用
## 🚀 快速开始
### 1. 安装
```bash
# 使用 uvx(推荐)
uvx hospital-vuln-mcp
# 或使用 pip
pip install hospital-vuln-mcp
```
### 2. 集成到 MCP 客户端
在 MCP 客户端配置文件中添加:
```json
{
"mcpServers": {
"hospital-vuln-mcp": {
"command": "uvx",
"args": ["hospital-vuln-mcp"],
"env": {
"HOSPITAL_VULN_MCP_LOG_LEVEL": "INFO"
}
}
}
}
```
### Docker 方式
```json
{
"mcpServers": {
"hospital-vuln-mcp": {
"command": "docker",
"args": ["run", "--rm", "-i", "hospital-vuln-mcp"],
"env": {
"HOSPITAL_VULN_MCP_LOG_LEVEL": "INFO"
}
}
}
}
```
### Streamable HTTP 远程部署
```bash
hospital-vuln-mcp --transport http --host 0.0.0.0 --port 8000
```
### 3. 可选:安装扫描引擎增强
```bash
# 安装 nmap(端口扫描增强)
# macOS
brew install nmap
# Ubuntu/Debian
sudo apt install nmap
# Windows
choco install nmap
# 安装 nuclei(漏洞扫描增强)
go install -v github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest
```
> 💡 **提示**:不安装也能用,会自动降级到 Python 原生扫描。
## 📖 使用方法
### 基础扫描
在 Claude / Cursor / 其他 MCP 客户端中:
```
请帮我扫描 192.168.1.100 这台服务器
```
AI 会调用 `start_scan` 工具,返回:
```json
{
"task_id": "abc123",
"status": "completed",
"open_ports": [
{"port": 22, "service": "SSH"},
{"port": 3306, "service": "MySQL"},
{"port": 8080, "service": "HTTP-Alt"}
],
"vulnerabilities": [
{"title": "MySQL 服务暴露", "severity": "medium"}
]
}
```
### 指定扫描类型
```
对 10.0.0.50 进行深度扫描
```
```
快速扫描 www.example.com
```
### 端口扫描
```
扫描 192.168.1.1 的 22,80,443,3306 端口
```
### 医疗系统识别
```
识别 192.168.1.100 运行的医疗系统类型
```
### 网络发现
```
发现 192.168.1.0/24 网段的活跃主机
```
## 🎯 提示词指南
### 安全评估场景
```
我需要对一台新上线的 HIS 系统进行安全评估,
目标 IP 是 192.168.1.200,请帮我进行标准扫描并生成报告。
```
### 定期巡检场景
```
请帮我巡检内网 10.0.0.0/24 网段的医疗系统安全状况。
```
### 合规检查场景
```
我需要为等保测评准备安全扫描报告,
请对目标系统进行深度扫描并导出合规报告。
```
### 应急响应场景
```
发现 192.168.1.50 可能有安全风险,
请立即进行快速扫描帮我排查问题。
```
### 资产盘点场景
```
帮我盘点医院网络中的所有医疗信息系统,
识别系统类型和开放端口。
```
## 🛠️ 工具列表
### 扫描管理
| 工具 | 描述 | 参数 |
|------|------|------|
| `start_scan` | 启动漏洞扫描 | `target`: IP/域名/URL, `scan_type`: quick/standard/deep |
| `get_scan_status` | 查询扫描状态 | `task_id`: 任务ID |
| `list_scans` | 列出扫描历史 | `limit`: 数量, `status`: 状态筛选 |
| `cancel_scan` | 取消扫描 | `task_id`: 任务ID |
### 漏洞管理
| 工具 | 描述 | 参数 |
|------|------|------|
| `list_vulnerabilities` | 列出漏洞 | `severity`: 严重程度, `status`: 状态 |
| `get_vulnerability` | 获取漏洞详情 | `vuln_id`: 漏洞ID |
| `update_vulnerability_status` | 更新漏洞状态 | `vuln_id`, `status`, `comment` |
### 网络工具
| 工具 | 描述 | 参数 |
|------|------|------|
| `discover_network` | 网络发现 | `cidr`: 网段 |
| `scan_host_ports` | 端口扫描 | `host`: 主机, `ports`: 端口列表(可选) |
| `identify_medical_systems` | 医疗系统识别 | `target`: 目标, `ports`: 端口列表(可选) |
### 报告工具
| 工具 | 描述 | 参数 |
|------|------|------|
| `generate_report` | 生成报告 | `scan_id`, `report_type`, `format` |
| `list_reports` | 列出报告 | `limit`: 数量 |
### 系统工具
| 工具 | 描述 |
|------|------|
| `get_vuln_stats` | 漏洞统计分析 |
| `get_system_status` | 系统状态(含 nmap/nuclei 可用性) |
## ⚙️ 扫描引擎
### 自动检测机制
```
start_scan()
│
├── 检测 nmap → 有则用于端口扫描
│ └── 无 → Python socket 多线程扫描
│
├── 检测 nuclei → 有则用于漏洞扫描
│ └── 无 → 内置规则检测常见漏洞
│
└── 返回结果
```
### 内置漏洞检测规则
即使没有 nuclei,也能检测以下常见风险:
| 风险类型 | 严重程度 | 检测条件 |
|---------|---------|---------|
| MySQL 服务暴露 | Medium | 3306 端口开放 |
| Redis 未授权访问 | High | 6379 端口开放 |
| MongoDB 未授权访问 | High | 27017 端口开放 |
| RDP 远程桌面暴露 | High | 3389 端口开放 |
| SMBv1 协议风险 | High | 445 端口开放 |
| PHPInfo 信息泄露 | Medium | HTTP 响应含 phpinfo |
| 目录遍历风险 | Medium | HTTP 响应含 "Index of" |
### 医疗系统指纹识别
通过 HTTP Banner 和页面特征识别:
| 系统类型 | 关键词 |
|---------|--------|
| HIS | 医院信息系统、门诊、住院、挂号、处方 |
| PACS | 影像、DICOM、放射、PACS |
| LIS | 检验、实验室、生化、免疫 |
| RIS | 放射信息系统、影像诊断 |
| EMR | 电子病历、病程记录 |
## 📖 环境变量
| 变量 | 说明 | 默认值 |
|------|------|--------|
| `HOSPITAL_VULN_MCP_LOG_LEVEL` | 日志级别 | `INFO` |
| `HOSPITAL_VULN_MCP_SCAN_TIMEOUT` | 扫描超时(秒) | `300` |
| `HOSPITAL_VULN_MCP_MAX_CONCURRENT_SCANS` | 最大并发扫描数 | `10` |
## 🔧 开发
```bash
git clone https://github.com/12211725-star/hospital-vuln-mcp.git
cd hospital-vuln-mcp
pip install -e ".[dev]"
# 运行测试
pytest
# 本地运行
python -m hospital_vuln_mcp
```
## 📋 更新日志
### v1.2.0 (2026-04-23)
- 🔧 **API 改进**: `scan_host_ports` 的 `ports` 参数从字符串改为数组
- 🔧 **API 改进**: `identify_medical_systems` 新增可选 `ports` 参数
- 🐛 修复 AI 助手调用时参数名不匹配导致的验证错误
### v1.1.9 (2026-04-22)
- 🐛 **关键修复**: nmap/nuclei 路径检测改为延迟检测(每次扫描时检测)
### v1.1.8 (2026-04-22)
- 🐛 修复 nmap/nuclei 路径检测,新增多路径搜索
### v1.1.7 (2026-04-22)
- 🔧 对齐魔搭 MCP 开发规范
- 📝 新增 `.env.example` 文件
### v1.1.6 (2026-04-22)
- 🐛 改回 stdio 协议(与魔搭官方一致)
### v1.1.5 (2026-04-21)
- 🐛 README 添加 env 字段
- 🐛 mcp.json name 与 PyPI 包名一致
### v1.1.4 (2026-04-21)
- 🐛 修复魔搭 README 格式
### v1.1.3 (2026-04-21)
- 🐛 修复 README 中 PyPI 包名错误
### v1.1.2 (2026-04-21)
- 🔧 GitHub 仓库名改为 `hospital-vuln-scanner-mcp`
### v1.1.1 (2026-04-21)
- 📝 更新 README,添加使用方法和提示词指南
- 📝 添加扫描引擎说明和内置规则文档
- 📝 添加医疗系统指纹识别说明
### v1.1.0 (2026-04-21)
- ✨ 新增真实扫描能力(nmap/nuclei 自动检测)
- ✨ 新增 Python 原生端口扫描回退
- ✨ 新增医疗系统指纹识别
- ✨ 新增内置漏洞检测规则
- 🐛 修复扫描任务永远卡在 running 的问题
### v1.0.0 (2026-04-21)
- 🎉 初始版本
- ✨ 14 个 MCP 工具
- ✨ 魔搭 MCP 广场上架
## 📄 许可证
MIT License
## 🔗 链接
- **GitHub**: https://github.com/12211725-star/hospital-vuln-mcp
- **Issues**: https://github.com/12211725-star/hospital-vuln-mcp/issues
- **PyPI**: https://pypi.org/project/hospital-vuln-mcp/
- **魔搭 MCP 广场**: https://modelscope.cn/mcp/servers
TDQS
A3.7/5.0
Scored across 14 tools
Disambiguation5/5
Each tool has a clear, distinct purpose (e.g., start_scan vs. get_scan_status, list_vulnerabilities vs. get_vulnerability). There is no ambiguity between tools.
Naming Consistency5/5
All tool names follow a consistent verb_noun snake_case pattern (e.g., cancel_scan, discover_network, generate_report). No mixing of conventions.
Tool Count5/5
14 tools are well-scoped for a vulnerability scanner covering scanning, vulnerability management, network discovery, and reporting. No unnecessary tools.
Completeness4/5
Covers the core lifecycle (scan, report, vuln management) well. Minor gap: absence of a tool to retrieve report content (only list and generate). Overall, very thorough.
Maintenance
ActivityInactive
ResponsivenessNo issues