← Back to search

io.github.daedalus/mcp-shodan

daedalus Scanned 25d ago

MCP server exposing all Shodan API functionality

B
86.4 / 100

Versions

0.1.0latest
first seen May 19, 2026
PermissionsTool SafetyAuthAnnotationsCode QualityStabilitySpecVuln HistoryAuthorTransparencyCommunity

Tools 20

shodan_host
annotations: none low

Get all available information on an IP. Args: ip: IP address of the computer. history: True if you want to grab the historical banners for the host. minify: True to only return the list of ports and general host information. Returns: A dictionary containing all available information on the IP. Example: >>> shodan_host("1.1.1.1") {"ip": "1.1.1.1", "ports": [443, 80], ...}

ip str minify bool history bool
shodan_count
annotations: none low

Returns the total number of search results for the query. Args: query: Search query; identical syntax to the website. facets: A list of properties to get summary information on. Returns: A dictionary with 'total' property and optionally 'facets'. Example: >>> shodan_count("apache") {"total": 1000000, "facets": {...}}

query str facets string
shodan_search
annotations: none low

Search the SHODAN database. Args: query: Search query; identical syntax to the website. page: Page number of the search results. limit: Number of results to return. offset: Search offset to begin getting results from. facets: A list of properties to get summary information on. minify: Whether to minify the banner. Returns: A dictionary with 'matches' and 'total' properties. Example: >>> shodan_search("apache", limit=10) {"matches": [...], "total": 1000000}

page int limit string query str facets string minify bool offset string
shodan_search_cursor
annotations: none low

Search the SHODAN database and return an iterator. Args: query: Search query; identical syntax to the website. minify: Whether to minify the banner. retries: How often to retry the search in case it times out. Returns: A list of search results. Example: >>> list(shodan_search_cursor("nginx")) [{...}, {...}]

query str minify bool retries int
shodan_alerts
annotations: none low

List all of the active alerts that the user created. Args: aid: Filter by alert ID. include_expired: Whether to include expired alerts. Returns: A dictionary containing the alerts. Example: >>> shodan_alerts() {"alerts": [...]}

aid string include_expired bool
shodan_create_alert
annotations: none low

Create a new alert. Args: name: Name of the alert. ip: IP address or netblock to monitor. expires: Number of seconds until the alert expires. Returns: A dictionary containing the created alert. Example: >>> shodan_create_alert("My Server", "1.2.3.4") {"id": "alert_123", "name": "My Server", ...}

ip str name str expires int
shodan_delete_alert
annotations: none low

Delete the alert with the given ID. Args: aid: The ID of the alert to delete. Returns: A dictionary confirming deletion. Example: >>> shodan_delete_alert("alert_123") {"deleted": true}

aid str
shodan_scan
annotations: none low

Scan a network using Shodan. Args: ips: A list of IPs or netblocks in CIDR notation. force: Whether to force re-scan (enterprise only). Returns: A dictionary with scan ID and information. Example: >>> shodan_scan("1.2.3.4/24") {"id": "scan_123", "count": 256, "credits_left": 100}

ips str force bool
shodan_scan_internet
annotations: none low

Scan the internet using Shodan. Args: port: The port that should get scanned. protocol: The name of the protocol. Returns: A dictionary with scan ID and information. Example: >>> shodan_scan_internet("443", "https") {"id": "scan_123"}

port str protocol str
shodan_scan_status
annotations: none low

Get the status information about a previously submitted scan. Args: scan_id: The unique ID for the scan. Returns: A dictionary with status information. Example: >>> shodan_scan_status("scan_123") {"status": "complete", "progress": 100}

scan_id str
shodan_queries
annotations: none low

List the search queries that have been shared by other users. Args: sort: Sort by 'votes' or 'timestamp'. order: Order 'asc' or 'desc'. Returns: A list of saved search queries. Example: >>> shodan_queries() {"matches": [...]}

page int sort str order str
shodan_queries_search
annotations: none low

Search the directory of saved search queries in Shodan. Args: query: The search string to look for. page: Page number to iterate over results. Returns: A list of matching saved search queries. Example: >>> shodan_queries_search("nginx") {"matches": [...]}

page int query str
shodan_queries_tags
annotations: none low

Get popular query tags. Args: size: The number of tags to return. Returns: A list of tags. Example: >>> shodan_queries_tags() {"matches": [...]}

size int
shodan_info
annotations: none low

Returns information about the current API key. Returns: A dictionary with API key information. Example: >>> shodan_info() {"plan": "developer", "credits": 100}

shodan_ports
annotations: none low

Get a list of ports that Shodan crawls. Returns: An array containing the ports that Shodan crawls for. Example: >>> shodan_ports() [22, 80, 443, ...]

shodan_protocols
annotations: none low

