Skip to main content
Glama

mythic-mcp

Expone el framework Mythic C2 como un servidor MCP para que los LLM (Claude, etc.) puedan manejar agentes, enviar tareas y consultar datos de la plataforma de forma conversacional.

Características

  • Gestión de agentes — lista de callbacks activos con detalle completo, inspección de agentes individuales, eliminación de agentes, cambio de temporizadores de sueño

  • Ejecución de tareas — comandos de shell, lectura/descarga/subida de archivos, mimikatz, make_token y un despachador genérico para cualquier comando de Mythic

  • Datos de la plataforma — almacén de credenciales, registro de artefactos, registro de eventos, explorador de archivos, lista de payloads, estado de perfiles C2

  • Respuestas estructuradas — cada herramienta devuelve {"status":"ok","data":...} o {"status":"error","message":...} para un análisis fiable por parte del LLM

  • Plantillas de aviso integradas — plantillas de aviso start_pentest y start_recon

Related MCP server: caldera-mcp

Requisitos

  • Python 3.10+

  • Gestor de paquetes uv

  • Un servidor Mythic en ejecución (v3.x+)

Instalación

git clone <this-repo>
cd mythic-mcp
uv sync

Ejecución

Argumentos posicionales

uv run main.py <username> <password> [host] [port]
uv run main.py mythic_admin mythic_admin_password localhost 7443

Variables de entorno

export MYTHIC_USERNAME=mythic_admin
export MYTHIC_PASSWORD=mythic_admin_password
export MYTHIC_HOST=localhost
export MYTHIC_PORT=7443
uv run main.py

Sin TLS

uv run main.py mythic_admin password localhost 7443 --no-ssl

Si el servidor se inicia silenciosamente sin salida, está funcionando — espera en stdio mensajes MCP.

Conexión a Claude Desktop

Encuentra el archivo de configuración:

SO

Ruta

Linux

~/.config/Claude/claude_desktop_config.json

macOS

~/Library/Application Support/Claude/claude_desktop_config.json

Obtén primero la ruta de uv:

which uv

Añade una entrada bajo mcpServers:

{
  "mcpServers": {
    "mythic_mcp": {
      "command": "/home/user/.local/bin/uv",
      "args": [
        "--directory",
        "/path/to/mythic-mcp",
        "run",
        "main.py"
      ],
      "env": {
        "MYTHIC_USERNAME": "mythic_admin",
        "MYTHIC_PASSWORD": "mythic_admin_password",
        "MYTHIC_HOST": "localhost",
        "MYTHIC_PORT": "7443"
      }
    }
  }
}

Cierra y reinicia completamente Claude Desktop. El icono de herramientas en la interfaz de chat listará todas las herramientas registradas una vez que el servidor se conecte.

Herramientas

Gestión de agente / Callback

Herramienta

Descripción

get_all_agents()

Lista todos los callbacks activos con detalle completo (SO, arquitectura, PID, IP, sueño, proceso, tipo de payload, etc.)

get_agent_details(agent_id)

Detalle completo para un solo agente por ID de visualización

kill_agent(agent_id)

Marca un agente como inactivo en Mythic

set_sleep(agent_id, interval, jitter)

Cambia el intervalo de sueño (segundos) y la fluctuación (%)

Ejecución de tareas

Herramienta

Descripción

run_shell_command(agent_id, command_line)

Ejecuta un comando de shell mediante el intérprete por defecto del agente

read_file(agent_id, file_path)

Lee un archivo del objetivo (usa cat)

download_file(agent_id, file_path)

Descarga un archivo y lo devuelve en base64

upload_file(agent_id, file_name, remote_path, content_b64)

Sube un archivo codificado en base64 al objetivo

run_as_user(agent_id, username, password)

make_token — autentica para llamadas de red como otro usuario

execute_mimikatz(agent_id, mimikatz_arguments)

Ejecuta mimikatz (ej. sekurlsa::logonpasswords)

execute_command(agent_id, command_name, parameters)

Despachador genérico — cualquier comando de Mythic por nombre

Datos de la plataforma

Herramienta

Descripción

get_credentials()

Todas las credenciales en el almacén de credenciales de Mythic

get_artifacts(limit)

Registro de artefactos (archivos, claves de registro, procesos creados)

get_event_log(limit)

Registro de eventos de la operación

browse_files(agent_id, path)

Entradas del explorador de archivos para un directorio en un objetivo

list_payloads()

Todos los payloads no eliminados con estado de compilación y perfil C2

list_c2_profiles()

Todos los perfiles C2 con estado de ejecución

Avisos

Aviso

Descripción

start_pentest(threat_actor, objective)

Prepara a Claude para emular un actor de amenaza específico hacia un objetivo

start_recon()

Prepara a Claude para realizar reconocimiento inicial en todos los agentes activos

Ejemplo de uso en Claude

Use the start_recon prompt.
List all active agents, then run whoami on agent 1.
Download /etc/passwd from agent 2 and show me its contents.
Run mimikatz sekurlsa::logonpasswords on agent 3.
Use execute_command to run 'ps' on agent 1 with parameters {"host": "."}.

Arquitectura

Claude Desktop
     │  MCP stdio
     ▼
main.py  (FastMCP tools + prompts)
     │
     ▼
lib/mythic_api.py  (MythicAPI class)
     ├─ mythic Python library  →  Mythic GraphQL/REST API
     └─ httpx (raw GraphQL)   →  Mythic GraphQL endpoint

Todas las llamadas de tareas usan asyncio.wait_for con un tiempo de espera de 60 segundos. Las solicitudes GraphQL omiten la verificación TLS (verify=False) para manejar el certificado autofirmado de Mythic.

Referencia de variables de entorno

Variable

Valor por defecto

Descripción

MYTHIC_USERNAME

—

Nombre de usuario del operador de Mythic (obligatorio)

MYTHIC_PASSWORD

—

Contraseña del operador de Mythic (obligatorio)

MYTHIC_HOST

localhost

Hostname o IP del servidor Mythic

MYTHIC_PORT

7443

Puerto del servidor Mythic

Related MCP Connectors

Related MCP Servers