Nmap MCP Server
Nmap MCP Server
Ein auf dem FastMCP-Framework entwickelter Nmap-Scan-Dienst, der Fernzugriff über das Streamable HTTP-Protokoll bietet und die Integration von MCP-Clients (Model Context Protocol) unterstützt.
Screenshot-Vorschau
Verwendung des Nmap MCP Servers für Port-Scans in DeepSOC:

Related MCP server: Nmap MCP Server
Funktionen
Schnell-Scan - Scannt die gängigsten Ports (ca. 100) des Ziel-Hosts
Vollständiger Scan - Scannt alle 65535 Ports, unterstützt die Erkennung von Service-Versionen
Benutzerdefinierter Scan - Unterstützt beliebige Nmap-Befehlsparameter
Asynchrone Aufgaben - Langwierige Scans werden automatisch in Hintergrundaufgaben umgewandelt; Ergebnisse können über die Aufgaben-ID abgefragt werden
Token-Authentifizierung - Unterstützt sowohl URL-Parameter als auch Bearer-Token-Authentifizierung
Strukturierte Ausgabe - Schnell-/Vollständige Scans liefern strukturierte Daten im JSON-Format
Funktionsweise
┌─────────────┐ HTTP/MCP ┌─────────────────┐
│ MCP Client │ ◄───────────────► │ Nmap MCP Server │
└─────────────┘ └────────┬────────┘
│
▼
┌─────────────────┐
│ Task Manager │
│ (SQLite) │
└────────┬────────┘
│
▼
┌─────────────────┐
│ Scanner │
│ (Nmap + XML) │
└─────────────────┘Anfrageverarbeitung: Der MCP-Client sendet eine Scan-Anfrage über das Streamable HTTP-Protokoll
Aufgabenplanung: Der Server erstellt einen Aufgabeneintrag und speichert diesen in einer SQLite-Datenbank
Synchrones Warten: Versucht den Scan innerhalb des konfigurierten Timeouts (standardmäßig 30 Sekunden) abzuschließen
Asynchrones Fallback: Wenn der Timeout überschritten wird, wird die Aufgabe im Hintergrund ausgeführt und eine Aufgaben-ID für die spätere Abfrage zurückgegeben
Ergebnisanalyse: Nmap gibt Daten im XML-Format aus, der Server analysiert diese und gibt strukturiertes JSON zurück
Installation
Systemanforderungen
Python 3.10+
Nmap (muss auf dem System installiert sein)
Installationsschritte
# 克隆项目
git clone <repository-url>
cd nmap-mcp-http
# 创建虚拟环境
python3 -m venv venv
source venv/bin/activate # Linux/macOS
# 或 venv\Scripts\activate # Windows
# 安装依赖
pip install -r requirements.txt
# 生成配置文件模板
python server.py --init
# 编辑配置文件
cp config.example.json config.json
vim config.json # 修改 token 等配置Konfiguration
Beispiel für die Konfigurationsdatei config.json:
{
"host": "0.0.0.0",
"port": 3004,
"path": "/mcp",
"token": "your_secret_token_here",
"sync_timeout": 30,
"max_concurrent_tasks": 10,
"db_path": "nmap_tasks.db",
"nmap_path": "nmap"
}Parameter | Beschreibung | Standardwert |
| Abhöradresse |
|
| Abhörport |
|
| MCP-Dienstpfad |
|
| Authentifizierungs-Token | Automatisch generiert |
| Synchroner Warte-Timeout (Sekunden) |
|
| Maximale Anzahl gleichzeitiger Aufgaben |
|
| Pfad zur SQLite-Datenbank |
|
| Pfad zur Nmap-Programmdatei |
|
Docker-Bereitstellung
Das Projekt enthält eine Dockerfile und eine docker-compose.yml, sodass es direkt containerisiert ausgeführt werden kann.
Methode A: Bauen und Ausführen aus dem Quellcode (docker compose)
1) Vorbereiten der Ausführungsdateien
# 初始化配置文件(请修改 token)
cp config.example.json config.json
# 预创建 SQLite 文件,避免被 Docker 识别成目录
touch nmap_tasks.db2) Bauen und Starten
docker compose up -d --build3) Logs anzeigen
docker compose logs -f nmap-mcp-server4) Dienst stoppen
docker compose downMethode B: Direktes Abrufen des GHCR-Images (docker pull + docker run)
Geeignet für Szenarien, in denen der Quellcode nicht heruntergeladen werden soll.
Lokales Verzeichnis und Konfigurationsdatei vorbereiten:
mkdir -p nmap-mcp-data
cd nmap-mcp-data
cat > config.json <<'EOF'
{
"host": "0.0.0.0",
"port": 3004,
"path": "/mcp",
"token": "replace_with_your_token",
"sync_timeout": 30,
"max_concurrent_tasks": 10,
"db_path": "nmap_tasks.db",
"nmap_path": "nmap"
}
EOF
touch nmap_tasks.dbImage abrufen (bevorzugtes Organisations-Repository):
docker pull ghcr.io/flagify-com/nmap-mcp-http:latest
# fallback:
# docker pull ghcr.io/wzfukui/nmap-mcp-http:latestContainer starten:
docker run -d \
--name nmap-mcp-server \
-p 3004:3004 \
-v "$(pwd)/config.json:/app/config.json:ro" \
-v "$(pwd)/nmap_tasks.db:/app/nmap_tasks.db" \
--restart always \
ghcr.io/flagify-com/nmap-mcp-http:latestLogs anzeigen:
docker logs -f nmap-mcp-serverContainer stoppen und löschen:
docker rm -f nmap-mcp-serverFehlerbehebung bei Mount-Fehlern
Wenn in den Logs der folgende Fehler auftritt:
IsADirectoryError: [Errno 21] Is a directory: '/app/config.json'Dies bedeutet normalerweise, dass die config.json auf dem Host-System nicht existiert und Docker automatisch ein Verzeichnis mit demselben Namen erstellt und in den Container gemountet hat.
Führen Sie den folgenden Befehl aus, um dies zu beheben (im Ausführungsverzeichnis des Hosts):
docker rm -f nmap-mcp-server
rm -rf config.json
test -d nmap_tasks.db && rm -rf nmap_tasks.db
cat > config.json <<'EOF'
{
"host": "0.0.0.0",
"port": 3004,
"path": "/mcp",
"token": "replace_with_your_token",
"sync_timeout": 30,
"max_concurrent_tasks": 10,
"db_path": "nmap_tasks.db",
"nmap_path": "nmap"
}
EOF
touch nmap_tasks.dbStarten Sie anschließend den Container erneut mit docker run ....
GitHub Actions (Docker Publish)
Das Repository enthält eine .github/workflows/docker-publish.yml mit folgenden Auslösern:
Push auf
mainPush eines
v*Tags (z. B.v1.0.0)Manuelle Auslösung über
workflow_dispatch
Der Workflow führt automatisch folgende Schritte aus:
Anmeldung bei GHCR (
ghcr.io)Bauen des Docker-Images
Pushen des Images nach
ghcr.io/<owner>/<repo>
Beispiel für die Image-Adresse:
# preferred (org):
ghcr.io/flagify-com/nmap-mcp-http:latest
ghcr.io/flagify-com/nmap-mcp-http:main
ghcr.io/flagify-com/nmap-mcp-http:sha-<commit>
# fallback (personal):
ghcr.io/wzfukui/nmap-mcp-http:latest
ghcr.io/wzfukui/nmap-mcp-http:main
ghcr.io/wzfukui/nmap-mcp-http:sha-<commit>Verwendung
Dienst starten
# 使用默认配置文件 (config.json)
python server.py
# 指定配置文件
python server.py -c /path/to/config.json
# 生成配置模板
python server.py --initMCP-Client-Konfiguration
Nach dem Start des Dienstes wird die MCP-Client-Konfiguration ausgegeben. Es werden zwei Authentifizierungsmethoden unterstützt:
Methode 1: URL-Token
{
"mcpServers": {
"nmap-scanner": {
"name": "Nmap Scanner",
"type": "streamableHttp",
"description": "Nmap 端口扫描服务",
"isActive": true,
"baseUrl": "http://127.0.0.1:3004/mcp?token=your_token"
}
}
}Methode 2: Bearer-Token
{
"mcpServers": {
"nmap-scanner": {
"name": "Nmap Scanner",
"type": "streamableHttp",
"description": "Nmap 端口扫描服务",
"isActive": true,
"baseUrl": "http://127.0.0.1:3004/mcp",
"headers": {
"Authorization": "Bearer your_token"
}
}
}
}Test und Verifizierung
Das Projekt enthält einen Test-Client, mit dem schnell überprüft werden kann, ob der MCP-Server ordnungsgemäß funktioniert.
# 激活虚拟环境
source venv/bin/activate
# 运行测试(需要先启动服务)
python test_client.py <your_token>
# 示例
python test_client.py your_secret_token_hereDie Tests umfassen:
URL-Token-Authentifizierung
HTTP-Header Bearer-Token-Authentifizierung
Anfrage ohne Token (Verifizierung der Ablehnung)
Anfrage mit falschem Token (Verifizierung der Ablehnung)
Das Testprogramm ruft automatisch das Schnell-Scan-Tool auf und fragt den Aufgabenstatus ab, um sicherzustellen, dass alle Funktionen einwandfrei laufen.
Verfügbare Tools
Liste der vom Nmap MCP Server bereitgestellten Tools:

