Skip to main content
Glama

Shodan MCP Server (stdio)

Model Context Protocol (MCP) server integration for Shodan API, enabling Claude AI to perform comprehensive security reconnaissance, vulnerability assessment, and threat intelligence gathering.

Features

  • Comprehensive Host Search: Search Shodan's database of internet-connected devices

  • Detailed Host Information: Get in-depth data about specific IP addresses

  • DNS Operations: Forward and reverse DNS lookups

  • Vulnerability Discovery: Find hosts with specific CVEs and security issues

  • Exploit Database: Search for available exploits

  • API Management: Monitor query credits and usage

  • Protocol/Port Information: Access Shodan's supported protocols and ports

Related MCP server: Shodan MCP Server

Prerequisites

  • Node.js 18.0.0 or higher

  • Shodan API key (Get one here)

  • Claude Desktop or compatible MCP client

Installation

1. Clone and Install Dependencies

cd /path/to/shodan-mcp-server
npm install

2. Get Shodan API Key

  1. Sign up at shodan.io

  2. Navigate to Account

  3. Copy your API key

3. Configure Environment

Create a .env file:

echo "SHODAN_API_KEY=your_api_key_here" > .env

4. Configure Claude Desktop

Add to your Claude Desktop configuration file:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Linux: ~/.config/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "shodan": {
      "command": "node",
      "args": ["/path/to/shodan-mcp-server/src/index.js"],
      "env": {
        "SHODAN_API_KEY": "your_api_key_here"
      }
    }
  }
}

Available Tools

Search Shodan for hosts matching a query.

Parameters:

  • query (required): Shodan search query

  • facets (optional): Comma-separated facets for aggregation

  • page (optional): Page number for pagination

Example:

Query: "apache country:US"
Facets: "country,org,port"

shodan_host_info

Get detailed information about a specific IP address.

Parameters:

  • ip (required): IP address to lookup

  • history (optional): Include historical data

Example:

IP: "8.8.8.8"
History: true

shodan_dns_lookup

Resolve domain names to IP addresses.

Parameters:

  • hostnames (required): Array of hostnames

Example:

Hostnames: ["example.com", "google.com"]

shodan_dns_reverse

Perform reverse DNS lookup on IP addresses.

Parameters:

  • ips (required): Array of IP addresses

Example:

IPs: ["8.8.8.8", "1.1.1.1"]

shodan_api_info

Get information about your API plan and remaining credits.

Parameters: None

Search the Shodan Exploits database.

Parameters:

  • query (required): Search query

  • facets (optional): Facets for aggregation

  • page (optional): Page number

Example:

Query: "CVE-2021-44228"
Facets: "type,platform"

shodan_ports

Get list of ports that Shodan crawls.

Parameters: None

shodan_protocols

Get supported protocols for querying.

Parameters: None

shodan_count

Get total count of results for a query without returning data.

Parameters:

  • query (required): Shodan search query

  • facets (optional): Facets for aggregated counts

Search for saved community queries.

Parameters:

  • query (required): Search term

  • page (optional): Page number

shodan_query_tags

Get popular tags for saved queries.

Parameters:

  • size (optional): Number of tags to return (default: 10)

Shodan Query Syntax

Basic Filters

city:"San Francisco"          - Filter by city
country:US                    - Filter by country code
org:"Google"                  - Filter by organization
net:192.168.0.0/24           - Filter by IP range
port:22                       - Filter by port
product:Apache               - Filter by product name
version:2.4.1                - Filter by version
os:"Windows 10"              - Filter by operating system

Vulnerability Filters

vuln:CVE-2021-44228          - Search for specific CVE
vuln:CVE-2020-*              - Search for CVEs from 2020

HTTP Filters

http.title:"Admin Panel"      - Filter by page title
http.html:"password"          - Search in HTML content
http.status:200               - Filter by HTTP status
http.component:"wordpress"    - Filter by web component

SSL Filters

ssl:"example.com"             - Search by SSL certificate
ssl.cert.expired:true         - Find expired certificates
ssl.version:sslv2            - Filter by SSL version
ssl.cipher:export            - Find weak ciphers

Combining Filters

port:22 country:US org:"Amazon"
apache city:"Los Angeles" vuln:CVE-2021-44228

Usage Examples

1. Asset Discovery

// Find all assets for an organization
{
  "query": "org:\"Example Corp\"",
  "facets": "country,port,product"
}

