YaraFlux

Un servidor MCP para escaneo YARA, que permite a los LLMs analizar archivos usando reglas YARA.

Documentación

Servidor MCP YaraFlux

GitHub release (latest by date) CI codecov Codacy Badge License: MIT Python Version FastAPI MCP Code style: black

Un servidor de Protocolo de Contexto de Modelo (MCP) para escaneo YARA, que proporciona a los LLMs capacidades para analizar archivos con reglas YARA.

📋 Descripción general

El servidor MCP YaraFlux permite a los asistentes de IA realizar análisis de amenazas basados en reglas YARA a través de la interfaz estandarizada del Protocolo de Contexto de Modelo. El servidor integra el escaneo YARA con asistentes de IA modernos, admitiendo gestión integral de reglas, escaneo seguro y análisis detallado de resultados mediante una arquitectura modular.

🧩 Descripción general de la arquitectura

+------------------------------------------+
|              AI Assistant                |
+--------------------+---------------------+
                    |
                    | Model Context Protocol
                    |
+--------------------v---------------------+
|              YaraFlux MCP Server         |
|                                          |
|  +----------------+    +---------------+ |
|  | MCP Server     |    | Tool Registry | |
|  +-------+--------+    +-------+-------+ |
|          |                     |         |
|  +-------v--------+    +-------v-------+ |
|  | YARA Service   |    | Storage Layer | |
|  +----------------+    +---------------+ |
|                                          |
+------------------------------------------+
          |                   |
 +-----------------+  +---------------+
 | YARA Engine     |  | Storage       |
 | - Rule Compiling|  | - Local FS    |
 | - File Scanning |  | - MinIO/S3    |
 +-----------------+  +---------------+

YaraFlux sigue una arquitectura modular que separa las responsabilidades entre:

  • Capa de integración MCP: Gestiona la comunicación con los asistentes de IA
  • Capa de implementación de herramientas: Implementa la funcionalidad de escaneo y gestión YARA
  • Capa de abstracción de almacenamiento: Proporciona opciones de almacenamiento flexibles
  • Integración del motor YARA: Aprovecha YARA para el escaneo y la gestión de reglas

Para diagramas de arquitectura detallados, consulte la Documentación de arquitectura.

✨ Características

  • 🔄 Arquitectura modular

    • Separación clara de la integración MCP, la implementación de herramientas y el almacenamiento
    • Análisis de parámetros y manejo de errores estandarizados
    • Backend de almacenamiento flexible con opciones locales y S3/MinIO
  • 🤖 Integración MCP

    • 19 herramientas MCP integradas para una funcionalidad integral
    • Optimizado para la integración con Claude Desktop
    • Análisis directo de archivos desde las conversaciones
    • Compatible con la última especificación del protocolo MCP
  • 🔍 Escaneo YARA

    • Escaneo de contenido de URL y archivos
    • Información detallada de coincidencias con contexto
    • Almacenamiento y recuperación de resultados de escaneo
    • Motor de escaneo optimizado para el rendimiento
  • 📝 Gestión de reglas

    • Crear, leer, actualizar y eliminar reglas YARA
    • Validación de reglas con informes de error detallados
    • Importación de reglas desde el repositorio ThreatFlux
    • Categorización por fuente (personalizada vs. comunitaria)
  • 📊 Análisis de archivos

    • Vista hexadecimal para análisis binario
    • Extracción de cadenas con parámetros configurables
    • Metadatos de archivos e información de hash
    • Carga y almacenamiento seguro de archivos
  • 🔐 Características de seguridad

    • Autenticación JWT para acceso a la API
    • Ejecución de contenedores sin usuario root
    • Aislamiento seguro del almacenamiento
    • Controles de acceso configurables

🚀 Inicio rápido

Uso de la imagen Docker

# Pull the latest Docker image
docker pull threatflux/yaraflux-mcp-server:latest
# Run the container
docker run -p 8000:8000 \
  -e JWT_SECRET_KEY=your-secret-key \
  -e ADMIN_PASSWORD=your-admin-password \
  -e DEBUG=true \
  threatflux/yaraflux-mcp-server:latest
### Using Docker building from source

