Nmap MCP Server
Servidor MCP de Nmap
Servicio de escaneo Nmap desarrollado sobre el framework FastMCP, que proporciona capacidades de invocación remota a través del protocolo Streamable HTTP y admite la integración con clientes MCP (Model Context Protocol).
Vista previa de capturas de pantalla
Uso del Servidor MCP de Nmap en DeepSOC para escaneo de puertos:

Related MCP server: Nmap MCP Server
Características
Escaneo rápido - Escanea los puertos comunes (aprox. 100) del host objetivo
Escaneo completo - Escanea los 65535 puertos, con soporte para detección de versiones de servicio
Escaneo personalizado - Admite parámetros de comandos Nmap arbitrarios
Tareas asíncronas - Los escaneos de larga duración se convierten automáticamente en tareas en segundo plano, permitiendo consultar resultados mediante un ID de tarea
Autenticación por Token - Admite métodos de autenticación mediante parámetros de URL y Bearer Token
Salida estructurada - Los escaneos rápidos/completos devuelven datos estructurados en formato JSON
Mecanismo de funcionamiento
┌─────────────┐ HTTP/MCP ┌─────────────────┐
│ MCP Client │ ◄───────────────► │ Nmap MCP Server │
└─────────────┘ └────────┬────────┘
│
▼
┌─────────────────┐
│ Task Manager │
│ (SQLite) │
└────────┬────────┘
│
▼
┌─────────────────┐
│ Scanner │
│ (Nmap + XML) │
└─────────────────┘Procesamiento de solicitudes: El cliente MCP envía una solicitud de escaneo a través del protocolo Streamable HTTP
Programación de tareas: El servidor crea un registro de tarea y lo almacena en una base de datos SQLite
Espera síncrona: Intenta completar el escaneo dentro del tiempo de espera configurado (30 segundos por defecto)
Degradación asíncrona: Si no se completa a tiempo, la tarea pasa a ejecutarse en segundo plano y devuelve un ID de tarea para consultas posteriores
Análisis de resultados: Nmap genera una salida en formato XML, que el servidor analiza y devuelve como JSON estructurado
Instalación
Requisitos del entorno
Python 3.10+
Nmap (debe estar instalado en el sistema)
Pasos de instalación
# 克隆项目
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 等配置Configuración
Ejemplo del archivo de configuración 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"
}Parámetro | Descripción | Valor por defecto |
| Dirección de escucha |
|
| Puerto de escucha |
|
| Ruta del servicio MCP |
|
| Token de autenticación | Generado automáticamente |
| Tiempo de espera síncrono (segundos) |
|
| Máximo de tareas concurrentes |
|
| Ruta de la base de datos SQLite |
|
| Ruta del ejecutable de Nmap |
|
Despliegue con Docker
El proyecto incluye Dockerfile y docker-compose.yml, lo que permite ejecutarlo directamente en contenedores.
Método A: Construcción y ejecución desde el código fuente (docker compose)
1) Preparar los archivos de ejecución
# 初始化配置文件(请修改 token)
cp config.example.json config.json
# 预创建 SQLite 文件,避免被 Docker 识别成目录
touch nmap_tasks.db2) Construir e iniciar
docker compose up -d --build3) Ver registros
docker compose logs -f nmap-mcp-server4) Detener el servicio
docker compose downMétodo B: Ejecución directa mediante imagen de GHCR (docker pull + docker run)
Ideal para escenarios donde no se desea descargar el código fuente y solo se quiere ejecutar el contenedor.
Preparar el directorio local y el archivo de configuración:
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.dbDescargar la imagen (priorizando el repositorio de la organización):
docker pull ghcr.io/flagify-com/nmap-mcp-http:latest
# fallback:
# docker pull ghcr.io/wzfukui/nmap-mcp-http:latestIniciar el contenedor:
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:latestVer registros:
docker logs -f nmap-mcp-serverDetener y eliminar el contenedor:
docker rm -f nmap-mcp-serverSolución de problemas de montaje
Si los registros muestran el siguiente error:
IsADirectoryError: [Errno 21] Is a directory: '/app/config.json'Generalmente significa que el archivo config.json no existe en el host, y Docker creó automáticamente un directorio con el mismo nombre y lo montó en el contenedor.
Ejecute el siguiente comando para corregirlo (en el directorio de ejecución del host):
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.dbLuego, vuelva a ejecutar docker run ... para iniciar el contenedor.
GitHub Actions (Docker Publish)
El repositorio incluye .github/workflows/docker-publish.yml, con los siguientes disparadores:
push a
mainpush de etiquetas
v*(ej.v1.0.0)Disparo manual
workflow_dispatch
El flujo de trabajo realizará automáticamente:
Inicio de sesión en GHCR (
ghcr.io)Construcción de la imagen Docker
Envío de la imagen a
ghcr.io/<owner>/<repo>
Ejemplo de dirección de imagen:
# 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>Modo de uso
Iniciar el servicio
# 使用默认配置文件 (config.json)
python server.py
# 指定配置文件
python server.py -c /path/to/config.json
# 生成配置模板
python server.py --initConfiguración del cliente MCP
Tras iniciar el servicio, se mostrará la configuración del cliente MCP, que admite dos métodos de autenticación:
Método 1: Token en URL
{
"mcpServers": {
"nmap-scanner": {
"name": "Nmap Scanner",
"type": "streamableHttp",
"description": "Nmap 端口扫描服务",
"isActive": true,
"baseUrl": "http://127.0.0.1:3004/mcp?token=your_token"
}
}
}Método 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"
}
}
}
}Verificación de pruebas
El proyecto incluye un programa cliente de prueba para verificar rápidamente si el servidor MCP funciona correctamente.
# 激活虚拟环境
source venv/bin/activate
# 运行测试(需要先启动服务)
python test_client.py <your_token>
# 示例
python test_client.py your_secret_token_hereLas pruebas incluyen:
Método de autenticación por Token en URL
Método de autenticación por Bearer Token en cabecera HTTP
Solicitud sin Token (verificación de rechazo)
Solicitud con Token incorrecto (verificación de rechazo)
El programa de prueba llamará automáticamente a la herramienta de escaneo rápido y consultará el estado de la tarea para asegurar que todas las funciones operen correctamente.
Herramientas disponibles
Lista de herramientas proporcionadas por el Servidor MCP de Nmap:

