YaraFlux

ThreatFlux/YaraFlux

3.4

If you are the rightful owner of YaraFlux and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.

YaraFlux MCP Server is a Model Context Protocol server designed for YARA rule-based threat analysis, integrating with AI assistants for comprehensive file scanning and rule management.

Tools

Functions exposed to the LLM to take actions

scan_url

Scan a file from a URL with YARA rules.

This function downloads and scans a file from the provided URL using YARA rules. It's particularly useful for scanning potentially malicious files without storing them locally on the user's machine.

For LLM users connecting through MCP, this can be invoked with natural language like: "Can you scan this URL for malware: https://example.com/suspicious-file.exe" "Analyze https://example.com/document.pdf for malicious patterns" "Check if the file at this URL contains known threats: https://example.com/sample.exe"

Args: url: URL of the file to scan rule_names: Optional list of rule names to match (if None, match all) sources: Optional list of sources to match rules from (if None, match all) timeout: Optional timeout in seconds (if None, use default)

Returns: Scan result containing file details, scan status, and any matches found

scan_data

Scan in-memory data with YARA rules.

This function scans provided binary or text data using YARA rules. It supports both base64-encoded data and plain text, making it versatile for various sources of potentially malicious content.

For LLM users connecting through MCP, this can be invoked with natural language like: "Scan this base64 data: SGVsbG8gV29ybGQ=" "Can you check if this text contains malicious patterns: eval(atob('ZXZhbChwcm9tcHQoKSk7'))" "Analyze this string for malware signatures: document.write(unescape('%3C%73%63%72%69%70%74%3E'))"

Args: data: Data to scan (base64-encoded by default) filename: Name of the file for reference encoding: Encoding of the data ("base64" or "text") rule_names: Optional list of rule names to match (if None, match all) sources: Optional list of sources to match rules from (if None, match all) timeout: Optional timeout in seconds (if None, use default)

Returns: Scan result containing match details and file metadata

get_scan_result

Get a scan result by ID.

This function retrieves previously saved scan results using their unique ID. It allows users to access historical scan data and analyze matches without rescanning the content.

For LLM users connecting through MCP, this can be invoked with natural language like: "Show me the results from scan abc123" "Retrieve the details for scan ID xyz789" "What were the findings from my previous scan?"

Args: scan_id: ID of the scan result

Returns: Complete scan result including file metadata and any matches found

list_yara_rules

List available YARA rules.

For LLM users connecting through MCP, this can be invoked with natural language like: "Show me all YARA rules" "List custom YARA rules only" "What community rules are available?"

Args: source: Optional source filter ("custom" or "community")

Returns: List of YARA rule metadata objects

get_yara_rule

Get a YARA rule's content.

For LLM users connecting through MCP, this can be invoked with natural language like: "Show me the code for rule suspicious_strings" "Get the content of the ransomware detection rule" "What does the CVE-2023-1234 rule look like?"

Args: rule_name: Name of the rule to get source: Source of the rule ("custom" or "community")

Returns: Rule content and metadata

validate_yara_rule

Validate a YARA rule.

For LLM users connecting through MCP, this can be invoked with natural language like: "Check if this YARA rule syntax is valid" "Validate this detection rule for me" "Is this YARA code correctly formatted?"

Args: content: YARA rule content to validate

Returns: Validation result with detailed error information if invalid

add_yara_rule

Add a new YARA rule.

For LLM users connecting through MCP, this can be invoked with natural language like: "Create a new YARA rule named suspicious_urls" "Add this detection rule for PowerShell obfuscation" "Save this YARA rule to detect malicious macros"

Args: name: Name of the rule content: YARA rule content source: Source of the rule ("custom" or "community")

Returns: Result of the operation

update_yara_rule

Update an existing YARA rule.

For LLM users connecting through MCP, this can be invoked with natural language like: "Update the ransomware detection rule" "Modify the suspicious_urls rule to include these new patterns" "Fix the syntax error in the malicious_macros rule"

Args: name: Name of the rule content: Updated YARA rule content source: Source of the rule ("custom" or "community")

Returns: Result of the operation

delete_yara_rule

Delete a YARA rule.

For LLM users connecting through MCP, this can be invoked with natural language like: "Delete the ransomware detection rule" "Remove the rule named suspicious_urls" "Get rid of the outdated CVE-2020-1234 rule"

Args: name: Name of the rule source: Source of the rule ("custom" or "community")

Returns: Result of the operation

import_threatflux_rules

