使用说明
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安全配置。
入门指南
-
创建Python虚拟环境并安装依赖项:
python -m venv .venv source .venv/bin/activate pip install -U pip pip install -e .[dev] -
通过环境变量或
.env文件。看.env.example对于所需值。 -
启动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许可证.