Masnavi vs Shodan

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

Masnavi logoMasnaviSecurity · Remote HTTP/SSERumi's complete Masnavi (25,635 beyts) — search, quote, verify and explain. Free, no auth.53GoodAuth: not declaredShodan logoShodanSecurity · Local subprocess (stdio)MCP server for Shodan API — device search, IP lookup, DNS, and CVE/CPE queries.68GreatAuth: not declared

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

Which MCP server should you choose?

Masnavi logoChoose Masnavi when

  • You need dedicated capabilities in the Security domain.
  • You prefer a remote HTTP/SSE transport.
  • You want tools like search, search_meaning, lookup.
Explore Masnavi

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

Feature & specification comparison

Rows where the two servers differ are marked.

SpecMasnavi logoMasnaviShodan logoShodan
CategorySecuritySecurity
Quality signal53/100 · Good68/100 · Great
Install commandConfirmedConfirmed
TransportRemote HTTP/SSELocal subprocess (stdio)
AuthNot declaredNot declared
PricingNot declaredNot declared
Required env varsNone listedSHODAN_API_KEY
Verified ownerCommunity listingCommunity listing
GitHub stars0179
Directory activity 1 views 0 installs 0 upvotes 1 views 0 installs 0 upvotes
Tools1311

Tools & capabilities

Masnavi tools 13

  • searchFull-text search across the Masnavi. Returns beyts that contain the query terms, ranked by relevance. Useful for finding where a theme, word, or phrase appears.
  • search_meaningSemantic search: find the beyts closest in MEANING to the query, in ANY language — English, Persian, Spanish, Turkish, Arabic, … . Use this when you have a theme, feeling, or idea rather than exact Persian words (e.g. 'feeling separated from your origin' → M1:1). Each hit carries a cosine-similarity score. status='unavailable' means the vector index is not built yet — fall back to `search`.
  • lookupFetch a specific beyt by its citation (e.g. 'M3:1278'), by daftar+beyt number, or by global beyt index. Optionally include surrounding beyts for context.
  • verifyGiven a candidate quote attributed to Rumi's Masnavi, check whether it actually appears. Returns status='exact' (with citation), 'fuzzy' (with similar candidates), or 'not_found'. USE THIS BEFORE QUOTING RUMI to avoid hallucination.
  • get_sectionRetrieve a full section (story / بخش) with all its beyts.
  • table_of_contentsBrowse the Masnavi's section list. Returns titled sections per daftar with beyt counts and ranges.
  • random_beytReturn a randomly-selected beyt, optionally restricted to a daftar.
  • get_rangeFetch ALL beyts between two endpoints, inclusive, grouped by section. Use this — NOT many calls to get_section or lookup — when a user asks for a full story, a long passage, or a sequence of beyts spanning multiple sections. Endpoints are canonical citations like 'M2:2608' and 'M2:2775', or global indices via start_global / end_global. Max range: 500 beyts.
  • find_sectionsFind sections (stories) by TITLE. Exact words first (phrase, then AND-of-tokens); when NO title contains the words, falls back to MEANING matches in any language (hits carry match='meaning' + a cosine score — verify with get_section before relying on one). Each match includes `first_citation` and `last_citation` — ready-to-use canonical citations (e.g. 'M2:2608'). To read a whole multi-section story, call get_range with the FIRST match's `first_citation` as start and the LAST match's `last_citation` as end. Do NOT construct a citation from `first_beyt_global` — that is a GLOBAL index (1..25635), not a daftar-local beyt number. Example: find_sections('ابلیس معاویه', daftar=2).
  • explainGet commentary (Persian + English) for a specific beyt of the Masnavi, attributed to a primary source (e.g. Abdolkarim Soroush's lectures). Returns the beyt text along with structured commentary entries. Each entry has source, author, language, body markdown, and confidence ('ai-draft' / 'reviewed' / 'verbatim'). Use this when a user asks 'what does this beyt mean' or 'what does <scholar> say about M1:1'.
  • search_divanFull-text search across the 34,603 beyts of the ghazals of the Divan-e Shams (Divan-e Kabir) — Rumi's lyric work, distinct from the Masnavi. Returns beyts with divan citations (G{ghazal}:{beyt}, e.g. G1393:1). Use when you know the exact Persian words; use search_divan_meaning for a theme in any language.
  • search_divan_meaningSemantic search over the Divan-e Shams ghazals: given a theme, feeling, or idea in ANY language, returns the GHAZALS closest in meaning — each with its best-matching couplet as a preview and a cosine score. Both couplet-level and whole-ghazal vectors are searched, so a ghazal whose overall theme matches is found even when no single couplet does. Fetch a full ghazal with get_ghazal. status='unavailable' means the index is not built — fall back to search_divan.
  • +1 more on the listing page

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.

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.

Masnavi

mcpServers (Claude Desktop / Cursor)
{
  "mcpServers": {
    "masnavi": {
      "url": "https://masnavi.ai/mcp"
    }
  }
}

Shodan

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

Frequently asked questions

Masnavi is categorized under Security and uses a remote HTTP/SSE transport. Shodan belongs to Security and uses a local stdio subprocess. Pick Masnavi for security work and Shodan 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.

Masnavi has no declared pricing — check the project's own site. Shodan 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 masnavi and shodan-2 as separate keys in the same mcpServers object, and your assistant will call tools from either one.

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