Shodan vs Vulnify

A side-by-side look at the Shodan and Vulnify MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.

Shodan logoShodanSecurity · Local subprocess (stdio)MCP server for Shodan API — device search, IP lookup, DNS, and CVE/CPE queries.68GreatAuth: not declaredVulnify logoVulnifySecurity · Local subprocess (stdio)Ask Vulnify before an AI agent acts. Check, record, and read policy decisions.63GoodAuth: not declared

Verdict: choose Shodan for security work as a local process; choose Vulnify for security as a local process. You can also run both side by side in one mcpServers block.

Which MCP server should you choose?

Shodan logoChoose Shodan when

  • You need dedicated capabilities in the Security domain.
  • You prefer a local stdio subprocess transport.
  • You have the keys it needs: SHODAN_API_KEY.
  • You want tools like ip_lookup, shodan_search, cve_lookup.
Explore Shodan

Vulnify logoChoose Vulnify when

  • You need dedicated capabilities in the Security domain.
  • You prefer a local stdio subprocess transport.
  • You have the keys it needs: VULNIFY_API_KEY.
  • You want tools like check_action, decide_action, get_decision.
Explore Vulnify

Feature & specification comparison

Rows where the two servers differ are marked.

SpecShodan logoShodanVulnify logoVulnify
CategorySecuritySecurity
Quality signal68/100 · Great63/100 · Good
Install commandConfirmedConfirmed
TransportLocal subprocess (stdio)Local subprocess (stdio)
AuthNot declaredNot declared
PricingNot declaredNot declared
Required env varsSHODAN_API_KEYVULNIFY_API_KEY
Verified ownerCommunity listingCommunity listing
GitHub stars1792
Directory activity 1 views 0 installs 0 upvotes 1 views 0 installs 0 upvotes
Tools117

Tools & capabilities

Shodan tools 11

  • ip_lookupRetrieve comprehensive information about an IP address, including geolocation, operating system, open ports, running services (product, version, CPE), known vulnerabilities (CVEs), SSL certificates, hostnames, and cloud provider details if available. Returns service banners and HTTP server information when present. Optional history returns historical banners; minify omits banners.
  • shodan_searchSearch Shodan's database of internet-connected devices. Returns detailed information about matching devices including services, vulnerabilities, and geographic distribution. Supports advanced search filters and returns facet statistics (default: by country). Costs 1 query credit when the query uses filters, plus 1 per page beyond the first. Use shodan_count (free) to get totals and facets without results.
  • cve_lookupQuery detailed vulnerability information from Shodan's CVEDB. Returns comprehensive CVE details including CVSS scores (v4/v3/v2), EPSS probability and ranking, KEV status, proposed mitigations, ransomware associations, and affected products (CPEs).
  • dns_lookupResolve domain names to IP addresses using Shodan's DNS service. Supports batch resolution of multiple hostnames in a single query. Returns IP addresses mapped to their corresponding hostnames.
  • reverse_dns_lookupPerform reverse DNS lookups to find hostnames associated with IP addresses. Supports batch lookups of multiple IP addresses in a single query. Returns all known hostnames for each IP address, with clear indication when no hostnames are found.
  • cpe_lookupSearch for Common Platform Enumeration (CPE) entries by product name in Shodan's CVEDB. Supports pagination and can return either full CPE details or just the total count. Useful for identifying specific versions and configurations of software and hardware.
  • cves_by_productSearch for vulnerabilities affecting specific products or CPEs. Supports filtering by KEV status, sorting by EPSS score, date ranges, and pagination. Can search by product name or CPE 2.3 identifier. Returns detailed vulnerability information including severity scores and impact assessments.
  • shodan_countGet the total number of Shodan results for a query, with optional facet breakdowns (e.g. by country, org, port). Free: does not consume query credits. Use search_filters to list valid filters and facets.
  • domain_infoGet subdomains and DNS records for a domain from Shodan. Costs 1 query credit per lookup.
  • api_infoShow the Shodan API plan, remaining query and scan credits, monitored IPs, and usage limits for the configured API key. Free: does not consume credits.
  • search_filtersList the search filters and facets Shodan supports. Use this to build valid shodan_search and shodan_count queries and facets. Free: does not consume credits.

