概要
VirusTotal API v3 の脅威インテリジェンス:ハッシュによるファイルレポート、約 70 のエンジンによる URL、ドメイン、IP のレポート、検索、指標間の関係、サンドボックスの挙動と MITRE ATT&CK、コミュニティのコメントと投票、再スキャン、そして管理者が有効にすれば URL スキャン。
ガイド付きセットアップ
VirusTotal を Gemini に 2 分で接続
AnythingMCP Cloud の無料トライアルを始め、ガイド付きセットアップで VirusTotal を接続して、MCP URL を Gemini に追加します。コードもサーバーの運用も不要です。
クレジットカード不要 · 7日間の試用 · セルフホストの選択肢あり
こう聞いてみよう
VirusTotal のサンプルプロンプト
プロンプトをクリックでコピー。Claude / ChatGPT / Cursor / Gemini / Copilot / OpenClaw に貼り付けて、このコネクターで実行できます。
Claude は AI のため誤ることがあります。回答をご確認ください。
💡 インストール不要? cloud.anythingmcp.com を直接利用してください。 サインインし、Connectors → VirusTotal をクリック、認証情報を貼り付け、MCP API キーを発行すれば完了です。Docker も
git cloneもローカルサーバーも不要。
VirusTotal + Gemini
VirusTotal API v3 の脅威インテリジェンス:ハッシュによるファイルレポート、約 70 のエンジンによる URL、ドメイン、IP のレポート、検索、指標間の関係、サンドボックスの挙動と MITRE ATT&CK、コミュニティのコメントと投票、再スキャン、そして管理者が有効にすれば URL スキャン。
前提条件
完全なセットアップ手順はコネクタ自体に組み込まれています (ストアでコネクタを選択すると表示)。必要な環境変数:
VIRUSTOTAL_API_KEY
ステップ 1 — 認証情報を取得
設定は約 2 分です。VirusTotal アカウントが必要で、コミュニティ用 API キーは無料です。
- https://www.virustotal.com/gui/join-us で無料の VirusTotal Community に登録し、メールアドレスを確認します。
- https://www.virustotal.com/gui/my-apikey で API キーを開き、
VIRUSTOTAL_API_KEYに貼り付けます。小文字の 16 進数 64 文字で、x-apikeyヘッダーで送信されます。 - コネクタをインストールし、
virustotal_list_popular_threat_categoriesを実行します。軽い呼び出しで、キーを確認できます。
パブリックキーと Premium キー: 無料キーは毎分 4 リクエスト、1 日 500 リクエストまでで、VirusTotal の利用規約は商用製品や業務フローでのパブリック API の利用を禁じています。Premium キーにはこの制限がなく、virustotal_intelligence_search、より多くの関係、より多くのコンテキストが使えます。日次クォータは 00:00 UTC にリセットされます。virustotal_get_api_usage に VirusTotal のユーザー名を渡すと、最大 30 日分のエンドポイント別の日次利用量がわかります。
プライバシー: 照会または送信した指標はすべて VirusTotal のデータセットに加わり、コミュニティから見えるようになります。トークン付きの URL、パスワードリセットのリンク、社内のホスト名など、機密情報や個人データを含む URL、ドメイン、ハッシュは決して送らないでください。
読み取れるもの:
- 判定:
virustotal_get_file_report(SHA-256、SHA-1、MD5 で照会、アップロードなし)、virustotal_get_url_report、virustotal_get_domain_report、virustotal_get_ip_report。約 70 のエンジンと URL ブロックリストの検出統計、各エンジンの判定、レピュテーション、投票、タグに加え、対象に応じてファイルの種類と名前、最終 URL とリダイレクト、DNS レコード、WHOIS、レジストラ、ASN、国がわかります。 virustotal_searchはハッシュ、完全な URL、ドメイン、IP、#phishingのようなコメントタグを受け付けます。URL を渡すとその URL レポートが返るので、URL ID がないときはこれが簡単です。- 関係:
virustotal_list_related_objectsは関係をたどります。たとえばファイルのcontacted_domains、ドメインのresolutionsやsubdomains、IP のcommunicating_filesです。virustotal_list_related_idsは ID だけを返すのではるかに小さくなります。virustotal_get_resolutionは 1 件の DNS 解決を読みます(ID は IP の直後にドメインを続けたもの、例:8.8.8.8dns.google)。 - サンドボックス:
virustotal_get_file_behaviour_summary(プロセス、ファイル、レジストリキー、ミューテックス、DNS、IP、HTTP の通信)とvirustotal_get_file_mitre_attack(サンドボックスごとの MITRE ATT&CK の戦術と技術)。 - コミュニティ: 1 つの対象への
virustotal_list_commentsとvirustotal_list_votes、VirusTotal 全体のvirustotal_list_latest_comments(tag:malwareなどで絞り込み)、1 件のコメントはvirustotal_get_comment。 - Premium のみ:
type:peexe positives:10+のような検索修飾子を使うvirustotal_intelligence_search。
書き込めるもの: virustotal_rescan は VirusTotal が既に知っているファイル、URL、ドメイン、IP の再分析を依頼し、virustotal_get_analysis がその結果を読みます(status が completed になるまで 15 から 60 秒ごとに確認)。virustotal_add_comment はあなたのアカウントで公開コメントを投稿し(# で始まる語はタグになります)、virustotal_add_vote は harmless または malicious の公開投票を行います。
インストール時に無効: virustotal_scan_url と virustotal_delete_comment。どちらも取り消せません。送信した URL は中身ごと VirusTotal コミュニティに永久に共有され、削除したコメントは戻りません。チームが必要とするときにワークスペース管理者が有効にします。virustotal_scan_url を有効にすると、VirusTotal が未確認の URL(404)を送信し、その結果を virustotal_get_analysis で読めます。
URL ID: URL 用ツールは URL ID を受け取ります。これはパディングなしの base64url で表した URL(https://example.com/ は aHR0cHM6Ly9leGFtcGxlLmNvbS8)か、正規化した URL の SHA-256 です。URL レポートの data.id はその SHA-256 で、分析 ID は u-<sha256>-<timestamp> の形です。迷ったときは AI が URL を渡して virustotal_search を使います。
データ形式: 応答は JSON:API に従い、data.id、data.type、data.attributes を持ちます。last_analysis_stats は判定ごとのエンジン数(malicious、suspicious、harmless、undetected、timeout)、last_analysis_results は各エンジンのカテゴリーと結果です。reputation はコミュニティのスコアで、マイナスは悪い評価です。total_votes は harmless と malicious の投票数です。日付は秒単位の Unix タイムスタンプ(UTC)です。検出数が少ないことは安全の証明にはならないため、AI は分析日と関係も確認します。URL、ドメイン、IP のレポートでは、HTTP ヘッダー、Cookie、HTML メタ、HTTPS 証明書の全文など大きなフィールドを省いています。証明書は historical_ssl_certificates の関係で取得できます。
ページング: 一覧ツールは続きがある間 meta.cursor と links.next を返します。AI は meta.cursor を同じ limit で cursor に渡し、なくなったら止めます。
よくあるエラー: 401 WrongCredentialsError または AuthenticationRequiredError はキーが間違っているかない(またはアカウントのメールが未確認)、403 ForbiddenError は Premium 専用のエンドポイントや関係、404 NotFoundError は VirusTotal が見たことのない対象、409 AlreadyExistsError は重複した投票、429 QuotaExceededError は毎分または日次のクォータ超過(待つかアップグレード)、400 InvalidArgumentError は不正な形式の ID です。
このコネクタはファイルをアップロードせず、サンプルもダウンロードしません。ファイルはハッシュで照会します。
ステップ 2 — アダプターをインストール
curl -fsSL https://raw.githubusercontent.com/HelpCode-ai/anythingmcp/main/docker-compose.quickstart.yml -o docker-compose.yml
printf 'JWT_SECRET=%s\nENCRYPTION_KEY=%s\n' "$(openssl rand -hex 32)" "$(openssl rand -hex 32)" > .env
docker compose up -d
ステップ 3 — Gemini にコネクタを追加
サーバーURL: AnythingMCP で MCP Servers を開き、このコネクタがあるサーバーを選んで URL(
https://cloud.anythingmcp.com/mcp/…)をコピーします。このガイドでYOUR_SERVER_IDと表示されている箇所に使ってください。
Gemini CLI は ~/.gemini/settings.json(Windows では %USERPROFILE%\.gemini\settings.json)から MCP サーバーを読み込みます。次を追加してください:
{
"mcpServers": {
"anythingmcp": {
"httpUrl": "https://cloud.anythingmcp.com/mcp/YOUR_SERVER_ID",
"headers": { "X-API-Key": "YOUR_MCP_API_KEY" }
}
}
}
- AnythingMCP の MCP Servers → 対象のサーバー → API keys で MCP API キーを作成し、
YOUR_MCP_API_KEYと置き換えます。 - ファイルを保存し、
geminiを再起動します。 - Gemini CLI で
/mcpを実行します(またはシェルでgemini mcp list)。anythingmcpが接続済みとして表示されるはずです。 - プロンプトを入力しましょう。Gemini CLI が
VirusTotalのツールを呼び出せるようになりました。
利用可能なツール
| Tool | What it does |
|---|---|
virustotal_get_file_report | Report on a file already known to VirusTotal, by hash: detection stats (malicious, suspicious, harmless, undetected), each engine's… |
virustotal_get_url_report | Report on a URL already analysed by VirusTotal: detection stats and each engine's verdict, categories, final URL after redirects, HTTP… |
virustotal_get_domain_report | Report on a domain: detection stats and each engine's verdict, categories from several vendors, reputation, votes, last DNS records… |
virustotal_get_ip_report | Report on an IPv4 or IPv6 address: detection stats and each engine's verdict, reputation, votes, ASN and owner, country and continent… |
virustotal_get_analysis | Status and result of one analysis started by virustotal_scan_url, virustotal_rescan or a file submission: status (queued, in-progress… |
virustotal_search | Look up a file hash, a URL, a domain, an IP address or a comment tag in one call |
virustotal_intelligence_search | VirusTotal Intelligence corpus search with search modifiers (e.g. type:peexe positives:10+ fs:2026-01-01+, entity:domain domain_regex:...… |
virustotal_list_comments | Community comments on a file, URL, domain or IP address, newest first: text, tags, date and the comment's own votes |
virustotal_list_votes | Community votes on a file, URL, domain or IP address: each vote's verdict (harmless or malicious), value and date |
virustotal_list_related_objects | Objects related to a file, URL, domain or IP address, as full objects: e.g. the domains and IPs a file contacted, files it dropped, a… |
virustotal_list_related_ids | Ids (descriptors) of the objects related to a file, URL, domain or IP address, without their attributes: much smaller than… |
virustotal_get_file_behaviour_summary | Summary of all sandbox runs of a file: processes created, files written and deleted, registry keys, mutexes, DNS lookups, IP traffic, HTTP… |
virustotal_get_file_mitre_attack | MITRE ATT&CK tactics and techniques observed for a file in each sandbox, with the signatures that triggered them and their severity |
virustotal_list_latest_comments | Latest comments posted anywhere on VirusTotal, optionally only those with a tag (filter tag:malware) |
virustotal_get_comment | One comment by id: text, tags, date, votes and, with relationships=author,item, who wrote it and what it is about |
virustotal_get_resolution | One DNS resolution object: which IP a domain resolved to, when, and from which source |
virustotal_list_popular_threat_categories | List of the threat categories antivirus verdicts commonly use (trojan, ransomware, dropper, miner, phishing, ...) |
virustotal_get_api_usage | Daily API usage of a VirusTotal user, per endpoint, between two dates (at most 30 days, default the last 30) |
virustotal_scan_url | Submit a URL for scanning by about 70 security engines |
virustotal_rescan | Ask VirusTotal to analyse again an object it already knows: a file by hash, a URL by identifier, a domain or an IP address |
virustotal_add_comment | Post a public comment on a file, URL, domain or IP address under your VirusTotal account |
virustotal_add_vote | Cast your public vote on a file, URL, domain or IP address: harmless or malicious |
virustotal_delete_comment | Delete one of your own public comments by id |
プロンプトの例
- 「SHA-256 が 275a021bbfb6489e54d471899f7db9d1663fc695ec2fe2a2c4538aabf651fd0f のファイルは悪意ありと判定されている?検出統計と脅威ラベルを見せて。」
- 「ドメイン example-login-secure.com を調べて。エンジンの判定、作成日、解決先の IP を教えて。」
- 「IP 185.220.101.1 のレピュテーション、所有者、この IP と通信したファイルを教えて。」
- 「このハッシュのサンドボックスでの挙動と MITRE ATT&CK の技術を見せて: 44d88612fea8a8f36de82e1278abb02f。」
- 「phishing タグの付いた最新のコミュニティコメントを一覧にして、どのブランドを装っているかまとめて。」
FAQ
Gemini CLI はどこから MCP サーバーを読み込みますか? ユーザー単位では ~/.gemini/settings.json、プロジェクト単位ではプロジェクト内の .gemini/settings.json です。gemini mcp list で各サーバーと接続状態を確認できます。
次のステップ
このガイドは役に立ちましたか?