2. Vulnerability Assessment

// Find systems vulnerable to Log4Shell
{
  "query": "vuln:CVE-2021-44228 country:US",
  "page": 1
}

3. Threat Intelligence

// Find potential C2 infrastructure
{
  "query": "product:\"Cobalt Strike\"",
  "facets": "country,org"
}

4. DNS Investigation

// Resolve multiple domains
{
  "hostnames": [
    "example.com",
    "suspicious-domain.com"
  ]
}

5. Exploit Research

// Find exploits for a CVE
{
  "query": "CVE-2021-44228",
  "facets": "type,platform,author"
}

Skills

Three comprehensive skills are included:

1. shodan-recon

Perform reconnaissance and asset discovery. Automates the process of:

  • DNS enumeration

  • Asset discovery

  • Port and service enumeration

  • Detailed host analysis

  • Comprehensive reporting

2. shodan-vuln-scan

Identify and assess vulnerabilities. Includes:

  • CVE discovery

  • Exploit availability checking

  • Risk assessment

  • Remediation recommendations

  • Vulnerability matrix generation

3. shodan-threat-intel

Gather threat intelligence. Capabilities:

  • C2 infrastructure tracking

  • Phishing infrastructure identification

  • Malware distribution point discovery

  • IOC enrichment

  • Threat actor tracking

  • Temporal analysis

Development

Running in Development

npm run dev

Testing Tools

# Test the server manually
node src/index.js

# In another terminal, send test requests
# (requires MCP client for full testing)

Adding New Tools

  1. Add tool definition to TOOLS array in src/index.js

  2. Add case handler in CallToolRequestSchema handler

  3. Update README with new tool documentation

Resources

Available Tools

11 tools
shodan_api_infoB

Get information about the current API plan including query credits remaining and scan credits.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool retrieves API plan information, implying a read-only operation, but doesn't clarify if it requires authentication, has rate limits, returns structured data, or involves any side effects. For a tool with zero annotation coverage, this is a significant gap in transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core purpose without unnecessary words. It directly states what the tool does and includes specific details about the information retrieved, making it easy to parse and understand quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity is low (0 parameters, no output schema), the description is minimally adequate. It explains what the tool does but lacks details on authentication needs, rate limits, or output format. With no annotations and no output schema, the description should provide more behavioral context to be fully complete for agent use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters with 100% schema description coverage, so the schema fully documents the absence of inputs. The description adds value by specifying what information is retrieved ('query credits remaining and scan credits'), which helps the agent understand the output context. Baseline for 0 parameters is 4, as it compensates for the lack of parameter details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Get information about the current API plan including query credits remaining and scan credits.' It specifies the verb ('Get information') and resource ('current API plan') with concrete details about what information is retrieved. However, it doesn't explicitly differentiate from sibling tools like 'shodan_count' or 'shodan_query_search' which might also involve API usage tracking.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., authentication status), timing (e.g., before making queries to check credits), or comparisons to sibling tools. This leaves the agent without context for tool selection in a workflow.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

shodan_countA

Get the total number of results for a search query without returning the actual results. Useful for scoping searches before running full queries to avoid wasting API credits.

Best Practice: Always use count first for large ICS/SCADA queries.

Example Workflow:

  1. Count: "port:502 tag:ics" → 50,000 results

  2. Narrow: "port:502 tag:ics country:US" → 15,000 results

  3. Refine: "port:502 tag:ics country:US org:"Electric"" → 500 results

  4. Then run full search on refined query

Use with facets to see distribution without burning credits on full results.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesShodan search query. Same syntax as shodan_host_search. Examples: "port:502 tag:ics", "port:502 country:US", "tag:ics has_vuln:true"
facetsNoOptional facets for aggregated counts. Use to see distribution: "country,org,product". Shows breakdown without full results.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key traits: it's a read-only operation (implied by 'get'), helps avoid wasting API credits (resource management), and works with facets for aggregated counts. However, it doesn't mention rate limits, authentication needs, or error handling, leaving some gaps for a tool with no annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized and front-loaded with the core purpose in the first sentence. The example workflow and facet usage add value without being redundant. However, the 'Best Practice' section could be integrated more tightly, and some phrasing ('burning credits') is slightly informal, keeping it from a perfect score.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (2 parameters, no output schema, no annotations), the description is largely complete. It covers purpose, usage guidelines, and behavioral context like API credit conservation. The main gap is the lack of output details (what the count result looks like), but with no output schema, this is a minor omission in an otherwise thorough description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters thoroughly. The description adds some context by mentioning 'Use with facets to see distribution without burning credits on full results,' which reinforces the schema's facet description, but doesn't provide significant additional meaning beyond what's in the structured fields. Baseline 3 is appropriate when schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Get the total number of results for a search query') and resource ('search query'), distinguishing it from siblings like shodan_host_search by emphasizing it returns only counts, not actual results. The phrase 'without returning the actual results' explicitly differentiates its purpose from full search tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when to use this tool ('Useful for scoping searches before running full queries to avoid wasting API credits'), when not to use it (implied: when you need actual results, use shodan_host_search instead), and includes a detailed example workflow with alternatives. The 'Best Practice' section reinforces this with specific scenarios like large ICS/SCADA queries.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

