Skip to main content
Glama

shodan-mcp

A minimal Model Context Protocol server for Shodan. It exposes only the endpoints needed for two things: checking what your own infrastructure exposes to the internet, and searching Shodan's data for general reconnaissance. One file, no extra dependencies beyond the official MCP SDK.

Quick start

git clone https://github.com/aethrox/shodan-mcp.git
cd shodan-mcp
npm install

Register it with Claude Code:

claude mcp add shodan -s user -e SHODAN_API_KEY=your-key-here -- node /absolute/path/to/index.js

Or run it standalone (it speaks MCP over stdio):

SHODAN_API_KEY=your-key-here node index.js

A Shodan API key is required either way. Instead of exporting SHODAN_API_KEY yourself, you can copy .env.example to .env and put the key there; the server loads it automatically on startup. .env is gitignored, so it never gets committed.

cp .env.example .env
# then edit .env and set SHODAN_API_KEY

Related MCP server: Shodan MCP Server

Tools

Tool

What it does

shodan_my_ip

Public IP Shodan sees this API key's requests coming from. Starting point for scanning your own infrastructure.

shodan_host_lookup

Full Shodan record for one IP: open ports, banners, detected products/versions, known vulnerabilities.

shodan_search

Search Shodan's device database using Shodan search syntax (country:, net:, vuln:, ...).

shodan_cve_lookup

CVE details from Shodan's CVEDB: CVSS score, affected CPEs, how many exposed hosts Shodan currently sees.

shodan_cves_by_product

CVEs affecting a given CPE (product + version).

shodan_host_count

Count hosts matching a search query without spending query credits.

shodan_search_filters

List the search filters Shodan supports (country, port, net, vuln, ...).

shodan_dns_domain

Subdomains and DNS entries Shodan has seen for a domain.

shodan_dns_resolve

Resolve hostnames to IP addresses.

shodan_dns_reverse

Reverse-resolve IP addresses to hostnames.

shodan_account_info

This API key's plan and remaining query/scan credits.

Requirements

  • Node.js 20+

  • A Shodan API key with the plan tier needed for the endpoints you use (host lookup and search require more than the free tier)

Limitations

  • No caching or rate-limit handling: requests go straight to the Shodan API, so hitting your plan's rate limit surfaces as a raw API error.

  • No pagination helper for shodan_search; multi-page results need repeated calls with the page argument.

  • The API key is passed as a plain environment variable to the MCP process, same as any other stdio MCP server. Don't commit it, and be mindful of where your MCP client config file (e.g. claude mcp add output) ends up stored.

License

MIT

Available Tools

11 tools
shodan_account_infoAccount plan and creditsA
Read-only

Show this API key's plan and remaining query/scan credits. Check this before running credit-consuming operations.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

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

The readOnlyHint annotation already ensures the agent knows it's safe. The description adds context about the specific information returned and the operational purpose (monitoring credits), which is useful beyond the annotation.

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?

Two sentences, tightly packed with purpose and usage guidance. No filler words, and the most important information (what it shows) is first.

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

Completeness5/5

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

For a simple, read-only tool with no parameters and no output schema, the description fully communicates what the agent will receive (plan and credits) and why to use it. It is complete for the tool's complexity.

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?

