病毒扫描查询服务

该项目实现了一个MCP服务器,提供对VirusTotal的查询工具包,包括哈希、URL、IP和域名的查询以及可选的文件提交流程,专为需要确定性访问VirusTotal数据的LLM代理设计。

  • by alephnan
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 alephnan/MCP-VirusTotal

使用说明

MCP VirusTotal服务器

该项目实现了一个模型上下文协议(MCP)服务器,该服务器公开了一个用于查询VirusTotal的精心策划的工具包。该服务提供哈希、URL、IP和域的查找,以及可选的提交流。它专为需要确定性、可重复访问VirusTotal数据的LLM代理安全使用而设计。

特性

  • 用于常见VirusTotal查找的严格类型化工具定义。
  • 基于Pydantic的输入验证和规范化。
  • 具有抖动和遵守VirusTotal速率限制的持久性重试。
  • 可插拔缓存层(内存或Redis中),以避免冗余请求。
  • 结构化JSON日志记录,带有相关ID和机密编辑。
  • 使用可选的Redis sidecar和GitHub Actions CI进行Docker化部署。

MCP工具

工具 目的 输入模型 输出模型
get_hash_report 按SHA-256汇总文件分析统计数据 HashReportRequest HashReportResponse
get_url_report 检索URL的VT判断 URLReportRequest URLReportResponse
get_ip_report 获取IP智能数据 IPReportRequest IPReportResponse
get_domain_report 获取域名信誉和类别 DomainReportRequest DomainReportResponse
submit_url 排队进行新的URL扫描 SubmitURLRequest SubmitURLResponse
submit_file 上传文件进行分析(由配置保护) SubmitFileRequest SubmitFileResponse
get_analysis_status 跟踪提交进度 AnalysisStatusRequest AnalysisStatusResponse

每个工具都执行严格的验证,并返回适合下游LLM使用的紧凑JSON响应。

配置

所有设置均由环境驱动;参考 .env.example 对于违约。关键选项包括:

  • VT_API_KEY –所需的VirusTotal API密钥。
  • ALLOW_FILE_SUBMISSION –切换文件上传支持(默认 false).
  • CACHE_BACKEND – memory 或 redis.
  • CACHE_TTL_SECONDS –缓存新鲜度窗口;集 0 禁用缓存。
  • MAX_FILE_SIZE_MB –文件提交的安全限制。

服务器从本地加载变量 .env 文件存在时,可以通过Docker/Compose secrets安全配置。

入门指南

  1. 创建Python虚拟环境并安装依赖项:

    python -m venv .venv
    source .venv/bin/activate
    pip install -U pip
    pip install -e .[dev]
    
  2. 通过环境变量或 .env 文件。看 .env.example 对于所需值。

  3. 启动MCP服务器:

    VT_API_KEY=... python -m mcp_vt.server
    

    服务器通过MCP的stdio传输进行通信,并公开上面列出的工具。

运行测试

  • 单元测试 (嘲笑VirusTotal):

    pytest -m unit
    
  • 集成测试 (真正的VirusTotal,需要 VT_API_KEY):

    VT_API_KEY=... pytest -m integration
    

当没有可用的API键时,将自动跳过集成测试。

克劳德配置

将服务器添加到您的Claude MCP config.json (通常在 ~/.config/claude/config.json).示例条目:

{
  "mcpServers": [
    {
      "name": "virustotal",
      "command": "python",
      "args": ["-m", "mcp_vt.server"],
      "env": {
        "VT_API_KEY": "${VT_API_KEY}"
      }
    }
  ]
}

替换 ${VT_API_KEY} 使用安全引用(env-var、秘密管理器等)。更新配置后重新启动Claude,以便检测到新服务器。

Docker使用

使用Docker Compose在本地构建并运行容器:

docker compose up --build

compose堆栈将MCP服务器与可选的Redis缓存(在内部网络上监听)一起提供。服务器容器以无特权用户身份运行,具有只读文件系统和临时 /tmp.

不使用Redis运行

如果你只喜欢内存缓存,可以直接构建并运行镜像,而无需启动Redis:

docker build -t mcp-vt-memory .
docker build -t mcp-vt-memory . && docker run --rm --env-file .env -e CACHE_BACKEND=memory mcp-vt-memory

服务器仍然通过stdio进行通信,因此在连接MCP客户端时保持容器连接(无守护程序模式)。

持续集成

GitHub操作工作流 .github/workflows/ci.yml 安装项目,运行Python 3.11和3.12的单元套件,并在以下情况下有条件地执行集成测试 VT_API_KEY 秘密就在眼前。

许可

根据 MIT许可证.