Shodan MCP Server について
Shodan MCP Server は、Shodan API と CVE データベースの機能を AI アシスタントに提供する MCP サーバーです。インターネットに接続された機器、サービス、脆弱性の情報を照会できます。セキュリティ調査担当者やネットワーク資産の分析を行うユーザーを対象としています。
主な機能
- 01ホストとサービスの検索
- 02CIDR 範囲のネットワークスキャン
- 03KEV と EPSS による CVE 検索
- 04API キー不要の InternetDB 参照
- 05ネットワークアラートと通知先の管理
活用シーン
- 01特定の IP アドレスの開放ポートとサービスを確認
- 02製品ごとに CVE を絞り込み、エクスプロイト予測スコア順に並べる
- 03IP やレンジの変化を監視し、通知を送信
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細

Shodan MCP Server
AI アシスタントがインターネットに接続されたデバイス、サービス、脆弱性について情報を照会できるように、Shodan API の機能と CVE データベースへのアクセスを提供する Model Context Protocol(MCP)サーバーです。
機能
ネットワークインテリジェンス
- ホスト情報:特定の IP アドレスに関する詳細情報を取得します
- 検索機能:Shodan のデータベースからデバイスやサービスを検索します
- ネットワークスキャン:ネットワーク範囲(CIDR 表記)をスキャンしてデバイスを検出します
- SSL 証明書情報:ドメインの SSL 証明書の詳細を取得します
- IoT デバイス検索:特定の種類の IoT デバイスを検索します
脆弱性インテリジェンス
- CVE の照会:特定の脆弱性に関する詳細情報を取得します
- 脆弱性検索:高度なフィルター(製品、KEV ステータス、EPSS スコア)を使って CVE を検索します
- CPE 情報:製品の Common Platform Enumeration データを取得します
- 最新の脆弱性:最新の CVE と既知の悪用脆弱性にアクセスします
- エクスプロイト予測:EPSS のエクスプロイト予測スコア順に CVE を取得します
- エクスプロイト検索:Shodan の Exploits データベースで、CVE に関連付けられたエクスプロイトを検索します
- InternetDB の照会:API キー不要で無料のホスト照会(オープンポート、ホスト名、CPE、脆弱性、タグ)
ネットワーク監視
- ネットワークアラート:変更を監視する永続的なアラートを作成、一覧表示、確認、削除します。監視対象は IP や範囲です
- 通知サービス:利用可能な通知サービスプロバイダーを一覧表示し、アラートのイベント送信先となる通知サービス(Slack、メール、Webhook など)を管理します
インストール
-
リポジトリをクローンします:
git clone https://github.com/Cyreslab-AI/shodan-mcp-server.git cd shodan-mcp-server -
依存関係をインストールします:
npm install -
サーバーをビルドします:
npm run build -
Shodan API キーを設定します:
export SHODAN_API_KEY="your-api-key-here" -
サーバーを起動します:
npm start
MCP 連携
このサーバーは Claude や、その他の MCP 互換 AI アシスタントと連携できます。Claude Desktop または Claude.app に追加するには、次の手順を実行します:
-
MCP 設定にサーバーを追加します:
{ "mcpServers": { "shodan": { "command": "node", "args": ["/path/to/shodan-mcp-server/build/index.js"], "env": { "SHODAN_API_KEY": "your-api-key-here" } } } } -
Claude を再起動して、新しい MCP サーバーを読み込みます。
利用可能なツール
検索とホスト情報のツール
get_host_info
特定の IP アドレスに関する詳細情報を取得します。
パラメーター:
ip(必須):照会する IP アドレスmax_items(任意):配列に含める項目の最大数(デフォルト:5)fields(任意):結果に含めるフィールドのリスト(例:['ip_str', 'ports', 'location.country_name'])
search_shodan
Shodan のデータベースからデバイスやサービスを検索します。
パラメーター:
query(必須):Shodan の検索クエリ(例:'apache country:US')page(任意):結果をページ分割する際のページ番号(デフォルト:1)facets(任意):検索結果に含めるファセットのリスト(例:['country', 'org'])max_items(任意):配列に含める項目の最大数(デフォルト:5)fields(任意):結果に含めるフィールドのリスト(例:['ip_str', 'ports', 'location.country_name'])summarize(任意):全データではなく、結果の要約を返すかどうか(デフォルト:false)
get_host_count
検索クエリに一致するホスト数を、クエリクレジットを消費せずに取得します。
パラメーター:
query(必須):ホスト数を調べるための Shodan 検索クエリfacets(任意):件数の結果に含めるファセットのリスト(例:['country', 'org'])
scan_network_range
ネットワーク範囲(CIDR 表記)をスキャンしてデバイスを検出します。
パラメーター:
cidr(必須):CIDR 表記のネットワーク範囲(例:192.168.1.0/24)max_items(任意):結果に含める項目の最大数(デフォルト:5)fields(任意):結果に含めるフィールドのリスト(例:['ip_str', 'ports', 'location.country_name'])
search_iot_devices
特定の種類の IoT デバイスを検索します。
パラメーター:
device_type(必須):検索する IoT デバイスの種類(例:'webcam'、'router'、'smart tv')country(任意):検索対象を絞り込む国コード(例:'US'、'DE')max_items(任意):結果に含める最大項目数(デフォルト:5)
SSL と証明書のツール
get_ssl_info
ドメインの SSL 証明書情報を取得します。
パラメーター:
domain(必須):SSL 証明書を検索するドメイン名(例:example.com)
DNS ツール
dns_lookup
DNS ルックアップを使用してホスト名を IP アドレスに解決します。
パラメーター:
hostnames(必須):解決するホスト名のリスト(例:['google.com', 'facebook.com'])
reverse_dns_lookup
逆引き DNS ルックアップを使用して IP アドレスのホスト名を取得します。
パラメーター:
ips(必須):検索する IP アドレスのリスト(例:['8.8.8.8', '1.1.1.1'])
get_domain_info
サブドメインや DNS レコードを含む、包括的なドメイン情報を取得します。
パラメーター:
domain(必須):検索するドメイン名(例:'google.com')history(任意):過去の DNS データを含めます(デフォルト:false)type(任意):DNS レコードの種類で絞り込みます(A、AAAA、CNAME、NS、SOA、MX、TXT)page(任意):ページネーション用のページ番号(デフォルト:1)
検索ユーティリティツール
list_search_facets
Shodan クエリで使用できるすべての検索ファセットを一覧表示します。
パラメーター: なし
list_search_filters
Shodan クエリで使用できるすべての検索フィルターを一覧表示します。
パラメーター: なし
parse_search_tokens
検索クエリを解析し、使用されているフィルターとパラメーターを確認します。
パラメーター:
query(必須):解析する Shodan 検索クエリ
インフラストラクチャツール
list_ports
Shodan がインターネット上でクロールするすべてのポートを一覧表示します。
パラメーター: なし
list_protocols
オンデマンドのインターネットスキャンを実行する際に使用できるすべてのプロトコルを一覧表示します。
パラメーター: なし
CVE と脆弱性のツール
get_cve_info
特定の CVE に関する詳細情報を取得します。
パラメーター:
cve_id(必須):検索する CVE ID(例:'CVE-2021-44228')
search_cves
さまざまなフィルターを使用して脆弱性を検索します。
パラメーター:
cpe23(任意):検索する CPE 2.3 文字列(例:'cpe:2.3:a:apache:log4j:*')product(任意):脆弱性を検索する製品名(例:'apache'、'windows')is_kev(任意):既知の悪用済み脆弱性のみを絞り込みますsort_by_epss(任意):EPSS スコア(悪用予測スコアリングシステム)で結果を並べ替えますstart_date(任意):CVE の絞り込みに使用する開始日(YYYY-MM-DD 形式)end_date(任意):CVE の絞り込みに使用する終了日(YYYY-MM-DD 形式)limit(任意):返す結果の最大数(デフォルト:10)skip(任意):ページネーション用にスキップする結果数(デフォルト:0)
get_cpes
製品の Common Platform Enumeration(CPE)情報を取得します。
パラメーター:
product(任意):検索する製品名(例:'apache'、'windows')vendor(任意):絞り込みに使用するベンダー名(例:'microsoft'、'apache')version(任意):絞り込みに使用するバージョン(例:'2.4.1')limit(任意):返す結果の最大数(デフォルト:10)skip(任意):ページネーション用にスキップする結果数(デフォルト:0)
get_newest_cves
CVE データベースから最新の脆弱性を取得します。
パラメーター:
limit(任意):返す結果の最大数(デフォルト:10)
get_kev_cves
CISA から既知の悪用済み脆弱性(KEV)を取得します。
パラメーター:
limit(任意):返す結果の最大数(デフォルト:10)
get_cves_by_epss
EPSS スコア(悪用予測スコアリングシステム)順に並べた CVE を取得します。
パラメーター:
limit(任意):返す結果の最大数(デフォルト:10)
get_internetdb_host
Shodan の InternetDB を使用して、IP アドレスを無料かつ軽量に検索します(開放ポート、ホスト名、CPE、脆弱性、タグ)。API キーは不要です。
パラメーター:
ip(必須):検索する IP アドレス(例:'8.8.8.8')
search_exploits
既知のエクスプロイトを Shodan の Exploits データベース(Exploit-DB、Metasploit、CVE に紐づくエクスプロイト)から検索します。
パラメーター:
query(必須):エクスプロイトの検索クエリ(例:'apache cve:2021-44228')page(任意):結果のページ番号(デフォルト:1)facets(任意):結果に含めるファセットのリスト(例:['type', 'platform'])
注記: 執筆時点では、上流の exploits.shodan.io ホストは cvedb.shodan.io にリダイレクトされ、この API を提供しなくなっています。Shodan がエンドポイントを復旧した場合に備え、このツールはその状態を検出し、クラッシュする代わりに {"error": "Unexpected response from the Shodan Exploits API", ...} オブジェクトを返します。
count_exploits
エクスプロイトのレコード全体を返さずに、検索クエリに一致するエクスプロイトの件数を取得します。
パラメーター:
query(必須):結果件数を数えるエクスプロイトの検索クエリfacets(任意):件数の結果に含めるファセットのリスト(例:['type', 'platform'])
ネットワークアラートツール
create_alert
1 つ以上の IP アドレス/範囲を監視し、経時的な変化を報告する、永続的な Shodan ネットワークアラートを作成します。これは読み取り専用の操作ではありません。
パラメーター:
name(必須):アラートの説明的な名前ip(必須):監視する IP アドレスまたは CIDR 範囲のリスト(例:['1.2.3.4', '10.0.0.0/24'])expires(任意):自動的に期限切れになるまでアラートを有効にする秒数(期限なしの場合は省略)
list_alerts
アカウントに設定されている Shodan ネットワークアラートをすべて一覧表示します。
パラメーター:
include_expired(任意):結果に期限切れのアラートを含めるかどうか(デフォルト:true)
get_alert
ID を指定して、特定の Shodan ネットワークアラートの詳細を取得します。
パラメーター:
alert_id(必須):取得するアラートの ID
delete_alert
ID を指定して、Shodan ネットワークアラートを完全に削除します。これは破壊的な操作であり、元に戻せません。
パラメーター:
alert_id(必須):削除するアラートの ID
通知ツール
list_notifier_providers
利用可能な Shodan 通知プロバイダー(例:slack、email、webhook、telegram)と、それぞれに必要な引数を一覧表示します。
パラメーター: なし
list_notifiers
アカウントに設定されている Shodan 通知機能をすべて一覧表示します。
パラメーター: なし
create_notifier
ネットワークアラートがイベントを送信できる、新しい Shodan 通知機能(例:Slack、email、webhook)を作成します。これは読み取り専用の操作ではありません。
パラメーター:
provider(必須):通知プロバイダー名(例:'slack'、'email'、'webhook'、'telegram')。利用可能なオプションを確認するにはlist_notifier_providersを使用してください。args(必須):プロバイダー固有の引数(例:slack の場合は{"webhook_url": "https://..."})description(任意):通知機能の、人が読める説明
delete_notifier
ID を指定して、Shodan 通知機能を完全に削除します。これは破壊的な操作であり、元に戻せません。
パラメーター:
notifier_id(必須):削除する通知機能の ID
アカウントとユーティリティのツール
get_api_info
クレジットや制限を含む API プランの情報を取得します。
パラメーター: なし
get_account_profile
メンバーシップの状態やクレジットを含む、アカウントのプロフィール情報を取得します。
パラメーター: なし
get_my_ip
インターネットから見た現在の IP アドレスを取得します。
パラメーター: なし
利用可能なリソース
shodan://host/{ip}:特定の IP アドレスに関する情報
API の制限事項
一部の Shodan API エンドポイントを利用するには、有料会員登録が必要です。以下の機能は、有料の Shodan API キーでのみ利用できます。
- 検索機能(search_shodan, scan_network_range, get_ssl_info, search_iot_devices, get_host_count, get_domain_info)
- ネットワークスキャン
- SSL 証明書の検索
- IoT デバイスの検索
- Exploit の検索(search_exploits, count_exploits)
- ネットワークアラートと通知機能(create_alert, list_alerts, get_alert, delete_alert, list_notifier_providers, list_notifiers, create_notifier, delete_notifier)
注:CVE データベース機能(get_cve_info, search_cves, get_cpes, get_newest_cves, get_kev_cves, get_cves_by_epss)は完全に無料で、有料の Shodan サブスクリプションは不要です。
注:get_internetdb_hostは完全に無料で、Shodan API キーも必要ありません。公開サービスのinternetdb.shodan.ioに直接問い合わせます。ただし、サーバーの起動には引き続きSHODAN_API_KEY環境変数が必要です(ほかのツールで使用します)。
ライセンス
MIT
開発元
引用
このプロジェクトを研究や出版物で使用する場合は、以下の形式で引用してください。
author = {Bassem Abidi and Moudather Chelbi},
title = {Shodan MCP Server},
year = {2025},
howpublished = {https://github.com/Cyreslab-AI/shodan-mcp-server},
note = {Accessed: 2025-06-29}
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。