mcpField
S
Shodan MCP Server

Shodan MCP Server

ローカル
github.com/Cyreslab-AIセキュリティ515 週間前に更新

Shodan MCP Server について

Shodan MCP Server は、Shodan API と CVE データベースの機能を AI アシスタントに提供する MCP サーバーです。インターネットに接続された機器、サービス、脆弱性の情報を照会できます。セキュリティ調査担当者やネットワーク資産の分析を行うユーザーを対象としています。

主な機能

  1. 01ホストとサービスの検索
  2. 02CIDR 範囲のネットワークスキャン
  3. 03KEV と EPSS による CVE 検索
  4. 04API キー不要の InternetDB 参照
  5. 05ネットワークアラートと通知先の管理

活用シーン

  1. 01特定の IP アドレスの開放ポートとサービスを確認
  2. 02製品ごとに CVE を絞り込み、エクスプロイト予測スコア順に並べる
  3. 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 など)を管理します

インストール

  1. リポジトリをクローンします:

    git clone https://github.com/Cyreslab-AI/shodan-mcp-server.git
    cd shodan-mcp-server
    
  2. 依存関係をインストールします:

    npm install
    
  3. サーバーをビルドします:

    npm run build
    
  4. Shodan API キーを設定します:

    export SHODAN_API_KEY="your-api-key-here"
    
  5. サーバーを起動します:

    npm start
    

MCP 連携

このサーバーは Claude や、その他の MCP 互換 AI アシスタントと連携できます。Claude Desktop または Claude.app に追加するには、次の手順を実行します:

  1. MCP 設定にサーバーを追加します:

    {
      "mcpServers": {
        "shodan": {
          "command": "node",
          "args": ["/path/to/shodan-mcp-server/build/index.js"],
          "env": {
            "SHODAN_API_KEY": "your-api-key-here"
          }
        }
      }
    }
    
  2. 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

開発元

Cyreslab.ai

引用

このプロジェクトを研究や出版物で使用する場合は、以下の形式で引用してください。

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}

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。