shodan_dns_lookupC

Perform DNS lookups to resolve domain names to IP addresses.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostnamesYesArray of hostnames to resolve (e.g., ["example.com", "google.com"])

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It describes the basic function but lacks critical details such as rate limits, authentication requirements, error handling, or the format of returned data. For a tool interacting with an external API like Shodan, this omission is significant and could lead to misuse.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's function without any fluff or redundancy. It is appropriately sized and front-loaded, making it easy for an agent to parse quickly and understand the core purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of annotations and output schema, the description is incomplete for effective tool use. It doesn't explain what the tool returns (e.g., IP addresses, error messages), how results are structured, or any behavioral nuances like pagination or rate limiting. This leaves gaps that could hinder an agent's ability to invoke the tool correctly in a real-world context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, with the 'hostnames' parameter clearly documented as an array of strings. The description adds no additional semantic context beyond what the schema provides, such as examples of valid hostnames or constraints on the array size. This meets the baseline for high schema coverage but doesn't enhance understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with a specific verb ('Perform DNS lookups') and resource ('domain names to IP addresses'), making it immediately understandable. However, it doesn't explicitly differentiate from its sibling 'shodan_dns_reverse', which likely performs reverse DNS lookups, leaving some ambiguity about when to use each tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'shodan_dns_reverse' or other DNS-related tools. It states what the tool does but offers no context about appropriate use cases, prerequisites, or exclusions, leaving the agent to infer usage from the tool name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

shodan_dns_reverseB

Reverse DNS lookup to find hostnames associated with IP addresses.

ParametersJSON Schema
NameRequiredDescriptionDefault
ipsYesArray of IP addresses (e.g., ["8.8.8.8", "1.1.1.1"])

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool performs a 'lookup', implying a read-only operation, but does not specify whether it requires authentication, has rate limits, returns partial results on errors, or details the output format. For a tool with no annotations, this leaves significant behavioral gaps unaddressed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence that efficiently conveys the core function without unnecessary words. It is front-loaded with the essential information, making it easy to parse. Every part of the sentence earns its place by directly contributing to understanding the tool's purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity (one parameter, no output schema, no annotations), the description is minimally adequate. It covers the basic purpose but lacks details on usage context, behavioral traits, and output expectations. While it meets the minimum for a simple lookup tool, it does not provide a complete picture for effective agent use without additional context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100%, with the 'ips' parameter fully documented in the schema as an array of IP addresses. The description does not add any semantic details beyond what the schema provides, such as format constraints or examples. Given the high schema coverage, a baseline score of 3 is appropriate, as the description does not compensate but also does not detract.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Reverse DNS lookup to find hostnames associated with IP addresses.' It specifies the verb ('lookup'), resource ('hostnames'), and target ('IP addresses'), making the function unambiguous. However, it does not explicitly differentiate from sibling tools like 'shodan_dns_lookup', which likely performs forward DNS lookups, leaving some room for improvement in sibling distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It lacks explicit instructions on when to choose it over siblings such as 'shodan_dns_lookup' or other DNS-related tools, and does not mention any prerequisites or exclusions. This absence of contextual usage information limits its helpfulness for an AI agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

shodan_host_infoB

Get detailed information about a specific host by IP address. Returns all services, open ports, vulnerabilities, and historical data.