quick_scan
Escaneo rápido de los puertos comunes (aprox. 100) del host objetivo.
Parámetros:
target(obligatorio): IP, dominio o formato CIDR del objetivotimeout(opcional): Tiempo de espera síncrono, de 5 a 300 segundos
Ejemplo:
{"target": "192.168.1.1"}
{"target": "example.com", "timeout": 60}full_scan
Escaneo completo de todos los puertos del host objetivo (1-65535), incluyendo detección de versiones de servicio.
Parámetros:
target(obligatorio): IP, dominio o formato CIDR del objetivotimeout(opcional): Tiempo de espera síncrono, de 5 a 600 segundos
Ejemplo:
{"target": "10.0.0.1", "timeout": 300}custom_scan
Ejecuta un comando Nmap personalizado.
Parámetros:
command(obligatorio): Parámetros del comando Nmap (sin incluir el comandonmapen sí)timeout(opcional): Tiempo de espera síncrono, de 5 a 600 segundos
Ejemplo:
{"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
Consulta el estado de una tarea de escaneo.
Parámetros:
task_id(obligatorio): ID de la tarea (formato UUID)
Estados de retorno:
pending: Esperando ejecuciónrunning: Escaneandocompleted: Escaneo completadofailed: Escaneo fallido
get_task_result
Obtiene el resultado completo de una tarea de escaneo.
Parámetros:
task_id(obligatorio): ID de la tarea (formato UUID)
Ejemplo de resultados
Completado de forma síncrona
{
"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"
}
]
}
]
}
}Tarea asíncrona
{
"status": "pending",
"task_id": "550e8400-e29b-41d4-a716-446655440000",
"message": "扫描任务已提交,请使用 get_task_status 或 get_task_result 查询结果"
}Notas importantes
Seguridad
Protección de Token: Asegúrese de cambiar el Token por defecto para evitar accesos no autorizados
Aislamiento de red: Se recomienda ejecutar en entornos de red confiables o utilizar cortafuegos
Control de permisos: Este servicio no limita los objetivos de escaneo; asegúrese de usarlo solo para pruebas de seguridad autorizadas
Inyección de comandos: La herramienta
custom_scanacepta parámetros Nmap arbitrarios; evalúe los riesgos
Rendimiento
Límite de concurrencia: Por defecto, admite un máximo de 10 tareas concurrentes; las solicitudes adicionales serán rechazadas
Configuración de tiempo de espera: Los escaneos completos consumen mucho tiempo; se recomienda usar el modo de tareas asíncronas
Consumo de recursos: Los escaneos a gran escala (ej. segmento /16) consumen muchos recursos del sistema
Recomendaciones de despliegue
Despliegue en contenedores: Se recomienda usar Docker para facilitar el aislamiento y la gestión
Monitoreo de registros: Se recomienda configurar la recolección de registros para monitorear las actividades de escaneo
Limpieza periódica: La base de datos SQLite crecerá continuamente; se recomienda limpiar las tareas antiguas periódicamente
Estructura del proyecto
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.pngContribuciones
¡Las propuestas de Issues y Pull Requests son bienvenidas! Este proyecto es totalmente de código abierto y esperamos la participación y contribución de la comunidad.
Licencia
Este proyecto se publica bajo la Licencia MIT.
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