Skip to main content
Glama
README.mdβ€’13.6 kB
# YaraFlux MCP Server [![GitHub release (latest by date)](https://img.shields.io/github/v/release/ThreatFlux/YaraFlux)](https://github.com/ThreatFlux/YaraFlux/releases) [![CI](https://github.com/ThreatFlux/YaraFlux/workflows/CI/badge.svg)](https://github.com/ThreatFlux/YaraFlux/actions) [![codecov](https://codecov.io/gh/ThreatFlux/YaraFlux/branch/main/graph/badge.svg)](https://codecov.io/gh/ThreatFlux/YaraFlux) [![Codacy Badge](https://app.codacy.com/project/badge/Grade/8f7728ae613540938411196abe4359f6)](https://app.codacy.com/gh/ThreatFlux/YaraFlux/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Python Version](https://img.shields.io/badge/python-3.13-blue)](https://www.python.org/downloads/) [![FastAPI](https://img.shields.io/badge/FastAPI-0.104.1-009688)](https://fastapi.tiangolo.com/) [![MCP](https://img.shields.io/badge/MCP-Integrated-blueviolet)](https://docs.anthropic.com/claude/docs/model-context-protocol) [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/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](docs/architecture_diagram.md). ## ✨ 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 ```bash # 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 ```bash # 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: ```bash docker build -t yaraflux-mcp-server:latest . ``` 2. Add to Claude Desktop config (`~/Library/Application Support/Claude/claude_desktop_config.json`): ```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" ] } } } ``` 3. 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/](docs/) directory: - [Architecture Diagrams](docs/architecture_diagram.md) - Visual representation of system architecture - [Code Analysis](docs/code_analysis.md) - Detailed code structure and recommendations - [Installation Guide](docs/installation.md) - Detailed setup instructions - [CLI Usage Guide](docs/cli.md) - Command-line interface documentation - [API Reference](docs/api.md) - REST API endpoints and usage - [YARA Rules Guide](docs/yara_rules.md) - Creating and managing YARA rules - [MCP Integration](docs/mcp.md) - Model Context Protocol integration details - [File Management](docs/file_management.md) - File handling capabilities - [Examples](docs/examples.md) - Real-world usage examples ## πŸ—‚οΈ 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 ```bash # 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](docs/api.md). ## 🀝 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](LICENSE) file for details. ## πŸ’– Donate or Ask for Features - [Patreon](https://patreon.com/vtriple) - [PayPal](https://paypal.me/ThreatFlux)

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