ParametersJSON Schema
NameRequiredDescriptionDefault
ipYesIP address to lookup (e.g., "8.8.8.8")
historyNoInclude historical data (default: false)

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions the types of data returned but doesn't cover critical aspects like rate limits, authentication requirements, error conditions, or response format. For a tool that likely queries an external API with potential constraints, this is a significant gap in transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is efficiently structured in two sentences: the first states the core purpose, and the second enumerates the returned data. It's front-loaded with the main action and avoids unnecessary verbiage, though it could be slightly more concise by integrating the data list into the first sentence.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and no output schema, the description partially compensates by listing return data types. However, it lacks details on authentication, rate limits, error handling, and exact response structure. For a tool with two parameters and likely external API dependencies, this leaves gaps in completeness for safe and effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with clear documentation of both parameters (ip and history). The description adds marginal value by implying the 'history' parameter controls historical data inclusion, but doesn't provide additional context beyond what the schema already states. Baseline 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and resource 'detailed information about a specific host by IP address', specifying the exact scope of data returned (services, open ports, vulnerabilities, historical data). It distinguishes from siblings like shodan_host_search (which searches rather than targets a specific IP) and shodan_dns_lookup (which focuses on DNS resolution rather than host details).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when you need detailed host information for a specific IP, but doesn't explicitly state when to use this tool versus alternatives like shodan_host_search (for broader searches) or shodan_dns_lookup (for DNS queries). No exclusions or prerequisites are mentioned, leaving some ambiguity about optimal use cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

shodan_portsA

Get a list of port numbers that Shodan crawls on the Internet. Useful for discovering what protocols are monitored.

Key ICS/SCADA Ports in Shodan:

  • 102: Siemens S7 PLCs

  • 502: Modbus TCP (most common ICS protocol)

  • 1911: Niagara Fox (building automation)

  • 2404: IEC 60870-5-104 (power systems)

  • 4840: OPC UA (modern ICS standard)

  • 20000: DNP3 (utilities/SCADA)

  • 44818: EtherNet/IP (Rockwell/Allen-Bradley)

  • 47808: BACnet (HVAC/building systems)

Use this to verify Shodan monitors your target protocol.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It describes what the tool does (returns a list of port numbers) and includes examples of key ports, which adds useful context. However, it lacks details on potential limitations, such as whether the list is static or updated, rate limits, or authentication needs, leaving gaps in transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose, but it includes a lengthy list of example ports that, while informative, may be excessive for a concise tool definition. Every sentence adds value, but the structure could be more streamlined by integrating the examples more tightly or summarizing them, making it slightly less efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has no parameters, no annotations, and no output schema, the description provides a good overview of purpose and usage. However, it lacks details on output format (e.g., list structure, data types) and doesn't address potential errors or behavioral nuances. For a tool with zero structured data, it's adequate but has clear gaps in completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0 parameters with 100% coverage, meaning no parameters are documented in the schema. The description doesn't need to add parameter details, as there are none to explain. It provides value by listing example ports, which aids understanding, but since there are no parameters, a baseline of 4 is appropriate, as it compensates well for the lack of schema content.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Get a list of port numbers that Shodan crawls on the Internet.' It specifies the verb ('Get') and resource ('list of port numbers'), making it easy to understand. However, it doesn't explicitly differentiate from siblings like 'shodan_protocols' or 'shodan_host_search', which might also relate to port/protocol discovery, so it doesn't reach the highest score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context on when to use the tool: 'Useful for discovering what protocols are monitored' and 'Use this to verify Shodan monitors your target protocol.' This gives practical guidance. However, it doesn't explicitly mention when not to use it or name alternatives among siblings, such as using 'shodan_protocols' for protocol names instead of port numbers, so it falls short of a perfect score.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

shodan_protocolsB

Get information about the protocols that Shodan supports for querying.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool retrieves information, implying a read-only operation, but doesn't clarify aspects like authentication requirements, rate limits, response format, or potential errors. For a tool with zero annotation coverage, this is a significant gap in transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's purpose without any fluff or redundancy. It's front-loaded with the core function, making it easy to parse quickly. Every word earns its place, achieving optimal conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (0 parameters, no output schema, no annotations), the description is adequate but minimal. It covers the basic purpose but lacks details on behavioral traits like response format or usage context. For a tool in a set with many siblings, more guidance would improve completeness, but it's not entirely inadequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0 parameters with 100% coverage, meaning no parameters are documented in the schema. The description doesn't add parameter details, which is appropriate since there are none to explain. This meets the baseline for tools with zero parameters, as there's no need to compensate for missing schema information.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Get information about the protocols that Shodan supports for querying.' It specifies the verb ('Get information') and resource ('protocols that Shodan supports'), making the function understandable. However, it doesn't explicitly differentiate from sibling tools like 'shodan_ports' or 'shodan_api_info', which might also provide related metadata.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention context, prerequisites, or exclusions, such as whether this is for general reference or a prerequisite for other queries. With multiple sibling tools available, this lack of differentiation leaves the agent without clear usage instructions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

