io.github.w0h1v/virustotal
MCP server for querying VirusTotal API with comprehensive security analysis tools.
Que pouvez-vous faire avec io.github.w0h1v/virustotal ?
- Reports with relationships. File, URL, IP and domain reports fetch key relationships in one batched
?relationships=call to save quota. - Cache first.
get_url_reportreturns 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.
Installation
Ajoutez ceci à la configuration MCP de votre client (Claude Desktop : claude_desktop_config.json ; Cursor : .cursor/mcp.json ; VS Code et les autres utilisent la même forme « mcpServers »).
@burtthecoder/mcp-virustotalclaude mcp add virustotal -e 'VIRUSTOTAL_API_KEY=<your virustotal_api_key>' -- npx -y @burtthecoder/mcp-virustotal@1.0.35
{
"mcpServers": {
"virustotal": {
"command": "npx",
"args": [
"-y",
"@burtthecoder/mcp-virustotal@1.0.35"
],
"env": {
"VIRUSTOTAL_API_KEY": "<your virustotal_api_key>"
}
}
}
}
Variables d'environnement
VIRUSTOTAL_API_KEYobligatoire secret Your VirusTotal API key
Documentation
Tirée du README du projet sur GitHub, actualisée chaque semaine. Les liens ouvrent GitHub.
Sommaire
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_reportreturns 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
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.
# Claude Code
claude mcp add --transport stdio --env VIRUSTOTAL_API_KEY=your-key virustotal -- npx -y @burtthecoder/mcp-virustotal
# Codex CLI
codex mcp add virustotal --env VIRUSTOTAL_API_KEY=your-key -- npx -y @burtthecoder/mcp-virustotal
# Gemini CLI
gemini 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.
| Group | Tools |
|---|---|
| Reports (with relationships) | get_file_report, get_url_report, get_ip_report, get_domain_report |
| Relationship paging | get_file_relationship, get_url_relationship, get_ip_relationship, get_domain_relationship |
| Search and pivot | search_vt, get_file_behaviour_summary, get_collection |
HTTP streaming transport
stdio is the default. Set MCP_TRANSPORT=httpStream to run a standalone HTTP service:
MCP_TRANSPORT=httpStream MCP_PORT=3000 VIRUSTOTAL_API_KEY=your-key node build/index.js
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
| Variable | Default | Description |
|---|---|---|
VIRUSTOTAL_API_KEY | (required) | Your VirusTotal API key |
MCP_TRANSPORT | stdio | stdio or httpStream |
MCP_HOST | localhost | Bind address (httpStream only). The Docker image sets 0.0.0.0 |
MCP_PORT | 3000 | HTTP port (httpStream only) |
MCP_ENDPOINT | /mcp | HTTP 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.login the package directory.
More in the troubleshooting guide.
Development
git clone https://github.com/w0h1v/mcp-virustotal && cd mcp-virustotal
npm ci
npm test # build + unit tests, no key or network
VIRUSTOTAL_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.
Questions fréquentes
Qu'est-ce que io.github.w0h1v/virustotal ?
MCP server for querying VirusTotal API with comprehensive security analysis tools.
Comment installer io.github.w0h1v/virustotal ?
Il s'exécute sur votre machine. Dans Claude Code : claude mcp add virustotal -e 'VIRUSTOTAL_API_KEY=<your virustotal_api_key>' -- npx -y @burtthecoder/mcp-virustotal@1.0.35. Pour les autres clients, collez la configuration JSON de cette page dans leurs réglages MCP.
Faut-il une clé API pour io.github.w0h1v/virustotal ?
Oui. Il attend VIRUSTOTAL_API_KEY, à renseigner dans sa configuration.
io.github.w0h1v/virustotal est-il open source ?
Oui. Son code est sur GitHub sous licence MIT.
Qui maintient io.github.w0h1v/virustotal ?
Il est publié par w0h1v. AI.tn le référence sans le maintenir ni le recommander.
Issu du registre MCP officiel. Être listé n'est pas une recommandation : vérifiez le code et les permissions d'un serveur avant de lui donner accès à vos données.