virustotal
io.github.w0h1v/virustotal
About virustotal
virustotal is an MCP server published by the GitHub account w0h1v. MCP server for querying VirusTotal API with comprehensive security analysis tools.
It runs on your own machine: your AI client starts it from the npm package @burtthecoder/mcp-virustotal at version 1.0.35.
It asks for one secret: VIRUSTOTAL_API_KEY. Give it a key with the least access that still works.
Version 1.0.35 was published on 13 October 2026, and the source code is public, so you can read it before installing.
Written from the registry entry. 9 automated checks on the registry entry and the package code: 7 pass, 0 warn, 0 fail, 2 info. How we check.
What it asks for
| Variable | Required | Secret | Description |
|---|---|---|---|
VIRUSTOTAL_API_KEY | Yes | Yes | Your VirusTotal API key |
Checks
| Check | Result | Detail |
|---|---|---|
| Source repository linked | Pass | https://github.com/w0h1v/mcp-virustotal |
| Version pinned | Pass | Every package has an explicit version |
| Secrets requested | Info | Asks for 1 secret: VIRUSTOTAL_API_KEY |
| Known package registry | Pass | All packages come from npm, PyPI, OCI, NuGet or MCPB |
| Namespace ownership | Info | Name verified via GitHub account w0h1v |
| Registry text aimed at the AI | Pass | Description and settings contain no hidden characters or instructions to the AI |
| Install scripts | Pass | @burtthecoder/mcp-virustotal@1.0.35 runs nothing at install |
| Code red flags | Pass | Read 25 files in @burtthecoder/mcp-virustotal@1.0.35: no obfuscation, encoded execution, credential reads or data-collection endpoints found |
| Text aimed at the AI | Pass | No hidden characters or instructions to the AI in 25 files, including comments and the README |
Code review: Pass, with notes
We read all 1,794 lines in 23 files of @burtthecoder/mcp-virustotal 1.0.35 on 2026-10-31, without running it.
Looks up URLs, files (by hash), IPs and domains on VirusTotal. It talks only to VirusTotal and sends your API key only there. Note that checking a URL VirusTotal has never seen submits it for a public scan, and every lookup is written to a local log file.
What we found
- Note If VirusTotal has no report for a URL, get_url_report automatically submits it for scanning with no confirmation. Submitted URLs become part of VirusTotal's corpus and can be seen by other VirusTotal users, so private or internal URLs (with tokens in them) can leak. Disclosed in the tool description.
build/handlers/url.js:34-39 - Note Every looked-up URL and search query is written to a log file inside the package folder (or temp), kept forever. The API key is not logged.
build/utils/logging.js:8-56; handlers/url.js:31,36,62; handlers/search.js:9 - Info Collection id goes into the API path unencoded; the host is fixed to virustotal.com, so at most it reaches another VirusTotal endpoint with the user's own key.
build/handlers/collection.js:8-9 - Info Third-party text from VirusTotal (community comments, page titles, threat-actor descriptions) is passed to the AI unfiltered; such text could carry prompt-injection attempts. Normal for a threat-intel tool.
build/formatters/*.js - Info Inputs are validated (URL, IP, hash and domain formats, relationship enums).
build/schemas/index.js - Info No package.json in the reviewed copy (read at runtime for the version); dependencies are taken from imports. No obfuscation, install hooks, dynamic code or hard-coded secrets.
package - Info lines_read (1794) is the real line count of every file (Read tool / splitlines). The manifest's 1817 counts one extra empty 'line' after the trailing newline of 23 files; no file or line was skipped.
manifest.tsv
| Talks to | www.virustotal.com/api/v3: URLs (base64url), file hashes, IPs, domains, collection ids, search queries; x-apikey header. get_url_report POSTs the URL to /urls for a new scan when VirusTotal has no report yet (only when a tool is called) |
|---|---|
| Keys and settings | VIRUSTOTAL_API_KEY: www.virustotal.com only (x-apikey header); never loggedMCP_TRANSPORT / MCP_PORT / MCP_HOST / MCP_ENDPOINT: local (optional HTTP transport, default host localhost)TEMP / TMP: local (fallback log folder on Windows) |
| Files on your machine | Loads .env via dotenv; reads its own package.json. Creates <package>/logs/mcp-virustotal-server.log (fallback: %TEMP%\mcp-virustotal-logs or /tmp/mcp-virustotal-logs) and appends every request path, the URLs/domains/hashes looked up and search query text. No other file access; no file uploads. |
| Runs programs | None. |
| Telemetry | None. |
| Tools | get_url_report, get_url_relationship, get_file_report, get_file_relationship, get_ip_report, get_ip_relationship, get_domain_report, get_domain_relationship, search_vt, get_file_behaviour_summary, get_collection |
| Tool descriptions | clean (get_url_report's description discloses that it submits URLs for scanning) |
This covers the package's own code only, not the 4 packages it depends on (fastmcp (npm), axios, zod, dotenv). A new version drops this review until we read it again.
Popularity & health: 63 / 100
Worked out from public numbers and our own checks, not from user reviews or ratings. It says how used and how looked-after a server is, not whether it is safe.
24 forks, 25 merged pull requests. Sources: GitHub, npm, PyPI (pypistats.org) and Hacker News (Algolia), fetched 2026-10-31.
What people say
No Hacker News threads link to its source code.
Look further: search Reddit, search Hacker News, read its GitHub issues. These are not reviews we checked.
Facts
| Registry name | io.github.w0h1v/virustotal |
|---|---|
| Publisher | GitHub account w0h1v |
| How the name is verified | Name verified via GitHub account w0h1v. The registry ties the name prefix to that account or domain; it does not check the code. |
| Type | Local: runs on your machine from a package |
| Packages | npm @burtthecoder/mcp-virustotal 1.0.35 (stdio) |
| Version | 1.0.35 |
| Published | |
| Last updated | |
| Source repository | https://github.com/w0h1v/mcp-virustotal |
| Website | None linked |
| Category | Security (assigned by keyword rule, not by hand) |
Related servers in Security
- virustotal7/7MCP server for querying VirusTotal API with comprehensive security…
VirusTotal8/8Official VirusTotal MCP server: threat reports, file and URL…
- vulnicheck4/5HTTP MCP Server for comprehensive Python vulnerability scanning and…
- Corvus4/4Reverse engineering and security analysis of .NET and native…
- KubeStellar MCP4/4AI-powered Kubernetes diagnostics, RBAC analysis, security checks,…
- GoSQLX4/4SQL validation, formatting, parsing, metadata extraction, linting,…