shodan_query_tagsA

Get a list of popular tags for saved Shodan queries. Tags help discover trending search topics and common query categories.

Common ICS/SCADA Related Tags:

  • ics - Industrial Control Systems

  • scada - SCADA systems

  • industrial - Industrial equipment

  • malware - Malware-infected systems

  • webcam - IP cameras (often in facilities)

  • default - Default credentials/configs

Use to browse popular query categories and discover new search angles.

ParametersJSON Schema
NameRequiredDescriptionDefault
sizeNoNumber of tags to return (default: 10). Increase to 20-30 for comprehensive tag list.

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It describes what the tool returns (a list of popular tags) and hints at behavioral aspects like trending topics and common categories. However, it doesn't disclose critical details such as rate limits, authentication requirements, or whether the data is static or dynamically updated. The examples of tags (e.g., 'ics', 'scada') add useful context but don't fully cover behavioral traits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured and front-loaded with the core purpose in the first sentence. Each subsequent section (common tags and usage guidance) earns its place by adding practical value without redundancy. The bullet points for tags are efficient, and the overall length is appropriate for the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity (1 parameter, no output schema, no annotations), the description is largely complete. It covers purpose, usage, and parameter context adequately. However, without annotations or an output schema, it could benefit from more details on return format (e.g., structure of the tag list) or behavioral constraints, slightly reducing completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage for its single parameter 'size', so the baseline is 3. The description adds value by providing context on the parameter's purpose: it mentions 'comprehensive tag list' when increasing size, which helps the agent understand the semantic impact beyond the schema's technical details. However, it doesn't fully explain trade-offs or limits, keeping it from a perfect score.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Get a list of popular tags for saved Shodan queries.' It specifies the exact resource (tags for saved queries) and distinguishes it from siblings like shodan_query_search (which searches queries) and shodan_host_search (which searches hosts). The mention of 'saved Shodan queries' differentiates it from other tag-related tools that might exist.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context on when to use this tool: 'to browse popular query categories and discover new search angles.' It implies usage for exploration and discovery rather than direct querying. However, it doesn't explicitly state when NOT to use it or name specific alternatives among the siblings, though the purpose differentiation helps infer alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 11 tool updates
    • First observedshodan_api_info
    • First observedshodan_count
    • First observedshodan_dns_lookup
    • First observedshodan_dns_reverse
    • First observedshodan_exploits_search
    • First observedshodan_host_info
    • First observedshodan_host_search
    • First observedshodan_ports
    • First observedshodan_protocols
    • First observedshodan_query_search
    • First observedshodan_query_tags

TDQS

A3.7/5.0

Scored across 11 tools

Disambiguation4/5

Most tools have distinct purposes, such as shodan_count for result counts and shodan_host_search for detailed host searches. However, shodan_query_search and shodan_query_tags both relate to saved queries and could be slightly confusing, as they overlap in functionality for discovering community query patterns.

Naming Consistency5/5

All tool names follow a consistent snake_case pattern with a 'shodan_' prefix and descriptive verb_noun combinations, such as shodan_api_info and shodan_dns_lookup. This uniformity makes the tool set predictable and easy to navigate.

Tool Count5/5

With 11 tools, the server is well-scoped for Shodan's domain, covering API info, searches, DNS lookups, exploits, and query discovery. Each tool serves a clear purpose without redundancy, fitting typical server tool counts of 3-15.

Completeness4/5

The tool set provides comprehensive coverage for Shodan's core functionalities, including host and exploit searches, DNS operations, and query exploration. A minor gap is the lack of tools for managing saved searches or alerts, but agents can work around this with existing tools.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Provides access to Shodan API functionality, enabling AI assistants to query information about internet-connected devices for cybersecurity research and threat intelligence.
    23
    47
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Integrates Shodan search capabilities into MCP-compatible applications for discovering internet-connected devices. Enables domain searches, IP lookups, and advanced queries to identify exposed services, infrastructure mapping, and security analysis.
    3
    -