Import ThreatFlux YARA rules from GitHub.

For LLM users connecting through MCP, this can be invoked with natural language like: "Import YARA rules from ThreatFlux" "Get the latest detection rules from the ThreatFlux repository" "Import YARA rules from a custom GitHub repo"

Args: url: URL to the GitHub repository (if None, use default ThreatFlux repository) branch: Branch name to import from

Returns: Import result

upload_file

Upload a file to the storage system.

This tool allows you to upload files with metadata for later retrieval and analysis. Files can be uploaded as base64-encoded data or plain text.

For LLM users connecting through MCP, this can be invoked with natural language like: "Upload this file with base64 data: SGVsbG8gV29ybGQ=" "Save this text as a file named example.txt: This is the content" "Store this code snippet as script.py with metadata indicating it's executable"

Args: data: File content encoded as specified by the encoding parameter file_name: Name of the file encoding: Encoding of the data ("base64" or "text") metadata: Optional metadata to associate with the file

Returns: File information including ID, size, and metadata

get_file_info

Get detailed information about a file.

For LLM users connecting through MCP, this can be invoked with natural language like: "Get details about file abc123" "Show me the metadata for file xyz789" "What's the size and upload date of file 456def?"

Args: file_id: ID of the file

Returns: File information including metadata

list_files

List files with pagination and sorting.

For LLM users connecting through MCP, this can be invoked with natural language like: "Show me all the uploaded files" "List the most recently uploaded files first" "Show files sorted by name in alphabetical order" "List the largest files first"

Args: page: Page number (1-based) page_size: Number of items per page sort_by: Field to sort by (uploaded_at, file_name, file_size) sort_desc: Sort in descending order if True

Returns: List of files with pagination info

delete_file

Delete a file from storage.

For LLM users connecting through MCP, this can be invoked with natural language like: "Delete file abc123" "Remove the file with ID xyz789" "Please get rid of file 456def"

Args: file_id: ID of the file to delete

Returns: Deletion result

extract_strings

Extract strings from a file.

This tool extracts ASCII and/or Unicode strings from a file with a specified minimum length. It's useful for analyzing binary files or looking for embedded text in files.

For LLM users connecting through MCP, this can be invoked with natural language like: "Extract strings from file abc123" "Find all text strings in the file with ID xyz789" "Show me any readable text in file 456def with at least 8 characters"

Args: file_id: ID of the file min_length: Minimum string length include_unicode: Include Unicode strings include_ascii: Include ASCII strings limit: Maximum number of strings to return

Returns: Extracted strings and metadata

get_hex_view

Get hexadecimal view of file content.

This tool provides a hexadecimal representation of file content with optional ASCII view. It's useful for examining binary files or seeing the raw content of text files.

For LLM users connecting through MCP, this can be invoked with natural language like: "Show me a hex dump of file abc123" "Display the hex representation of file xyz789" "I need to see the raw bytes of file 456def"

Args: file_id: ID of the file offset: Starting offset in bytes length: Number of bytes to return (if None, a reasonable default is used) bytes_per_line: Number of bytes per line in output

Returns: Hexadecimal representation of file content

download_file

Download a file's content.

This tool retrieves the content of a file, returning it in the specified encoding.

For LLM users connecting through MCP, this can be invoked with natural language like: "Download file abc123 and show me its contents" "Get the content of file xyz789 as text if possible" "Retrieve file 456def for me"

Args: file_id: ID of the file to download encoding: Encoding for the returned data ("base64" or "text")

Returns: File content and metadata

get_storage_info

Get information about the storage system.

This tool provides detailed information about storage usage, including:

  • Storage type (local or remote)
  • Directory locations
  • File counts and sizes by storage type

For LLM users connecting through MCP, this can be invoked with natural language like: "Show me storage usage information" "How much space is being used by the system?" "What files are stored and how much space do they take up?"

Returns: Information about storage usage and configuration

clean_storage

Clean up storage by removing old files.

This tool removes old files from storage to free up space. It can target specific storage types and age thresholds.

For LLM users connecting through MCP, this can be invoked with natural language like: "Clean up old scan results" "Remove files older than 30 days" "Free up space by deleting old samples"

Args: storage_type: Type of storage to clean ('results', 'samples', or 'all') older_than_days: Remove files older than X days (if None, use default)

Returns: Cleanup result with count of removed files and freed space

Prompts

Interactive templates invoked by user choice

No prompts

Resources

Contextual data attached and managed by the client

No resources