With zero parameters, the schema is fully covered; the description adds context about what the tool accesses (the API key's plan and credits) rather than parameter syntax, which is not needed. Baseline for 0 params is 4.

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 a specific verb ('Show') and resource ('this API key's plan and remaining query/scan credits'). It is distinct from sibling tools, which all perform lookups or searches, not account-level information queries.

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?

Explicitly advises to 'Check this before running credit-consuming operations,' which tells the agent when to use this tool and why. Though no alternative tool is named, the guidance is clear and actionable.

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

shodan_cve_lookupCVE lookupA
Read-only

Fetch details for a specific CVE from Shodan's CVEDB, including CVSS score, affected CPEs, and how many internet-facing hosts Shodan currently sees running vulnerable versions.

ParametersJSON Schema
NameRequiredDescriptionDefault
cve_idYesCVE identifier, e.g. CVE-2021-44228

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, so the safety profile is known. The description adds valuable behavioral context beyond annotations by specifying exactly what data is returned (CVSS score, affected CPEs, and current vulnerable host count), which is useful for an agent deciding whether to call it.

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, front-loaded sentence that immediately states the action and resource. Every word contributes meaning: it names the source (CVEDB), the purpose (specific CVE details), and the key outputs, with no filler.

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

Completeness5/5

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

For a tool with one required parameter and no output schema, the description is sufficiently complete. It explains what the tool does, what it returns, and the main data fields, enabling an agent to select and invoke it correctly without needing further elaboration.

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 coverage is 100%, with the parameter cve_id fully described as 'CVE identifier' and an example provided. The description does not add meaning beyond the schema beyond reinforcing that it is for a specific CVE, which is already implied by the schema field name and description.

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 uses the specific verb 'Fetch' and clearly identifies the resource: 'details for a specific CVE from Shodan's CVEDB'. It enumerates what is included (CVSS score, affected CPEs, host count), which differentiates it from sibling tools like shodan_cves_by_product.

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 clearly implies usage: use this when you have a specific CVE ID and need its details. It does not explicitly state when-not-to-use or mention alternatives, but the phrase 'for a specific CVE' provides clear context.

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

shodan_cves_by_productCVEs by productA
Read-only

List recent/known CVEs affecting a given CPE (product+version), e.g. 'cpe:2.3:a:apache:log4j'. Useful for tracking what's currently going on for a specific technology.

ParametersJSON Schema
NameRequiredDescriptionDefault
cpe23YesCPE 2.3 string to search vulnerabilities for
limitNoMax results (default 100)

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so the safe-read nature is covered. The description adds the 'recent/known' qualifier and an example CPE, but does not disclose return format, pagination behavior, or any potential quirks like CPE format requirements beyond the example. This is similar to the TDQS 4.3 example, which scored a 3.

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 sentence with an example and a usage note. It is front-loaded, contains zero filler, and every piece of information earns its place.

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

Completeness5/5

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

For a simple read-only tool with full schema coverage and no output schema, the description sufficiently explains what it does, what input is needed (with a direct example), and when to use it. The agent can confidently invoke the tool with minimal guesswork.

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 coverage is 100% with both 'cpe23' and 'limit' already described. The description's example adds a concrete illustration, but that is a minor addition over the schema. Baseline of 3 is appropriate.

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 a specific action ('List recent/known CVEs') and resource ('given a CPE product+version'), with a concrete example. It does not explicitly contrast with the sibling shodan_cve_lookup tool, but the focus on CPE rather than CVE ID provides implicit differentiation.

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 phrase 'Useful for tracking what's currently going on for a specific technology' provides a clear context for when to use the tool. It does not mention exclusions or alternatives, but the use case is specific enough to guide an agent.

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

shodan_dns_domainDomain DNS infoA
Read-only

Look up subdomains and DNS entries Shodan has seen for a domain. Use this to map out your own domain's exposed surface.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesDomain name, e.g. example.com

TDQS

A4.2/5.0
Behavior4/5

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

The description adds behavioral context beyond the readOnlyHint annotation by clarifying that data is what 'Shodan has seen,' implying historical/passive DNS data rather than a live query. It does not discuss potential limitations like data staleness or completeness, but the annotation already indicates a non-mutating operation, and the description adds meaningful context above that.

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 two sentences and front-loaded with the core function. The first sentence states the purpose, the second adds usage guidance. There is no redundant information or filler.

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?

The tool is simple with one parameter, and the description conveys the primary output (subdomains and DNS entries) and a clear use case. There is no output schema, but the description provides enough high-level context for an agent to understand what to expect. It could mention output format or that results are based on Shodan's historical database, but the current level is adequate for typical 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?

The input schema fully describes the single 'domain' parameter with a clear example. The description does not add additional parameter-level semantics beyond restating 'for a domain,' so it provides no extra value over the schema's 100% coverage. The baseline of 3 applies.

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 states a specific verb ('Look up') and resource ('subdomains and DNS entries Shodan has seen for a domain'), clearly distinguishing it from sibling tools like shodan_dns_resolve and shodan_dns_reverse. It is immediately obvious what the tool does.

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 a clear use case: 'Use this to map out your own domain's exposed surface.' This gives context for when to use the tool, though it does not explicitly mention alternatives or when not to use it. That is sufficient for a simple tool.

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

shodan_dns_resolveResolve hostnamesB
Read-only

Resolve one or more hostnames to their IP addresses.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostnamesYesComma-separated list of hostnames to resolve

TDQS

B3.4/5.0
Behavior2/5

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

The annotation readOnlyHint: true already indicates a safe read operation. The description adds no further behavioral context, such as how resolution is performed (e.g., via Shodan's database), potential rate limits, or failure handling.

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 with no redundant text or fluff.

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?

For a simple one-parameter lookup tool, the description adequately indicates the action and result (IP addresses). It does not detail the output format, but the simplicity of the operation makes this less critical. However, there is no mention of error behavior, so a near-perfect score is warranted.

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% and the only parameter (hostnames) is fully described as a comma-separated list. The description's 'one or more' adds a slight nuance but does not significantly exceed schema information, so baseline 3 applies.

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 uses a specific verb ('Resolve') plus resource ('hostnames') and outcome ('to their IP addresses'). It clearly distinguishes from siblings like 'shodan_dns_reverse', which resolves IPs to hostnames.

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?

No guidance is provided about when to use this tool versus alternatives such as shodan_dns_reverse or shodan_dns_domain. The description only states the action without contextual cues or exclusions.

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

shodan_dns_reverseReverse DNS lookupB
Read-only

Look up the hostnames associated with one or more IP addresses.

ParametersJSON Schema
NameRequiredDescriptionDefault
ipsYesComma-separated list of IP addresses to reverse-resolve

TDQS

B3.1/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, which tells the agent this is a safe read operation. The description adds no extra behavioral context such as output format, rate limits, or error conditions. The phrase 'associated hostnames' is the only addition, but that is already implicit in the schema and title, so it adds little value.

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, focused sentence with no fluff or irrelevant details. It is front-loaded with the action and resource, making it easy to parse 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?

For a simple 1-parameter tool with annotations, the description is adequate but not thorough. There is no output schema, so the description could have clarified the return format (e.g., a mapping of IPs to hostnames) and could have mentioned that this is the reverse counterpart to shodan_dns_resolve. Given its simplicity, the description is minimally complete but leaves room for improvement.

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 coverage is 100% (the single 'ips' parameter has a clear description). The tool description adds no further meaning beyond what the schema provides, only restating that it handles one or more IPs. Baseline 3 is appropriate since the schema does the heavy lifting.

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 performs reverse DNS lookup, using a specific verb ('look up') and resource ('hostnames associated with IP addresses'). It does not explicitly differentiate from the sibling tool shodan_dns_resolve (forward lookup), so it doesn't earn a 5, but the purpose is unambiguous.

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?

There is no guidance on when to use this tool versus alternatives. It does not mention that shodan_dns_resolve is the forward-lookup counterpart, nor any context like prerequisites or typical use cases. The description implies usage by stating the function, but siblings are not referenced.

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

shodan_host_countCount search resultsA
Read-only

Count how many hosts match a Shodan search query without spending query credits. Use this for quick world-scale stats (e.g. how many hosts expose a given CVE) before running a full search.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesShodan search query

TDQS

A4.3/5.0
Behavior4/5

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

With readOnlyHint=true already indicating a safe read operation, the description adds valuable behavioral context: 'without spending query credits' and 'quick' disclose cost and performance traits. It does not detail response format, but the count semantics are implied, so it goes beyond the annotation without contradicting it.

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 two sentences, front-loaded with the core action, and every part earns its place. It is concise and free of redundant wording, achieving high efficiency.

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

Completeness5/5

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

For a one-parameter tool with no output schema, the description fully covers what the tool does, when to use it, and its cost behavior. The return value (count) is clear from the description, making it contextually complete.

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 coverage is 100% for the single 'query' parameter, matching the description's 'Shodan search query.' The description adds no new syntax or format details beyond the schema, so the baseline 3 is appropriate.

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 counts hosts matching a Shodan search query, distinguishing it from sibling tools like shodan_search by emphasizing it does not spend query credits. The verb 'count' and resource 'hosts' are specific, and the contrast with 'full search' differentiates it from search siblings.

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 explicit usage context: 'Use this for quick world-scale stats ... before running a full search.' It gives an example (CVE exposure) and implies the alternative of a full search, though it does not explicitly name the sibling tool or state when not to use it in detail.

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

shodan_host_lookupHost lookupA
Read-only

Look up everything Shodan knows about a single IP address: open ports, banners, detected products/versions, and known vulnerabilities. Use this to check what your own infrastructure exposes.

ParametersJSON Schema
NameRequiredDescriptionDefault
ipYesIPv4 or IPv6 address to look up

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, and the description adds valuable context about the returned data (open ports, banners, products, vulnerabilities) beyond what annotations provide. It does not discuss rate limits or errors, but for a read-only single-IP lookup, the behavioral picture is adequately transparent.

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 two sentences, front-loaded with the core purpose and followed by concrete detail about what the lookup returns. Every sentence provides useful information with no redundancy or filler.

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

Completeness5/5

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

For a simple read-only tool with one parameter and no output schema, the description effectively explains both the return content (ports, banners, products, vulnerabilities) and the intended use case. No important context is missing for correct selection and invocation.

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 covers 100% of the single parameter with a clear description ('IPv4 or IPv6 address to look up'). The tool description adds no additional semantic detail about the parameter beyond restating 'single IP address', so the baseline of 3 applies.

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 uses a specific verb ('Look up') with a clear resource ('single IP address') and enumerates the data returned (open ports, banners, products/versions, vulnerabilities). This clearly distinguishes it from sibling tools like shodan_search (which searches across many IPs) and shodan_cve_lookup (which focuses on CVEs).

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 a clear usage context ('Use this to check what your own infrastructure exposes'), which implies when this tool is appropriate. However, it does not explicitly mention alternatives or when-not-to-use, so it stops short of the highest score.

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

shodan_my_ipMy public IPA
Read-only

Returns the public IP address Shodan sees this API key's requests coming from. Use this as the starting point for scanning your own infrastructure.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

Beyond the readOnlyHint annotation, the description discloses an important nuance: the IP is from Shodan's perspective ('Shodan sees'), not necessarily the local machine's IP. This adds context about the tool's behavior and helps set expectations for the returned value.

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?

Two sentences, no filler. The first sentence states the core function, and the second provides usage context. Every word earns its place, and the structure is front-loaded with the key verb.

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

Completeness5/5

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

For a read-only, zero-parameter tool with no output schema, the description is complete. It explains what the tool returns, the source of the IP, and a recommended use case. No additional information is necessary for an agent to select and invoke it correctly.

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 zero parameters, so the schema covers 100% of the parameter space. The description adds semantic meaning by explaining what the output represents, which is more valuable than a bare schema. Since there are no parameters, a baseline of 4 is appropriate.

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 action: 'Returns the public IP address Shodan sees this API key's requests coming from.' This is a specific verb+resource (returns public IP) and distinguishes itself from sibling tools that handle CVEs, DNS, host lookup, and search.

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?

It provides a clear use case: 'Use this as the starting point for scanning your own infrastructure.' This gives the agent context for when to invoke it, though it doesn't explicitly mention alternatives or when-not-to-use. The guidance is sufficient for a simple tool.

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

shodan_search_filtersList search filtersA
Read-only

List the search filters Shodan supports (e.g. country, port, net, vuln, product). Use this before writing a shodan_search query to confirm the right filter name.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint: true, and the description aligns by stating it lists filters. It adds the example filters and the fact that it's a metadata lookup, but doesn't describe return format or any other behavior. Since this is a trivial read-only operation with no parameters, the description provides adequate but not exceptional 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?

Two sentences, front-loaded with the main action. The first sentence states function and examples; the second gives usage guidance. No redundant details.

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

Completeness5/5

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

For a zero-parameter, read-only list tool, the description fully covers its purpose and usage context. It doesn't have an output schema, but the description doesn't need to explain return values for a simple list of filter names. The sibling tools are all distinct, and this description positions the tool correctly.

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?

No parameters exist, and the input schema confirms an empty properties object. Per the rubric, 0 parameters yields a baseline of 4. The description doesn't need to explain any parameters.

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 uses a specific verb 'List' with a clear resource 'search filters Shodan supports,' and provides concrete examples (country, port, net, vuln, product). This clearly distinguishes it from sibling tools like shodan_search, which executes queries, while this is about filter metadata.

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?

Explicitly states when to use: 'before writing a shodan_search query' and purpose 'to confirm the right filter name.' This provides clear context for an AI agent. It doesn't explicitly mention alternatives or when not to use it, but the instruction is sufficient.

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 updatesv1.0.0
    • First observedshodan_account_info
    • First observedshodan_cve_lookup
    • First observedshodan_cves_by_product
    • First observedshodan_dns_domain
    • First observedshodan_dns_resolve
    • First observedshodan_dns_reverse
    • First observedshodan_host_count
    • First observedshodan_host_lookup
    • First observedshodan_my_ip
    • First observedshodan_search
    • First observedshodan_search_filters

TDQS

A3.9/5.0

Scored across 11 tools

Disambiguation5/5

Each tool targets a distinct Shodan resource and action: CVE lookup, CVE-by-product, host count, DNS resolve/reverse/domain, host lookup, search, filters, account info, and my IP. There is no functional overlap; even similar tools like host_count and search are clearly differentiated by purpose.

Naming Consistency4/5

All tools share the 'shodan_' prefix and mostly follow a descriptive pattern of resource-action or resource-attribute (e.g., cve_lookup, dns_resolve, host_count). Minor exceptions like 'my_ip' and 'cves_by_product' are still predictable and readable.

Tool Count5/5

11 tools is a well-scoped count for a Shodan MCP server. It covers the major Shodan API surfaces (CVE, DNS, host, search, account) without unnecessary bloat or missing essentials.

Completeness4/5

The set covers the core Shodan workflows: search, host details, DNS reconnaissance, CVE intelligence, and credit management. Some advanced features like alerts or exploit lookups are absent, but the surface is complete enough for typical threat intelligence and infrastructure assessment tasks.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    MCP server for querying the Shodan API and Shodan CVEDB. This server provides tools for IP lookups, device searches, DNS lookups, vulnerability queries, CPE lookups, and more.
    7
    520 npm
    171
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    A WebSocket server that provides MCP interface for searching and retrieving information about internet-connected devices, IP addresses, DNS data, and CVE vulnerabilities through the Shodan API.
    3
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    This is a Model Context Protocol (MCP) server that provides access to the Shodan API. It allows you to programmatically query Shodan for information about devices, vulnerabilities, and more.
    2
    -