```bash
# Clone the repository
git clone https://github.com/ThreatFlux/YaraFlux.git
cd YaraFlux/

# Build the Docker image
docker build -t yaraflux-mcp-server:latest .

# Run the container
docker run -p 8000:8000 \
  -e JWT_SECRET_KEY=your-secret-key \
  -e ADMIN_PASSWORD=your-admin-password \
  -e DEBUG=true \
  yaraflux-mcp-server:latest

Instalación desde el código fuente

# Clone the repository
git clone https://github.com/ThreatFlux/YaraFlux.git
cd YaraFlux/

# Install dependencies (requires Python 3.13+)
make install

# Run the server
make run

Bloqueo de dependencias

Las imágenes Docker y el escaneo de vulnerabilidades de CI se instalan desde requirements-lock.txt y requirements-dev-lock.txt — bloqueos con hash compilados desde pyproject.toml (restringidos por requirements.txt). pyproject.toml es la única fuente de verdad para las dependencias: las de tiempo de ejecución bajo dependencies, las de desarrollo bajo el extra dev (pip install -e ".[dev]"). Después de cambiar las dependencias allí o en requirements.txt, regenere los bloqueos:

make lock-requirements

Confirme los archivos de bloqueo actualizados con su cambio; CI falla si se desvían de pyproject.toml.

🧩 Integración con Claude Desktop

YaraFlux está diseñado para una integración perfecta con Claude Desktop a través del Protocolo de Contexto de Modelo.

  1. Construya la imagen Docker:
docker build -t yaraflux-mcp-server:latest .
  1. Agregue a la configuración de Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json):
{
  "mcpServers": {
    "yaraflux-mcp-server": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "--env",
        "JWT_SECRET_KEY=your-secret-key",
        "--env",
        "ADMIN_PASSWORD=your-admin-password",
        "--env",
        "DEBUG=true",
        "--env",
        "PYTHONUNBUFFERED=1",
        "threatflux/yaraflux-mcp-server:latest"
      ],
      "disabled": false,
      "autoApprove": [
        "scan_url",
        "scan_data",
        "list_yara_rules",
        "get_yara_rule"
      ]
    }
  }
}
  1. Reinicie Claude Desktop para activar el servidor.

🛠️ Herramientas MCP disponibles

YaraFlux expone 19 herramientas MCP integradas:

Herramientas de gestión de reglas

  • list_yara_rules: Lista las reglas YARA disponibles con opciones de filtrado
  • get_yara_rule: Obtiene el contenido y los metadatos de una regla YARA específica
  • validate_yara_rule: Valida la sintaxis de reglas YARA con informes de error detallados
  • add_yara_rule: Crea una nueva regla YARA
  • update_yara_rule: Actualiza una regla YARA existente
  • delete_yara_rule: Elimina una regla YARA
  • import_threatflux_rules: Importa reglas desde el repositorio de GitHub ThreatFlux

Herramientas de escaneo

  • scan_url: Escanea contenido desde una URL con reglas YARA especificadas
  • scan_data: Escanea datos proporcionados (codificados en base64) con reglas especificadas
  • get_scan_result: Recupera resultados detallados de un escaneo anterior

Herramientas de gestión de archivos

  • upload_file: Carga un archivo para análisis o escaneo
  • get_file_info: Obtiene metadatos sobre un archivo cargado
  • list_files: Lista archivos cargados con paginación y ordenamiento
  • delete_file: Elimina un archivo cargado
  • extract_strings: Extrae cadenas ASCII/Unicode de un archivo
  • get_hex_view: Obtiene la vista hexadecimal del contenido del archivo
  • download_file: Descarga un archivo cargado

Herramientas de gestión de almacenamiento

  • get_storage_info: Obtiene estadísticas de uso del almacenamiento
  • clean_storage: Elimina archivos antiguos para liberar espacio de almacenamiento

📚 Documentación

La documentación completa está disponible en el directorio docs/:

🗂️ Estructura del proyecto

yaraflux_mcp_server/
├── src/
│   └── yaraflux_mcp_server/
│       ├── app.py                 # FastAPI application
│       ├── auth.py                # JWT authentication and user management
│       ├── config.py              # Configuration settings loader
│       ├── models.py              # Pydantic models for requests/responses
│       ├── mcp_server.py          # MCP server implementation
│       ├── utils/                 # Utility functions package
│       │   ├── __init__.py        # Package initialization
│       │   ├── error_handling.py  # Standardized error handling
│       │   ├── param_parsing.py   # Parameter parsing utilities
│       │   └── wrapper_generator.py # Tool wrapper generation
│       ├── mcp_tools/             # Modular MCP tools package
│       │   ├── __init__.py        # Package initialization
│       │   ├── base.py            # Base tool registration utilities
│       │   ├── file_tools.py      # File management tools
│       │   ├── rule_tools.py      # YARA rule management tools
│       │   ├── scan_tools.py      # Scanning tools
│       │   └── storage_tools.py   # Storage management tools
│       ├── storage/               # Storage implementation package
│       │   ├── __init__.py        # Package initialization
│       │   ├── base.py            # Base storage interface
│       │   ├── factory.py         # Storage client factory
│       │   ├── local.py           # Local filesystem storage
│       │   └── minio.py           # MinIO/S3 storage
│       ├── routers/               # API route definitions
│       │   ├── __init__.py        # Package initialization
│       │   ├── auth.py            # Authentication API routes
│       │   ├── files.py           # File management API routes
│       │   ├── rules.py           # YARA rule management API routes
│       │   └── scan.py            # YARA scanning API routes
│       ├── yara_service.py        # YARA rule management and scanning
│       ├── __init__.py            # Package initialization
│       └── __main__.py            # CLI entry point
├── docs/                          # Documentation
├── tests/                         # Test suite
├── Dockerfile                     # Docker configuration
├── entrypoint.sh                  # Container entrypoint script
├── Makefile                       # Build automation
├── pyproject.toml                 # Project metadata, runtime deps, and the `dev` extra
├── requirements.txt               # Core dependency floors (also constrains the locks)
├── requirements-lock.txt          # Hash-pinned runtime lock (Docker build + security scan)
└── requirements-dev-lock.txt      # Hash-pinned runtime + dev lock (test image + security scan)

🧪 Desarrollo

Desarrollo local

# Set up development environment
make dev-setup

# Run tests
make test

# Code quality checks
make lint
make format
make security-check

# Generate test coverage report
make coverage

# Run development server
make run

Flujos de trabajo CI/CD

Este proyecto utiliza GitHub Actions para la integración y el despliegue continuos:

  • Pruebas de CI: Se ejecutan en cada push y pull request a las ramas main y develop

    • Ejecuta pruebas, formato, linting y verificación de tipos
    • Construye y prueba imágenes Docker
    • Sube informes de cobertura de pruebas a Codecov
  • Autoincremento de versión: Incrementa automáticamente la versión en los pushes a la rama main

    • Actualiza la versión en pyproject.toml, setup.py y Dockerfile
    • Crea una etiqueta git para la nueva versión
  • Publicar versión: Se activa después del autoincremento exitoso de versión

    • Construye imágenes Docker para múltiples etapas
    • Genera notas de versión a partir de los commits de git
    • Crea una versión de GitHub con artefactos
    • Publica imágenes Docker en Docker Hub

Estos flujos de trabajo garantizan la calidad del código y automatizan el proceso de publicación.

Verificaciones de estado

Las siguientes verificaciones de estado se ejecutan en las pull requests:

  • ✅ Verificación de formato: Garantiza que el código sigue los estándares de formato de Black e isort
  • ✅ Verificación de lint: Valida la calidad del código y el cumplimiento de los estándares de codificación
  • ✅ Ejecución de pruebas: Ejecuta la suite completa de pruebas para verificar la funcionalidad
  • ✅ Informe de cobertura: Garantiza una cobertura suficiente de pruebas del código base

🌐 Documentación de la API

Documentación interactiva de la API disponible en:

Para documentación detallada de la API, consulte la Referencia de API.

🤝 Contribuciones

¡Las contribuciones son bienvenidas! No dude en enviar una Pull Request.

  1. Haga un fork del repositorio
  2. Cree su rama de características (git checkout -b feature/amazing-feature)
  3. Confirme sus cambios (git commit -m 'Add some amazing feature')
  4. Haga push a la rama (git push origin feature/amazing-feature)
  5. Abra una Pull Request

📄 Licencia

Este proyecto está licenciado bajo la Licencia MIT - consulte el archivo LICENSE para más detalles.

💖 Done o solicite funciones