YaraFlux MCP Server

YaraFlux MCP Server

一个模型上下文协议服务器,使 AI 助手能够对文件和 URL 执行基于 YARA 规则的威胁分析,支持全面的规则管理和详细的扫描结果。

Category
访问服务器

README

YaraFlux MCP 服务器

GitHub 发布(按日期最新) CI codecov Codacy Badge License: MIT Python Version FastAPI MCP Code style: black

一个用于 YARA 扫描的模型上下文协议 (MCP) 服务器,为 LLM 提供使用 YARA 规则分析文件的能力。

📋 概述

YaraFlux MCP 服务器使 AI 助手能够通过标准化的模型上下文协议接口执行基于 YARA 规则的威胁分析。该服务器将 YARA 扫描与现代 AI 助手集成,通过模块化架构支持全面的规则管理、安全扫描和详细的结果分析。

🧩 架构概述

+------------------------------------------+
|              AI 助手                |
+--------------------+---------------------+
                    |
                    | 模型上下文协议
                    |
+--------------------v---------------------+
|              YaraFlux MCP 服务器         |
|                                          |
|  +----------------+    +---------------+ |
|  | MCP 服务器     |    | 工具注册表 | |
|  +-------+--------+    +-------+-------+ |
|          |                     |         |
|  +-------v--------+    +-------v-------+ |
|  | YARA 服务   |    | 存储层 | |
|  +----------------+    +---------------+ |
|                                          |
+------------------------------------------+
          |                   |
 +-----------------+  +---------------+
 | YARA 引擎     |  | 存储       |
 | - 规则编译|  | - 本地文件系统    |
 | - 文件扫描 |  | - MinIO/S3    |
 +-----------------+  +---------------+

YaraFlux 遵循模块化架构,将关注点分离为:

  • MCP 集成层:处理与 AI 助手的通信
  • 工具实现层:实现 YARA 扫描和管理功能
  • 存储抽象层:提供灵活的存储选项
  • YARA 引擎集成:利用 YARA 进行扫描和规则管理

有关详细的架构图,请参阅 架构文档

✨ 特性

  • 🔄 模块化架构

    • MCP 集成、工具实现和存储的清晰分离
    • 标准化的参数解析和错误处理
    • 灵活的存储后端,支持本地和 S3/MinIO 选项
  • 🤖 MCP 集成

    • 19 个集成的 MCP 工具,提供全面的功能
    • 针对 Claude Desktop 集成进行了优化
    • 直接从对话中进行文件分析
    • 与最新的 MCP 协议规范兼容
  • 🔍 YARA 扫描

    • URL 和文件内容扫描
    • 带有上下文的详细匹配信息
    • 扫描结果存储和检索
    • 性能优化的扫描引擎
  • 📝 规则管理

    • 创建、读取、更新、删除 YARA 规则
    • 具有详细错误报告的规则验证
    • 从 ThreatFlux 存储库导入规则
    • 按来源分类(自定义 vs. 社区)
  • 📊 文件分析

    • 用于二进制分析的十六进制视图
    • 具有可配置参数的字符串提取
    • 文件元数据和哈希信息
    • 安全的文件上传和存储
  • 🔐 安全特性

    • 用于 API 访问的 JWT 身份验证
    • 非 root 容器执行
    • 安全的存储隔离
    • 可配置的访问控制

🚀 快速开始

使用 Docker 镜像

# 拉取最新的 Docker 镜像
docker pull threatflux/yaraflux-mcp-server:latest
# 运行容器
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
### 使用 Docker 从源代码构建

