mcpField
S
Shodan MCP Server

Shodan MCP Server

本地服务
github.com/Cyreslab-AI安全515 周前更新

关于 Shodan MCP Server

Shodan MCP Server 是一个 MCP 服务,封装了 Shodan API 与 CVE 数据库功能,供 AI 助手查询联网设备、服务和漏洞信息。适合安全研究人员和需要做网络资产与漏洞分析的用户。它覆盖主机查询、漏洞情报和网络监控等多类工具。

主要功能

  1. 01主机与服务搜索
  2. 02CIDR 网段扫描
  3. 03CVE 查询与 KEV、EPSS 筛选
  4. 04InternetDB 免密钥主机查询
  5. 05网络告警与通知器管理

适用场景

  1. 01查询特定 IP 的开放端口与服务信息
  2. 02按产品筛选高风险 CVE 并排序
  3. 03监控一组 IP 或网段的变化并发送通知

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Logo

Shodan MCP Server

一个模型上下文协议(MCP)服务,可提供对 Shodan API 功能和 CVE 数据库的访问,让 AI 助手能够查询互联网连接设备、服务和漏洞的信息。

功能

网络情报
  • 主机信息:获取特定 IP 地址的详细信息
  • 搜索功能:在 Shodan 数据库中搜索设备和服务
  • 网络扫描:扫描网段范围(CIDR 表示法)中的设备
  • SSL 证书信息:获取域名的 SSL 证书详细信息
  • IoT 设备搜索:查找特定类型的 IoT 设备
漏洞情报
  • CVE 查询:获取特定漏洞的详细信息
  • 漏洞搜索:使用高级筛选条件搜索 CVE(产品、KEV 状态、EPSS 分数)
  • CPE 信息:获取产品的通用平台枚举数据
  • 最新漏洞:查看最新的 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

获取产品的通用平台枚举(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。该工具会检测到这种情况,并返回格式明确的 {"error": "Unexpected response from the Shodan Exploits API", ...} 对象,而不是崩溃,以防 Shodan 恢复此端点。

count_exploits

统计符合搜索查询的漏洞利用程序数量,但不返回完整的漏洞利用程序记录。

参数:

  • query(必需):要统计结果数量的漏洞利用程序搜索查询
  • facets(可选):要包含在统计结果中的分面列表(例如,['type', 'platform'])
网络警报工具
create_alert

创建一个持久的 Shodan 网络警报,用于监控一个或多个 IP/范围并报告随时间发生的变化。此操作不是只读操作。

参数:

  • 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 设备搜索
  • 漏洞利用搜索(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}

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。