YaraFlux MCP Server logo

YaraFlux MCP Server

by ThreatFlux

YaraFlux MCP Server enables AI assistants to perform YARA rule-based threat analysis through the standardized Model Context Protocol interface. The server integrates YARA scanning with modern AI assistants, supporting comprehensive rule management, secure scanning, and detailed result analysis through a modular architecture.

View on GitHub

Last updated: N/A

YaraFlux MCP Server

CI

CI

codecov

codecov

Codacy Badge

Codacy Badge

License: MIT

License: MIT

Python Version

Python Version

FastAPI

FastAPI

MCP

MCP

Code style: black

Code style: black

A Model Context Protocol (MCP) server for YARA scanning, providing LLMs with capabilities to analyze files with YARA rules.

๐Ÿ“‹ Overview

YaraFlux MCP Server enables AI assistants to perform YARA rule-based threat analysis through the standardized Model Context Protocol interface. The server integrates YARA scanning with modern AI assistants, supporting comprehensive rule management, secure scanning, and detailed result analysis through a modular architecture.

๐Ÿงฉ Architecture Overview

+------------------------------------------+
|              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 follows a modular architecture that separates concerns between:

  • MCP Integration Layer: Handles communication with AI assistants
  • Tool Implementation Layer: Implements YARA scanning and management functionality
  • Storage Abstraction Layer: Provides flexible storage options
  • YARA Engine Integration: Leverages YARA for scanning and rule management

For detailed architecture diagrams, see the Architecture Documentation.

โœจ Features

  • ๐Ÿ”„ Modular Architecture

    • Clean separation of MCP integration, tool implementation, and storage
    • Standardized parameter parsing and error handling
    • Flexible storage backend with local and S3/MinIO options
  • ๐Ÿค– MCP Integration

    • 19 integrated MCP tools for comprehensive functionality
    • Optimized for Claude Desktop integration
    • Direct file analysis from within conversations
    • Compatible with latest MCP protocol specification
  • ๐Ÿ” YARA Scanning

    • URL and file content scanning
    • Detailed match information with context
    • Scan result storage and retrieval
    • Performance-optimized scanning engine
  • ๐Ÿ“ Rule Management

    • Create, read, update, delete YARA rules
    • Rule validation with detailed error reporting
    • Import rules from ThreatFlux repository
    • Categorization by source (custom vs. community)
  • ๐Ÿ“Š File Analysis

    • Hexadecimal view for binary analysis
    • String extraction with configurable parameters
    • File metadata and hash information
    • Secure file upload and storage
  • ๐Ÿ” Security Features

    • JWT authentication for API access
    • Non-root container execution
    • Secure storage isolation
    • Configurable access controls

๐Ÿš€ Quick Start

Using Docker Image

# 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

Installation from Source

# 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

๐Ÿงฉ Claude Desktop Integration

YaraFlux is designed for seamless integration with Claude Desktop through the Model Context Protocol.

  1. Build the Docker image:
docker build -t yaraflux-mcp-server:latest .
  1. Add to Claude Desktop config (~/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. Restart Claude Desktop to activate the server.

๐Ÿ› ๏ธ Available MCP Tools

YaraFlux exposes 19 integrated MCP tools:

Rule Management Tools

  • list_yara_rules: List available YARA rules with filtering options
  • get_yara_rule: Get a specific YARA rule's content and metadata
  • validate_yara_rule: Validate YARA rule syntax with detailed error reporting
  • add_yara_rule: Create a new YARA rule
  • update_yara_rule: Update an existing YARA rule
  • delete_yara_rule: Delete a YARA rule
  • import_threatflux_rules: Import rules from ThreatFlux GitHub repository

Scanning Tools

  • scan_url: Scan content from a URL with specified YARA rules
  • scan_data: Scan provided data (base64 encoded) with specified rules
  • get_scan_result: Retrieve detailed results from a previous scan

File Management Tools

  • upload_file: Upload a file for analysis or scanning
  • get_file_info: Get metadata about an uploaded file
  • list_files: List uploaded files with pagination and sorting
  • delete_file: Delete an uploaded file
  • extract_strings: Extract ASCII/Unicode strings from a file
  • get_hex_view: Get hexadecimal view of file content
  • download_file: Download an uploaded file

Storage Management Tools

  • get_storage_info: Get storage usage statistics
  • clean_storage: Remove old files to free up storage space

๐Ÿ“š Documentation

Comprehensive documentation is available in the docs/ directory:

๐Ÿ—‚๏ธ Project Structure

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 and dependencies
โ”œโ”€โ”€ requirements.txt               # Core dependencies
โ””โ”€โ”€ requirements-dev.txt           # Development dependencies

๐Ÿงช Development

Local Development

# 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

CI/CD Workflows

This project uses GitHub Actions for continuous integration and deployment:

  • CI Tests: Runs on every push and pull request to main and develop branches

    • Runs tests, formatting, linting, and type checking
    • Builds and tests Docker images
    • Uploads test coverage reports to Codecov
  • Version Auto-increment: Automatically increments version on pushes to main branch

    • Updates version in pyproject.toml, setup.py, and Dockerfile
    • Creates git tag for new version
  • Publish Release: Triggered after successful version auto-increment

    • Builds Docker images for multiple stages
    • Generates release notes from git commits
    • Creates GitHub release with artifacts
    • Publishes Docker images to Docker Hub

These workflows ensure code quality and automate the release process.

Status Checks

The following status checks run on pull requests:

  • โœ… Format Verification: Ensures code follows Black and isort formatting standards
  • โœ… Lint Verification: Validates code quality and compliance with coding standards
  • โœ… Test Execution: Runs the full test suite to verify functionality
  • โœ… Coverage Report: Ensures sufficient test coverage of the codebase

๐ŸŒ API Documentation

Interactive API documentation available at:

  • Swagger UI: http://localhost:8000/docs
  • ReDoc: http://localhost:8000/redoc

For detailed API documentation, see API Reference.

๐Ÿค Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

๐Ÿ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

๐Ÿ’– Donate or Ask for Features

YaraFlux MCP Server - MCP Server | MCP Directory