quick_scan
Scannt die gängigsten Ports (ca. 100) des Ziel-Hosts.
Parameter:
target(erforderlich): Ziel-IP, Domain oder CIDR-Formattimeout(optional): Synchroner Warte-Timeout, 5-300 Sekunden
Beispiel:
{"target": "192.168.1.1"}
{"target": "example.com", "timeout": 60}full_scan
Scannt alle Ports (1-65535) des Ziel-Hosts, einschließlich Service-Versionserkennung.
Parameter:
target(erforderlich): Ziel-IP, Domain oder CIDR-Formattimeout(optional): Synchroner Warte-Timeout, 5-600 Sekunden
Beispiel:
{"target": "10.0.0.1", "timeout": 300}custom_scan
Führt einen benutzerdefinierten Nmap-Befehl aus.
Parameter:
command(erforderlich): Nmap-Befehlsparameter (ohne dennmap-Befehl selbst)timeout(optional): Synchroner Warte-Timeout, 5-600 Sekunden
Beispiel:
{"command": "-sS -p 80,443,8080 192.168.1.1"}
{"command": "-sV -sC -p 22 example.com"}
{"command": "--script vuln 192.168.1.1", "timeout": 120}get_task_status
Fragt den Status einer Scan-Aufgabe ab.
Parameter:
task_id(erforderlich): Aufgaben-ID (UUID-Format)
Rückgabestatus:
pending: Wartet auf Ausführungrunning: Scan läuftcompleted: Scan abgeschlossenfailed: Scan fehlgeschlagen
get_task_result
Ruft das vollständige Ergebnis einer Scan-Aufgabe ab.
Parameter:
task_id(erforderlich): Aufgaben-ID (UUID-Format)
Beispiel für Rückgabeergebnisse
Synchron abgeschlossen
{
"status": "completed",
"task_id": "550e8400-e29b-41d4-a716-446655440000",
"result": {
"target": "192.168.1.1",
"scan_time": 2.5,
"hosts": [
{
"address": "192.168.1.1",
"status": "up",
"ports": [
{
"port": 22,
"protocol": "tcp",
"state": "open",
"service": "ssh",
"version": "OpenSSH 8.0"
},
{
"port": 80,
"protocol": "tcp",
"state": "open",
"service": "http",
"version": "nginx 1.18.0"
}
]
}
]
}
}Asynchrone Aufgabe
{
"status": "pending",
"task_id": "550e8400-e29b-41d4-a716-446655440000",
"message": "扫描任务已提交,请使用 get_task_status 或 get_task_result 查询结果"
}Hinweise
Sicherheit
Token-Schutz: Bitte ändern Sie unbedingt das Standard-Token, um unbefugten Zugriff zu verhindern
Netzwerkisolierung: Es wird empfohlen, den Dienst in einer vertrauenswürdigen Netzwerkumgebung zu betreiben oder in Verbindung mit einer Firewall zu verwenden
Berechtigungskontrolle: Dieser Dienst schränkt die Scan-Ziele nicht ein. Bitte stellen Sie sicher, dass er nur für autorisierte Sicherheitstests verwendet wird
Befehlsinjektion: Das Tool
custom_scanakzeptiert beliebige Nmap-Parameter; bitte bewerten Sie die Risiken
Leistung
Parallelitätsbegrenzung: Standardmäßig sind maximal 10 gleichzeitige Aufgaben möglich; Anfragen darüber hinaus werden abgelehnt
Timeout-Einstellungen: Vollständige Scans dauern lange; es wird empfohlen, den asynchronen Aufgabenmodus zu verwenden
Ressourcenverbrauch: Weitreichende Scans (z. B. /16-Netzwerke) verbrauchen erhebliche Systemressourcen
Bereitstellungsempfehlungen
Containerisierte Bereitstellung: Docker wird für die Bereitstellung empfohlen, um Isolierung und Verwaltung zu erleichtern
Log-Überwachung: Es wird empfohlen, eine Protokollsammlung zu konfigurieren, um Scan-Aktivitäten zu überwachen
Regelmäßige Bereinigung: Die SQLite-Datenbank wächst kontinuierlich; es wird empfohlen, historische Aufgaben regelmäßig zu bereinigen
Projektstruktur
nmap-mcp-http/
├── .github/workflows/
│ └── docker-publish.yml # GitHub Actions Docker 构建与发布
├── .dockerignore # Docker 构建忽略规则
├── Dockerfile # 容器镜像构建文件
├── server.py # MCP 服务器主程序
├── config.py # 配置管理模块
├── models.py # 数据模型定义
├── scanner.py # Nmap 扫描器封装
├── task_manager.py # 任务管理器(SQLite)
├── auth.py # Token 鉴权中间件
├── test_client.py # 测试客户端
├── config.json # 配置文件(需自行创建)
├── config.example.json # 配置文件模板
├── requirements.txt # Python 依赖
├── docker-compose.yml # 本地容器编排
├── VERSION # 版本号
├── LICENSE # MIT 开源许可证
├── README.md # 项目说明
└── images/ # 截图资源
├── deepsoc-with-nmap-mcp.png
└── nmap-mcp-available-tools.pngBeitrag
Issues und Pull Requests sind willkommen! Dieses Projekt ist vollständig Open Source und wir freuen uns auf die Beteiligung und Beiträge der Community.
Lizenz
Dieses Projekt steht unter der MIT-Lizenz.
Copyright (c) 2025 Shanghai Wuzhi Intelligent Technology Co., Ltd.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
No tool schema history has been recorded yet.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Scans remote MCP servers for protocol, security, and TLS issues; exposes scan tools via MCP.
Free, read-only security scanner for remote MCP servers, before you connect them.
Security scanner for MCP servers. Detect vulnerabilities, prompt injection, and tool poisoning.
Scan any MCP server for tool-poisoning, security, auth & license. Trust score before install.
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceEnables AI assistants to perform network scanning operations using NMAP, offering a standardized interface for network analysis and security assessments through AI conversations.3649MIT
- FlicenseBqualityDmaintenanceExposes Nmap network scanning capabilities through a Model Context Protocol (MCP) server, allowing users to perform various types of network scans including vulnerability assessment, service detection, and OS fingerprinting.116-
- FlicenseNot gradedqualityDmaintenanceEnables network scanning and security assessment using Nmap through MCP, allowing AI assistants to perform port scans, service detection, and network reconnaissance on specified targets with configurable scan parameters.-
- AlicenseNot gradedqualityCmaintenanceEnables network scanning and reconnaissance through MCP tools, leveraging nmap for port scanning, service detection, and host discovery via synchronous, asynchronous, and streaming interfaces.MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/flagify-com/nmap-mcp-http'
If you have feedback or need assistance with the MCP directory API, please join our Discord server