```bash
# 克隆存储库
git clone https://github.com/ThreatFlux/YaraFlux.git
cd YaraFlux/

# 构建 Docker 镜像
docker build -t yaraflux-mcp-server:latest .

# 运行容器
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

从源代码安装

# 克隆存储库
git clone https://github.com/ThreatFlux/YaraFlux.git
cd YaraFlux/

# 安装依赖项(需要 Python 3.13+)
make install

# 运行服务器
make run

🧩 Claude Desktop 集成

YaraFlux 旨在通过模型上下文协议与 Claude Desktop 无缝集成。

  1. 构建 Docker 镜像:
docker build -t yaraflux-mcp-server:latest .
  1. 添加到 Claude Desktop 配置 (~/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. 重新启动 Claude Desktop 以激活服务器。

🛠️ 可用的 MCP 工具

YaraFlux 公开了 19 个集成的 MCP 工具:

规则管理工具

  • list_yara_rules:列出可用的 YARA 规则,并提供过滤选项
  • get_yara_rule:获取特定 YARA 规则的内容和元数据
  • validate_yara_rule:验证 YARA 规则语法,并提供详细的错误报告
  • add_yara_rule:创建新的 YARA 规则
  • update_yara_rule:更新现有的 YARA 规则
  • delete_yara_rule:删除 YARA 规则
  • import_threatflux_rules:从 ThreatFlux GitHub 存储库导入规则

扫描工具

  • scan_url:使用指定的 YARA 规则扫描 URL 中的内容
  • scan_data:使用指定的规则扫描提供的数据(base64 编码)
  • get_scan_result:检索先前扫描的详细结果

文件管理工具

  • upload_file:上传文件以进行分析或扫描
  • get_file_info:获取有关已上传文件的元数据
  • list_files:列出已上传的文件,并提供分页和排序
  • delete_file:删除已上传的文件
  • extract_strings:从文件中提取 ASCII/Unicode 字符串
  • get_hex_view:获取文件内容的十六进制视图
  • download_file:下载已上传的文件

存储管理工具

  • get_storage_info:获取存储使用情况统计信息
  • clean_storage:删除旧文件以释放存储空间

📚 文档

全面的文档可在 docs/ 目录中找到:

🗂️ 项目结构

yaraflux_mcp_server/
├── src/
│   └── yaraflux_mcp_server/
│       ├── app.py                 # FastAPI 应用程序
│       ├── auth.py                # JWT 身份验证和用户管理
│       ├── config.py              # 配置设置加载器
│       ├── models.py              # 用于请求/响应的 Pydantic 模型
│       ├── mcp_server.py          # MCP 服务器实现
│       ├── utils/                 # 实用程序函数包
│       │   ├── __init__.py        # 包初始化
│       │   ├── error_handling.py  # 标准化的错误处理
│       │   ├── param_parsing.py   # 参数解析实用程序
│       │   └── wrapper_generator.py # 工具包装器生成
│       ├── mcp_tools/             # 模块化 MCP 工具包
│       │   ├── __init__.py        # 包初始化
│       │   ├── base.py            # 基本工具注册实用程序
│       │   ├── file_tools.py      # 文件管理工具
│       │   ├── rule_tools.py      # YARA 规则管理工具
│       │   ├── scan_tools.py      # 扫描工具
│       │   └── storage_tools.py   # 存储管理工具
│       ├── storage/               # 存储实现包
│       │   ├── __init__.py        # 包初始化
│       │   ├── base.py            # 基本存储接口
│       │   ├── factory.py         # 存储客户端工厂
│       │   ├── local.py           # 本地文件系统存储
│       │   └── minio.py           # MinIO/S3 存储
│       ├── routers/               # API 路由定义
│       │   ├── __init__.py        # 包初始化
│       │   ├── auth.py            # 身份验证 API 路由
│       │   ├── files.py           # 文件管理 API 路由
│       │   ├── rules.py           # YARA 规则管理 API 路由
│       │   └── scan.py            # YARA 扫描 API 路由
│       ├── yara_service.py        # YARA 规则管理和扫描
│       ├── __init__.py            # 包初始化
│       └── __main__.py            # CLI 入口点
├── docs/                          # 文档
├── tests/                         # 测试套件
├── Dockerfile                     # Docker 配置
├── entrypoint.sh                  # 容器入口点脚本
├── Makefile                       # 构建自动化
├── pyproject.toml                 # 项目元数据和依赖项
├── requirements.txt               # 核心依赖项
└── requirements-dev.txt           # 开发依赖项

🧪 开发

本地开发

# 设置开发环境
make dev-setup

# 运行测试
make test

# 代码质量检查
make lint
make format
make security-check

# 生成测试覆盖率报告
make coverage

# 运行开发服务器
make run

CI/CD 工作流程

本项目使用 GitHub Actions 进行持续集成和部署:

  • CI 测试:在每次推送到 main 和 develop 分支以及拉取请求时运行

    • 运行测试、格式化、linting 和类型检查
    • 构建和测试 Docker 镜像
    • 将测试覆盖率报告上传到 Codecov
  • 版本自动递增:在推送到 main 分支时自动递增版本

    • 更新 pyproject.toml、setup.py 和 Dockerfile 中的版本
    • 为新版本创建 git 标签
  • 发布版本:在成功自动递增版本后触发

    • 构建多个阶段的 Docker 镜像
    • 从 git 提交生成发行说明
    • 使用工件创建 GitHub 版本
    • 将 Docker 镜像发布到 Docker Hub

这些工作流程确保代码质量并自动化发布过程。

状态检查

以下状态检查在拉取请求上运行:

  • 格式验证:确保代码遵循 Black 和 isort 格式标准
  • Lint 验证:验证代码质量并符合编码标准
  • 测试执行:运行完整的测试套件以验证功能
  • 覆盖率报告:确保代码库具有足够的测试覆盖率

🌐 API 文档

交互式 API 文档可在以下位置获得:

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

有关详细的 API 文档,请参阅 API 参考

🤝 贡献

欢迎贡献!请随时提交拉取请求。

  1. Fork 存储库
  2. 创建您的功能分支 (git checkout -b feature/amazing-feature)
  3. 提交您的更改 (git commit -m 'Add some amazing feature')
  4. 推送到分支 (git push origin feature/amazing-feature)
  5. 打开拉取请求

📄 许可证

本项目根据 MIT 许可证获得许可 - 有关详细信息,请参阅 LICENSE 文件。

💖 捐赠或请求功能

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选