Vulnify tools 7

  • check_actionUse for what-if questions when you are not about to act. Dry-run a proposed action against the organization policies (POST /v1/policies/test, one case, stored policies). This skips the PII scan and records nothing: no security event and no audit entry. There is no content field and no DLP scan. The result has no event id and no finalDecision. decide_action is the call that records a decision. Dry runs are limited to 60 requests per minute per key. test_policies covers up to 200 cases in one call.
  • decide_actionCall this before a consequential action with any tool or connector: sending an email or message, exporting or sharing data, deleting data, writing to production or financial records, payments, or external API writes. ALLOW: proceed. REVIEW: hold the action, tell the user it waits for approval in Vulnify, and check again with get_decision. BLOCK: skip the action and explain the reasons. Records a decision for a proposed action (POST /v1/events). This writes a security event and an audit entry, counts toward the organization quota, and may open a human review. The finalDecision field is the authoritative result. decision is what was stored and does not change when a review is resolved. finalDecision stays REVIEW until a human approves, denies, or the review expires. This tool does not approve the review. A REVIEW or BLOCK finalDecision means the action was not allowed. Optional content is scanned in memory and is not stored. An idempotencyKey makes a retry return the same event.
  • get_decisionRead a recorded decision (GET /v1/events/{id}), including a REVIEW. finalDecision is REVIEW while the review is pending, then ALLOW after approval or BLOCK after denial or expiry. decision itself does not change. The finalDecision field is the authoritative result. waitMs polls until finalDecision is ALLOW or BLOCK, or until the bounded wait elapses (30 seconds maximum). waitTimedOut is true when the wait ended and finalDecision is still REVIEW. This does not approve or deny the review.
  • list_policiesList the organization policies as code (GET /v1/policies). Returns apiVersion vulnify.io/v1 and policies sorted by name. Read-only. Any non-revoked API key of the organization may call it. Limited to 60 requests per minute per key.
  • test_policiesEvaluate up to 200 policy cases without recording an event (POST /v1/policies/test). When policies is omitted, the enabled stored policies are used. When policies is set, those proposed policies are evaluated instead and nothing is written. This skips the PII scan: cases have no content field. pass is null when a case omits expect. One call covers up to 200 cases. Limited to 60 requests per minute per key.
  • plan_policy_changesDiff policy creates, updates, and deletes without writing them (POST /v1/policies/apply). dryRun is forced to true and cannot be turned off. Nothing is stored and no audit entry is written. prune only marks missing policies for deletion in the plan. Requires an org-wide LIVE API key; a TEST key or an agent-bound key is refused with 403. This tool does not apply the plan.
  • check_mcp_tool_callRecords a decision for a downstream MCP tool call (POST /v1/gateway/mcp). Vulnify maps the tool name to an action by substring and returns the same recorded decision as decide_action, including an id. This writes a security event and an audit entry. The tool arguments are not executed. The finalDecision field is the authoritative result. A REVIEW or BLOCK finalDecision means the downstream tool was not allowed. This server cannot approve the review. An idempotencyKey makes a retry return the same event.

Ready-to-paste client configs

Paste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.

Shodan

mcpServers (Claude Desktop / Cursor)
{
  "mcpServers": {
    "shodan-2": {
      "command": "npx",
      "args": [
        "-y",
        "@burtthecoder/mcp-shodan"
      ],
      "env": {
        "SHODAN_API_KEY": "YOUR_SHODAN_API_KEY_HERE"
      }
    }
  }
}

Vulnify

mcpServers (Claude Desktop / Cursor)
{
  "mcpServers": {
    "vulnify": {
      "command": "npx",
      "args": [
        "-y",
        "@vulnify/mcp"
      ],
      "env": {
        "VULNIFY_API_KEY": "YOUR_VULNIFY_API_KEY_HERE"
      }
    }
  }
}

Frequently asked questions

Shodan is categorized under Security and uses a local stdio subprocess. Vulnify belongs to Security and uses a local stdio subprocess. Pick Shodan for security work and Vulnify for security.

Copy the mcpServers block from the config section on this page into your client's config (for example claude_desktop_config.json or ~/.cursor/mcp.json), then fully restart the client.

Shodan has no declared pricing — check the project's own site. Vulnify has no declared pricing — check the project's own site. If a server needs environment variables such as API keys, define them under the env key in your client's MCP config.

Yes. MCP clients support multiple servers: add shodan-2 and vulnify as separate keys in the same mcpServers object, and your assistant will call tools from either one.

On AllMCPs, Shodan has a quality signal of 68/100 (Great) with 1 views, 0 installs and 179 GitHub stars. Vulnify has 63/100 (Good) with 1 views, 0 installs and 2 GitHub stars.