Skip to main content
Glama
ThreatFlux

YaraFlux MCP Server

YaraFlux MCP Server

GitHub release (latest by date) CI codecov Codacy Badge License: MIT Python Version FastAPI MCP 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.

Related MCP server: MCP Toolkit

🧩 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:

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

-
security - not tested
A
license - permissive license
-
quality - not tested

Latest Blog Posts

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/ThreatFlux/YaraFlux'

If you have feedback or need assistance with the MCP directory API, please join our Discord server