
Servidor MCP para modelado de amenazas estructurado basado en STRIDE con validación automática de código, análisis de contexto empresarial y generación completa de informes en formatos Markdown y JSON.
Un servidor de Protocolo de Contexto de Modelo (MCP) para modelado de amenazas integral con validación automática de código.
Este servidor proporciona herramientas para modelado de amenazas, incluyendo análisis de contexto de negocio, análisis de arquitectura, análisis de actores de amenaza, análisis de límites de confianza, análisis de flujo de activos, validación de seguridad de código y generación de informes completos.
Este Servidor MCP llama al LLM del agente existente en lugar de realizar una llamada API externa o de red a un servicio diferente. Depende del LLM del cliente existente, que podría ser Amazon-Q, Kiro o Cline.
Este Servidor MCP de Modelado de Amenazas tiene tres funcionalidades principales:
También tiene herramientas para generar un informe final en formatos Markdown y JSON exportables.
.threatmodel y puede evolucionar su modelo de amenazas a medida que su código, diseño y arquitectura evolucionan.Nota: Antes de usar estos comandos, primero debe completar el proceso de Instalación para configurar el servidor MCP.
"Threat model this project using the threat modeling MCP Server"
Ser específico en el prompt para usar el servidor MCP de modelado de amenazas asegurará que el cliente (Cline/Kiro/etc) siga las fases y metodología exactas, en lugar de tomar atajos e introducir alucinaciones en los resultados.
### Modela las amenazas de un subproyecto o reduce el alcance a una subcarpeta```
"Threat model this subfolder using the threat modeling MCP Server"
Ejecutarlo en una subcarpeta limitará el alcance del modelo de amenazas y el código a esa subcarpeta y guardará los resultados como un directorio .threatmodel dentro de la subcarpeta.
"Save the threat model report"
### Validar la completitud del proceso de modelado de amenazas```
"Please complete all the phases in the threat model plan and then generate the final report."
"Threat model this project using the threat model MCP server and consider this architecture_image.png attached for this review"
### Intentar remediar las amenazas```
"Can you see if you can implement mitigation controls in the code based on the threats reported in the threat model"
"Can you updated the threat model based on the code fixes which mitigated the reported threats"
### Más ejemplos```bash
# Set up context
"Set business context for an e-commerce payment system"
# Add architecture
"Add a web server component using AWS EC2"
"Add a database component using AWS RDS"
# Identify threats
"Add a threat where an attacker with network access performs SQL injection"
# Add mitigations
"Add a mitigation for input validation"
# Export results
"Export the threat model to my_model.json"
Antes de instalar el Servidor MCP de Modelado de Amenazas, asegúrese de cumplir con los siguientes requisitos:
uvx desde Astral o el README de GitHub
uvx --versionUna vez que tenga uvx instalado y verificado que funciona, agregue la siguiente configuración a su archivo de configuración mcp.json. Dependiendo del tipo de cliente que esté utilizando (kiro/cline/amazon-q), la ubicación de este mcp.json será diferente. Una vez que agregue la configuración y reinicie su IDE, el Servidor MCP de Modelado de Amenazas se instalará automáticamente directamente desde este repositorio de GitHub usando uvx.
Nota: Las herramientas utilizadas por este servidor mcp para el modelado de amenazas ya están agregadas a
autoApprovepara facilitar la experiencia del usuario, lo que permite una operación sin problemas sin solicitudes de aprobación manual para cada llamada de herramienta. Todas las herramientas son internas al servidor y no realizan llamadas API externas. Si desea revisar cada una de las herramientas y aprobarlas por invocación, debe reemplazar el array autoApprove con esto:"autoApprove": []
Agregue lo siguiente a la configuración de su cliente MCP:
Para Amazon Q (~/.aws/amazonq/mcp.json):```json
{
"mcpServers": {
"threat-modeling-mcp-server": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/awslabs/threat-modeling-mcp-server.git",
"threat-modeling-mcp-server"
],
"env": {
"FASTMCP_LOG_LEVEL": "ERROR"
},
"disabled": false,
"autoApprove": ["add_asset","add_assumption","add_component","add_component_to_zone","add_conn_to_crossing","add_connection","add_crossing_point","add_data_store","add_flow","add_mitigation","add_threat","add_threat_actor","add_trust_boundary","add_trust_zone","advance_phase","analyze_threat_actors","clear_architecture","clear_asset_flows","clear_business_context","clear_threat_actors","clear_trust_boundaries","delete_asset","delete_assumption","delete_component","delete_connection","delete_crossing_point","delete_data_store","delete_flow","delete_mitigation","delete_threat","delete_threat_actor","delete_trust_boundary","delete_trust_zone","execute_code_validation_step","execute_final_export_step","export_comprehensive_threat_model","export_threat_model_with_remediation_status","follow_threat_modeling_plan","generate_remediation_report","get_architecture_analysis_plan","get_asset","get_asset_flow_analysis_plan","get_assumption","get_business_context","get_business_context_analysis_plan","get_business_context_features","get_crossing_point","get_current_phase_status","get_data_model_types","get_flow","get_mitigation","get_phase_1_guidance","get_phase_2_guidance","get_phase_3_guidance","get_phase_4_guidance","get_phase_5_guidance","get_phase_6_guidance","get_phase_7_5_guidance","get_phase_7_guidance","get_phase_8_guidance","get_phase_9_guidance","get_threat","get_threat_actor","get_threat_model_progress","get_threat_modeling_plan","get_trust_boundary","get_trust_boundary_analysis_plan","get_trust_boundary_detection_plan","get_trust_zone","link_mitigation_to_threat","list_assets","list_assumptions","list_components","list_connections","list_crossing_points","list_data_models","list_data_stores","list_flows","list_mitigations","list_threat_actors","list_threats","list_trust_boundaries","list_trust_zones","remove_component_from_zone","remove_conn_from_crossing","reset_asset_flows","reset_threat_actors","set_business_context","set_threat_actor_priority","set_threat_actor_relevance","unlink_mitigation_from_threat","update_asset","update_assumption","update_component","update_connection","update_crossing_point","update_data_store","update_flow","update_mitigation","update_threat","update_threat_actor","update_trust_boundary","update_trust_zone","validate_business_context_completeness","validate_security_controls","validate_threat_model_against_code","validate_threat_remediation"]
}
}
}
**Para VSCode Cline**:```json
{
"mcpServers": {
"threat-modeling-mcp-server": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/awslabs/threat-modeling-mcp-server.git",
"threat-modeling-mcp-server"
],
"env": {
"FASTMCP_LOG_LEVEL": "ERROR"
},
"disabled": false,
"autoApprove": ["add_asset","add_assumption","add_component","add_component_to_zone","add_conn_to_crossing","add_connection","add_crossing_point","add_data_store","add_flow","add_mitigation","add_threat","add_threat_actor","add_trust_boundary","add_trust_zone","advance_phase","analyze_threat_actors","clear_architecture","clear_asset_flows","clear_business_context","clear_threat_actors","clear_trust_boundaries","delete_asset","delete_assumption","delete_component","delete_connection","delete_crossing_point","delete_data_store","delete_flow","delete_mitigation","delete_threat","delete_threat_actor","delete_trust_boundary","delete_trust_zone","execute_code_validation_step","execute_final_export_step","export_comprehensive_threat_model","export_threat_model_with_remediation_status","follow_threat_modeling_plan","generate_remediation_report","get_architecture_analysis_plan","get_asset","get_asset_flow_analysis_plan","get_assumption","get_business_context","get_business_context_analysis_plan","get_business_context_features","get_crossing_point","get_current_phase_status","get_data_model_types","get_flow","get_mitigation","get_phase_1_guidance","get_phase_2_guidance","get_phase_3_guidance","get_phase_4_guidance","get_phase_5_guidance","get_phase_6_guidance","get_phase_7_5_guidance","get_phase_7_guidance","get_phase_8_guidance","get_phase_9_guidance","get_threat","get_threat_actor","get_threat_model_progress","get_threat_modeling_plan","get_trust_boundary","get_trust_boundary_analysis_plan","get_trust_boundary_detection_plan","get_trust_zone","link_mitigation_to_threat","list_assets","list_assumptions","list_components","list_connections","list_crossing_points","list_data_models","list_data_stores","list_flows","list_mitigations","list_threat_actors","list_threats","list_trust_boundaries","list_trust_zones","remove_component_from_zone","remove_conn_from_crossing","reset_asset_flows","reset_threat_actors","set_business_context","set_threat_actor_priority","set_threat_actor_relevance","unlink_mitigation_from_threat","update_asset","update_assumption","update_component","update_connection","update_crossing_point","update_data_store","update_flow","update_mitigation","update_threat","update_threat_actor","update_trust_boundary","update_trust_zone","validate_business_context_completeness","validate_security_controls","validate_threat_model_against_code","validate_threat_remediation"],
"timeout": 60,
"type": "stdio"
}
}
}
Para Kiro (~/.kiro/settings/mcp.json):```json
{
"mcpServers": {
"threat-modeling-mcp-server": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/awslabs/threat-modeling-mcp-server.git",
"threat-modeling-mcp-server"
],
"env": {
"FASTMCP_LOG_LEVEL": "ERROR"
},
"disabled": false,
"autoApprove": ["add_asset","add_assumption","add_component","add_component_to_zone","add_conn_to_crossing","add_connection","add_crossing_point","add_data_store","add_flow","add_mitigation","add_threat","add_threat_actor","add_trust_boundary","add_trust_zone","advance_phase","analyze_threat_actors","clear_architecture","clear_asset_flows","clear_business_context","clear_threat_actors","clear_trust_boundaries","delete_asset","delete_assumption","delete_component","delete_connection","delete_crossing_point","delete_data_store","delete_flow","delete_mitigation","delete_threat","delete_threat_actor","delete_trust_boundary","delete_trust_zone","execute_code_validation_step","execute_final_export_step","export_comprehensive_threat_model","export_threat_model_with_remediation_status","follow_threat_modeling_plan","generate_remediation_report","get_architecture_analysis_plan","get_asset","get_asset_flow_analysis_plan","get_assumption","get_business_context","get_business_context_analysis_plan","get_business_context_features","get_crossing_point","get_current_phase_status","get_data_model_types","get_flow","get_mitigation","get_phase_1_guidance","get_phase_2_guidance","get_phase_3_guidance","get_phase_4_guidance","get_phase_5_guidance","get_phase_6_guidance","get_phase_7_5_guidance","get_phase_7_guidance","get_phase_8_guidance","get_phase_9_guidance","get_threat","get_threat_actor","get_threat_model_progress","get_threat_modeling_plan","get_trust_boundary","get_trust_boundary_analysis_plan","get_trust_boundary_detection_plan","get_trust_zone","link_mitigation_to_threat","list_assets","list_assumptions","list_components","list_connections","list_crossing_points","list_data_models","list_data_stores","list_flows","list_mitigations","list_threat_actors","list_threats","list_trust_boundaries","list_trust_zones","remove_component_from_zone","remove_conn_from_crossing","reset_asset_flows","reset_threat_actors","set_business_context","set_threat_actor_priority","set_threat_actor_relevance","unlink_mitigation_from_threat","update_asset","update_assumption","update_component","update_connection","update_crossing_point","update_data_store","update_flow","update_mitigation","update_threat","update_threat_actor","update_trust_boundary","update_trust_zone","validate_business_context_completeness","validate_security_controls","validate_threat_model_against_code","validate_threat_remediation"]
}
}
}
### Ejecutando con Kiro CLI
Para ejecutar el servidor MCP a través de `kiro-cli` con todas las herramientas autoaprobadas:```bash
kiro-cli chat --trust-tools="@threat-modeling-mcp-server/*"
Esto confía en todas las herramientas del servidor MCP threat-modeling-mcp-server, por lo que no se te pedirá que apruebes cada llamada a herramienta individualmente.
Este repositorio incluye un agente CLI Kiro preconfigurado que proporciona una experiencia de modelado de amenazas guiada de 9 fases. La configuración del agente se encuentra en .kiro/agents/threat-modeler.json.
Instalación global (disponible desde cualquier directorio):```bash ./install-kiro-agent.sh
Para desinstalar: `./install-kiro-agent.sh --remove`
**Instalación local** (específico del proyecto):```bash
cp -r /path/to/threat-modeling-mcp-server/.kiro /path/to/your-project/.kiro
Uso:```bash
kiro-cli chat --agent threat-modeler --no-interactive "Threat model this project"
kiro-cli chat --agent threat-modeler
**Lo que incluye el agente**:
- **Prompt del sistema** (`.kiro/prompts/threat-modeler.md`): Instrucciones detalladas para la metodología STRIDE de 9 fases
- **Habilidades** (`.kiro/skills/`): Materiales de referencia por fase para cada una de las 9 fases del modelado de amenazas
- **Herramientas MCP aprobadas automáticamente**: Todas las herramientas de modelado de amenazas se ejecutan sin solicitudes de aprobación manual
## Gestión de archivos de salida
Todos los archivos de salida generados por el servidor de modelado de amenazas se guardan automáticamente en un directorio `.threatmodel` en la raíz de tu proyecto. Esto incluye:
- Modelos de amenazas exportados (formato JSON)
- Informes de validación
- Resultados de análisis
El directorio `.threatmodel` se crea automáticamente cuando es necesario.
## Referencia rápida
### Herramientas esenciales para empezar
| Herramienta | Propósito | Ejemplo |
|-------------|-----------|---------|
| `get_threat_modeling_plan()` | Obtener un plan completo | Comienza aquí para una visión general |
| **`get_phase_1_guidance()`** | **Obtener guía enfocada de la Fase 1** | **Punto de inicio recomendado** |
| `get_current_phase_status()` | Verificar el progreso | Rastrear el estado de finalización |
| `set_business_context(desc)` | Definir el contexto del sistema | "Sistema de pago de comercio electrónico" |
| `add_component(name, type)` | Añadir componente de arquitectura | "API Gateway", "Red" |
| `add_threat(source, prereq, action, impact)` | Identificar amenaza | "Atacante", "acceso a la red", "inyección SQL", "violación de datos" |
| `add_mitigation(content)` | Añadir control de seguridad | "Validación de entrada y consultas parametrizadas" |
| `link_mitigation_to_threat(m_id, t_id)` | Vincular controles a amenazas | Conectar mitigaciones a amenazas específicas |
| **`execute_code_validation_step()`** | **Ejecutar automáticamente la Fase 7.5** | **Asegura la finalización de la validación de código** |
| **`execute_final_export_step()`** | **Ejecutar automáticamente la Fase 9** | **Genera todos los archivos requeridos** |
### 🚀 Guía paso a paso
**Enfoque recomendado**: Usa herramientas de guía específicas de cada fase en lugar del plan completo:
| Fase | Herramienta | Propósito |
|------|-------------|-----------|
| 1 | `get_phase_1_guidance()` | Análisis del contexto empresarial |
| 2 | `get_phase_2_guidance()` | Análisis de la arquitectura |
| 3 | `get_phase_3_guidance()` | Análisis de actores de amenaza |
| 4 | `get_phase_4_guidance()` | Análisis de límites de confianza |
| 5 | `get_phase_5_guidance()` | Análisis de flujo de activos |
| 6 | `get_phase_6_guidance()` | Identificación de amenazas |
| 7 | `get_phase_7_guidance()` | Planificación de mitigaciones |
| 7.5 | `execute_code_validation_step()` | Validación de código (Automática) |
| 8 | `get_phase_8_guidance()` | Análisis de riesgo residual |
| 9 | `execute_final_export_step()` | Exportación final (Automática) |
## Resumen de herramientas
El Servidor MCP de Modelado de Amenazas proporciona **más de 100 herramientas** organizadas en las siguientes categorías:
| Categoría | Herramientas | Descripción |
|-----------|--------------|-------------|
| **Plan de modelado de amenazas** | 1 herramienta | Generar planes completos de modelado de amenazas |
| **Gestión de suposiciones** | 5 herramientas | Añadir, listar, obtener, actualizar y eliminar suposiciones |
| **Análisis del contexto empresarial** | 13 herramientas | Analizar el contexto empresarial y los requisitos |
| **Análisis de la arquitectura** | 13 herramientas | Documentar y analizar la arquitectura del sistema |
| **Análisis de actores de amenaza** | 10 herramientas | Identificar y analizar posibles actores de amenaza |
| **Análisis de límites de confianza** | 18 herramientas | Analizar zonas de confianza, límites y puntos de cruce |
| **Detección de límites de confianza** | 1 herramienta | Detección de límites de confianza impulsada por IA |
| **Análisis de flujo de activos** | 12 herramientas | Rastrear y analizar los flujos de activos a través del sistema |
| **Generación de amenazas** | 4 herramientas | Añadir, listar, obtener y eliminar amenazas |
| **Gestión de mitigaciones** | 7 herramientas | Gestionar mitigaciones y vincularlas a amenazas |
| **Guía de modelado de amenazas** | 3 herramientas | Orientación paso a paso a través del proceso |
| **Tipos de modelos de datos** | 2 herramientas | Explorar los tipos de modelos de datos disponibles |
| **Validación de seguridad de código** | 3 herramientas | Validar controles de seguridad en el código |
| **Validación de modelos de amenazas** | 2 herramientas | Validar modelos de amenazas contra el código |
| **Orquestador de pasos** | 12 herramientas | Orientación específica por fase y ejecución de pasos |
## Metodología de modelado de amenazas
### Marco STRIDE
El servidor utiliza la metodología STRIDE para la identificación sistemática de amenazas:
| Categoría | Descripción | Ejemplos de amenazas |
|-----------|-------------|----------------------|
| **Spoofing** | Suplantar a alguien o algo | Omisión de autenticación, robo de identidad |
| **Tampering** | Modificar datos o código | Corrupción de datos, inyección de código |
| **Repudiation** | Afirmar no haber realizado una acción | Manipulación de registros, fallos de no repudio |
| **Information Disclosure** | Exponer información a usuarios no autorizados | Fugas de datos, violaciones de privacidad |
| **Denial of Service** | Denegar o degradar el servicio | Agotamiento de recursos, ataques de disponibilidad |
| **Elevation of Privilege** | Obtener capacidades sin autorización | Escalada de privilegios, acceso no autorizado |
### Proceso de modelado de amenazas
El proceso completo de modelado de amenazas incluye estas fases:
1. **Análisis del contexto empresarial**: Comprender el valor empresarial y la criticidad del sistema
2. **Análisis de la arquitectura**: Documentar la arquitectura técnica del sistema
3. **Análisis de actores de amenaza**: Identificar adversarios potenciales y sus capacidades
4. **Análisis de límites de confianza**: Identificar zonas de confianza y cruces de límites
5. **Análisis de flujo de activos**: Rastrear activos críticos a través del sistema
6. **Identificación de amenazas**: Identificar sistemáticamente amenazas potenciales usando STRIDE
7. **Planificación de mitigaciones**: Desarrollar estrategias para abordar las amenazas identificadas
8. **Validación de código**: Validar amenazas contra los controles de seguridad existentes
9. **Análisis de riesgo residual**: Evaluar los riesgos restantes después de las mitigaciones
Cada fase incluye objetivos, actividades y resultados específicos para guiar el proceso de modelado de amenazas.
### Niveles de severidad de amenazas
- **Crítico**: Se requiere acción inmediata, probable compromiso del sistema
- **Alto**: Riesgo significativo, debe abordarse rápidamente
- **Medio**: Riesgo moderado, abordar en el ciclo de desarrollo normal
- **Bajo**: Riesgo menor, abordar cuando sea conveniente
- **Informativo**: Hallazgo informativo, no requiere acción inmediata
### Tipos de mitigación
- **Preventivas**: Controles que evitan que ocurran amenazas
- **Detectivas**: Controles que detectan cuándo ocurren amenazas
- **Correctivas**: Controles que responden y corrigen amenazas
- **Compensatorias**: Controles alternativos cuando los controles principales no son factibles
## Suposiciones en el modelado de amenazas
Las suposiciones son afirmaciones que aceptamos como verdaderas sin requerir validación adicional. Ayudan a delimitar el modelo de amenazas al establecer límites y restricciones. Ejemplos comunes incluyen:
- "Todas las conexiones de red en la VPC están cifradas en tránsito"
- "Las claves de AWS KMS no pueden ser descubiertas por fuerza bruta"
- "Los actores de amenaza a nivel estatal no son una preocupación para este sistema"
Al documentar las suposiciones, podemos:
- Evitar generar amenazas sin sentido
- Evitar recomendar mitigaciones innecesarias
- Centrarnos en las preocupaciones de seguridad relevantes
- Documentar claramente el alcance y las limitaciones del modelo de amenazas
## Desarrollo
### Contribuir
Para contribuir a este proyecto:
1. Clona el repositorio
2. Instala las dependencias de desarrollo con `uv pip install -e .`
3. Ejecuta el servidor localmente con `python run_server.py`
4. Ejecuta las pruebas con `python -m pytest`
## Seguridad
Consulta [CONTRIBUTING](https://github.com/awslabs/threat-modeling-mcp-server/blob/HEAD/CONTRIBUTING.md#security-issue-notifications) para más información.
## Licencia
Este proyecto está licenciado bajo la Licencia Apache-2.0. Consulta el archivo [LICENSE](https://github.com/awslabs/threat-modeling-mcp-server/blob/HEAD/LICENSE) para más detalles.