Skip to main content
Glama

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