Virustotal

io.github.BurtTheCoder由 GitHub 账号 BurtTheCoder 发布v1.0.17更新于 Oct 24, 2026

MCP server for querying VirusTotal API with comprehensive security analysis tools.

概览

AI 生成的概览

让助手查询 VirusTotal v3 API,获取文件、URL、IP 和域名的威胁检测报告及相关指标的 MCP 服务器。

可以做什么
  • 查询文件、URL、IP 和域名报告,并一次性批量获取关键关联信息
  • 对文件、URL、IP 和域名的 100 多种关联类型进行游标分页浏览
  • 用 VTI 风格修饰符检索 VirusTotal 语料库,并获取沙箱行为摘要
  • 获取威胁行为者与恶意软件家族集合
适用场景
适合在安全分析中研判指标时使用:检查哈希、URL、IP 或域名的检测结果,或进一步追查其联系的宿主、释放的文件、解析记录和威胁行为者。
运行要求
以 npm 包形式通过 stdio 在本机运行,需要 Node.js 20 或更高版本,并通过环境变量 VIRUSTOTAL_API_KEY 提供 VirusTotal API 密钥。需要访问 VirusTotal API 的网络连接。可选的 HTTP 流式模式通过 MCP_TRANSPORT、MCP_HOST、MCP_PORT 和 MCP_ENDPOINT 配置。
安装前请注意
查询会把你的指标发送给 VirusTotal,缓存未命中时的 URL 扫描会提交该 URL 进行分析。可选的 HTTP 传输没有身份验证,任何能访问该端口的人都能消耗你的 API 配额,应仅绑定本机或置于带认证的反向代理之后。公共 API 层级每分钟仅允许 4 次请求,密钥从 VIRUSTOTAL_API_KEY 读取。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Virustotal,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

[mcp-virustotal: threat intelligence for AI agents]

[npm version] [CI] [License: MIT] [Node 20 or newer] [MCP Registry] [Smithery]

Quickstart · Tools · HTTP · Security · Troubleshooting · Docs

mcp-virustotal is an MCP server that gives AI agents access to the VirusTotal v3 API. Hand your agent a hash, URL, IP or domain and get back the detection report plus the relationships an analyst would pivot on: contacted hosts, dropped files, resolutions, threat actors.

[!NOTE] Independent project, not affiliated with VirusTotal or Google. You need your own VirusTotal API key.

Highlights

  • Reports with relationships. File, URL, IP and domain reports fetch key relationships in one batched ?relationships= call to save quota.
  • Cache first. get_url_report returns the cached VirusTotal report and only submits a scan on a cache miss.
  • Pivot tools. Corpus search with VTI-style modifiers (type:peexe positives:5+), merged sandbox behaviour summaries, and threat-actor and malware-family collections.
  • Full relationship paging. 100+ relationship types across files, URLs, IPs and domains, with cursor pagination.
  • Two transports. stdio for desktop clients, HTTP streaming for a shared service.
  • Tested. Unit tests for the formatters and API layer run in CI on Node 20, 22 and 24.

How it works

mermaid
flowchart LR    A["AI agent<br/>(Claude, Codex, Gemini, VS Code)"] -->|"MCP over stdio or HTTP"| S["mcp-virustotal"]    S -->|"validate input,<br/>HTTPS + API key"| V["VirusTotal v3 API"]    V -->|"JSON"| S    S -->|"formatted report text"| A

Quickstart

Requirements: Node.js 20 or newer and a VirusTotal API key.

sh
# Claude Codeclaude mcp add --transport stdio --env VIRUSTOTAL_API_KEY=your-key virustotal -- npx -y @burtthecoder/mcp-virustotal
# Codex CLIcodex mcp add virustotal --env VIRUSTOTAL_API_KEY=your-key -- npx -y @burtthecoder/mcp-virustotal
# Gemini CLIgemini mcp add -e VIRUSTOTAL_API_KEY=your-key virustotal npx -y @burtthecoder/mcp-virustotal

For Claude Desktop, VS Code, Smithery and running from source, see Connect a client.

Then ask your agent: "Look up the SHA-256 275a021bbfb6489e54d471899f7db9d1663fc695ec2fe2a2c4538aabf651fd0f (the EICAR test file) and show what it drops and contacts."

Tools

Eleven tools. Full parameters and relationship lists are in the tool reference.

GroupTools
Reports (with relationships)get_file_report, get_url_report, get_ip_report, get_domain_report
Relationship pagingget_file_relationship, get_url_relationship, get_ip_relationship, get_domain_relationship
Search and pivotsearch_vt, get_file_behaviour_summary, get_collection

HTTP streaming transport

stdio is the default. Set MCP_TRANSPORT=httpStream to run a standalone HTTP service:

sh
MCP_TRANSPORT=httpStream MCP_PORT=3000 VIRUSTOTAL_API_KEY=your-key node build/index.js
sh
docker build -t mcp-virustotal .docker run -p 127.0.0.1:3000:3000 -e VIRUSTOTAL_API_KEY=your-key -e MCP_TRANSPORT=httpStream mcp-virustotal

A health check is served at /health.

Environment variables

VariableDefaultDescription
VIRUSTOTAL_API_KEY(required)Your VirusTotal API key
MCP_TRANSPORTstdiostdio or httpStream
MCP_HOSTlocalhostBind address (httpStream only). The Docker image sets 0.0.0.0
MCP_PORT3000HTTP port (httpStream only)
MCP_ENDPOINT/mcpHTTP endpoint path (httpStream only)

Security

[!WARNING] The HTTP transport has no authentication. Keep the port on localhost or behind an authenticating reverse proxy, or anyone who can reach it can spend your API quota.

  • Tool arguments are validated with zod schemas before any request is built.
  • The API key is read from the environment and sent only to VirusTotal.
  • Lookups send your indicators to VirusTotal. A URL scan on a cache miss submits that URL for analysis.

Report vulnerabilities privately; see SECURITY.md.

Troubleshooting

  • Wrong API key: the key is usually 64 characters with no spaces or quotes. Restart the client after changing config.
  • 429 errors: the public tier allows 4 requests per minute.
  • Logs: logs/mcp-virustotal-server.log in the package directory.

More in the troubleshooting guide.

Development

sh
git clone https://github.com/w0h1v/mcp-virustotal && cd mcp-virustotalnpm cinpm test                                  # build + unit tests, no key or networkVIRUSTOTAL_API_KEY=your-key npm run smoke # all 11 tools against the real API

The smoke test paces calls at 20 s for the public-tier limit and isn't suited to free tiers reduced to a few lookups a day. See CONTRIBUTING.md and the changelog.

License

MIT. See LICENSE.

来源:README.md,提交 8bab26f

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

1
  1. v1.0.17最新Sep 16, 2026

评分

已满足适用检查项的 50%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分