Get a list of protocols that the Shodan on-demand scanning API supports. Returns: A dictionary containing protocol name and description. Example: >>> shodan_protocols() {"http": "HTTP", "ssh": "SSH"}

shodan_services
annotations: none low

Get a list of services that Shodan crawls. Returns: A dictionary containing ports and service names. Example: >>> shodan_services() {"80": "http", "443": "https"}

shodan_exploits_count
annotations: none low

Search the Shodan Exploits archive and return total count. Args: query: The exploit search query. facets: A list of properties to get summary information on. Returns: A dictionary with total count and facets. Example: >>> shodan_exploits_count("cve:2024") {"total": 1000, "facets": {...}}

query str facets string
shodan_exploits_search
annotations: none low

Search the Shodan Exploits archive. Args: query: The exploit search query. page: The page number to access. facets: A list of properties to get summary information on. Returns: A dictionary containing the results. Example: >>> shodan_exploits_search("cve:2024") {"matches": [...], "total": 1000}

page int query str facets string
shodan_search_tokens
annotations: none low

Returns information about the search query itself. Args: query: Search query; identical syntax to the website. Returns: A dictionary with filters, errors, attributes and string. Example: >>> shodan_search_tokens("apache port:80") {"filters": ["port:80"], "errors": [], ...}

query str

Permissions 2

filesystem low
Server uses filesystem capabilities via: os
env_vars low
Server uses env_vars capabilities via: os.environ

Scan Findings 48

low
Tool 'shodan_host' has no annotations annotation_checker · 100%
low
Tool 'shodan_count' has no annotations annotation_checker · 100%
low
Tool 'shodan_search' has no annotations annotation_checker · 100%
low
Tool 'shodan_search_cursor' has no annotations annotation_checker · 100%
low
Tool 'shodan_alerts' has no annotations annotation_checker · 100%
low
Tool 'shodan_create_alert' has no annotations annotation_checker · 100%
low
Tool 'shodan_delete_alert' has no annotations annotation_checker · 100%
low
Tool 'shodan_scan' has no annotations annotation_checker · 100%
low
Tool 'shodan_scan_internet' has no annotations annotation_checker · 100%
low
Tool 'shodan_scan_status' has no annotations annotation_checker · 100%
low
Tool 'shodan_queries' has no annotations annotation_checker · 100%
low
Tool 'shodan_queries_search' has no annotations annotation_checker · 100%
low
Tool 'shodan_queries_tags' has no annotations annotation_checker · 100%
low
Tool 'shodan_info' has no annotations annotation_checker · 100%
low
Tool 'shodan_ports' has no annotations annotation_checker · 100%
low
Tool 'shodan_protocols' has no annotations annotation_checker · 100%
low
Tool 'shodan_services' has no annotations annotation_checker · 100%
low
Tool 'shodan_exploits_count' has no annotations annotation_checker · 100%
low
Tool 'shodan_exploits_search' has no annotations annotation_checker · 100%
low
Tool 'shodan_search_tokens' has no annotations annotation_checker · 100%
info
Sandbox failed to start for behavioral verification behavioral_verifier · 100%
info
pyproject.toml metadata manifest_parser · 100%
info
Tool: shodan_host manifest_parser · 90%
info
Tool: shodan_count manifest_parser · 90%
info
Tool: shodan_search manifest_parser · 90%
info
Tool: shodan_search_cursor manifest_parser · 90%
info
Tool: shodan_alerts manifest_parser · 90%
info
Tool: shodan_create_alert manifest_parser · 90%
info
Tool: shodan_delete_alert manifest_parser · 90%
info
Tool: shodan_scan manifest_parser · 90%
info
Tool: shodan_scan_internet manifest_parser · 90%
info
Tool: shodan_scan_status manifest_parser · 90%
info
Tool: shodan_queries manifest_parser · 90%
info
Tool: shodan_queries_search manifest_parser · 90%
info
Tool: shodan_queries_tags manifest_parser · 90%
info
Tool: shodan_info manifest_parser · 90%
info
Tool: shodan_ports manifest_parser · 90%
info
Tool: shodan_protocols manifest_parser · 90%
info
Tool: shodan_services manifest_parser · 90%
info
Tool: shodan_exploits_count manifest_parser · 90%
info
Tool: shodan_exploits_search manifest_parser · 90%
info
Tool: shodan_search_tokens manifest_parser · 90%
info
Required env vars (1) manifest_parser · 80%
info
Sandbox failed to start for output poisoning scan output_poisoning · 100%
low
Permission: filesystem access detected permission_analyzer · 70%
low
Permission: env_vars access detected permission_analyzer · 90%
info
No dependency files found for SBOM generation sbom_generator · 100%
medium
No build provenance detected (SLSA L0) slsa_assessor · 90%