Skip to main content
AllMCPs
BrowseBestCategoriesStackCompareToolsGuidesBlog
Log in Submit MCP

Stay in the loop

Get new MCP servers and top picks in your inbox.

AllMCPs

The open directory for discovering and installing Model Context Protocol servers.

AllMCPs on GitHub (opens in a new tab)
Launched onTiny Startupstinystartups.com
Explore
  • Browse servers
  • Best MCP servers
  • Categories
  • MCP clients
  • Agent prompts
  • Stack Builder
  • Compare servers
  • Random discovery New
  • Submit a server
  • Pricing & Boost Boost
Learn
  • Guides hub
  • What is MCP?
  • Install guide
  • Build an MCP server
  • Deploy an MCP server
  • Security guide
  • Troubleshooting
  • MCP for SEO & AEO
  • Protocol versioning
  • Transports: stdio vs HTTP
  • State of MCP (stats)
  • Blog & updates
Tools
  • All developer tools
  • Config generator
  • Config validator
  • Config auditor
  • MCP playground
  • Token calculator
  • OpenAPI → MCP
  • Badge generator
For agents
  • REST API docs
  • Trust & traffic Live
  • Remote MCP server SSE ↗ (opens in a new tab)
  • llms.txt ↗ (opens in a new tab)
  • Catalog JSON ↗ (opens in a new tab)
Company
  • About
  • Advertise Sponsor
  • Contact
  • GitHub ↗ (opens in a new tab)
  • Terms
  • Privacy
AllMCPs VerifiedAllMCPs VerifiedFeatured on Nick LaunchesFeatured on Nick LaunchesLaunch Llama NewsletterLaunch Llama NewsletterVerified DR - allmcps.comVerified DR - allmcps.comFeatured on SaaSGrowFeatured on SaaSGrowFeatured on Twelve ToolsFeatured on Twelve ToolsFeatured on Saaspa.geFeatured on Saaspa.geFeatured on Findly.toolsFeatured on Findly.toolsFeatured on Startup FameFeatured on Startup FameFeatured on LaunchKiwiFeatured on LaunchKiwiFeatured on ScrollLaunchFeatured on ScrollLaunchFeatured on DailyPingsFeatured on DailyPingsFazier badgeFazier badgeFeatured on NewTool.siteFeatured on NewTool.siteFeatured on saasfame.comFeatured on saasfame.comDR Checker - Domain RatingDR Checker - Domain RatingListed on Turbo0Listed on Turbo0Launched on LaunchBoard - Product Launch PlatformLaunched on LaunchBoard - Product Launch PlatformList on SimilarlabsList on Similarlabshttps://codetrendy.comhttps://codetrendy.comListed on DevTool.ioFeatured on BuildlistFeatured on BuildlistLaunched on Tiny StartupsFeatured on ShowMeBestAIFeatured on ShowMeBestAIFind us on LaunchZoneFind us on LaunchZoneAllMCPs VerifiedAllMCPs VerifiedFeatured on Nick LaunchesFeatured on Nick LaunchesLaunch Llama NewsletterLaunch Llama NewsletterVerified DR - allmcps.comVerified DR - allmcps.comFeatured on SaaSGrowFeatured on SaaSGrowFeatured on Twelve ToolsFeatured on Twelve ToolsFeatured on Saaspa.geFeatured on Saaspa.geFeatured on Findly.toolsFeatured on Findly.toolsFeatured on Startup FameFeatured on Startup FameFeatured on LaunchKiwiFeatured on LaunchKiwiFeatured on ScrollLaunchFeatured on ScrollLaunchFeatured on DailyPingsFeatured on DailyPingsFazier badgeFazier badgeFeatured on NewTool.siteFeatured on NewTool.siteFeatured on saasfame.comFeatured on saasfame.comDR Checker - Domain RatingDR Checker - Domain RatingListed on Turbo0Listed on Turbo0Launched on LaunchBoard - Product Launch PlatformLaunched on LaunchBoard - Product Launch PlatformList on SimilarlabsList on Similarlabshttps://codetrendy.comhttps://codetrendy.comListed on DevTool.ioFeatured on BuildlistFeatured on BuildlistLaunched on Tiny StartupsFeatured on ShowMeBestAIFeatured on ShowMeBestAIFind us on LaunchZoneFind us on LaunchZone
© 2026 Jackalope Digital LLC. All rights reserved.
  1. Home
  2. Browse
  3. MCP Server Malcolm
  4. vs Intodns MCP Server
Side-by-Side Model Context Protocol Comparison

MCP Server Malcolm vs Intodns MCP Server

In-depth architectural comparison of the MCP Server Malcolm and Intodns MCP Server MCP servers. Compare execution transports, security boundaries, tool capabilities, quality scores, and ready-to-paste client installation snippets for Claude, Cursor, Windsurf, and VS Code.

At a Glance & Executive Verdict

MCP Server Malcolm
Security · Local stdio
Quality: 57/100 (Good) | Auth: other
Intodns MCP Server
Security · Local stdio
Quality: 65/100 (Great) | Auth: No auth required
Verdict Summary: Choose MCP Server Malcolm if you need specialized Security tools running via a local process. Choose Intodns MCP Server if your workspace requires Security integration with local subprocess execution. Both servers can be configured concurrently in your client's mcpServers manifest.

Which MCP Server Should You Choose?

MCP Server Malcolm logo

Choose MCP Server Malcolm when:

  • You need dedicated capabilities in the Security domain.
  • You prefer local stdio subprocess transport architecture.
  • Your security boundary fits: other (Free / Open Source).
  • Primary tools included: search_dsl, count, list_indices.
Explore MCP Server Malcolm Details
Intodns MCP Server logo

Choose Intodns MCP Server when:

  • You need dedicated capabilities in the Security domain.
  • You prefer local stdio subprocess transport architecture.
  • Your security boundary fits: No auth required (Free / Open Source).
  • Primary tools included: scan_domain, nis2_quickscan, get_everything_report.
Explore Intodns MCP Server Details

Feature & Specification Comparison

Specification
MCP Server Malcolm logo
MCP Server Malcolm
nagameTW
Security
Intodns MCP Server logo
Intodns MCP Server
RoscoNL
Security
SummaryThe first MCP server for Malcolm, the open-source network traffic analysis suite (Zeek + Suricata + Arkime + OpenSearch + NetBox). Gives AI agents structured, threat-hunting access: search and aggregate traffic, discover fields, query Suricata alerts, browse Arkime sessions, and resolve NetBox assets. Read-only by default; opt-in, audited write classes for alerts, tagging, hunts, and PCAP upload. pip install mcp-server-malcolmFree DNS and email security scanner for AI assistants. DNS, SPF, DKIM, DMARC, DNSSEC, MTA-STS, BIMI, TLS/STARTTLS, FCrDNS, CAA, TLSA/DANE, blacklist and full-deliverability checks, plus security-header/CSP analysis and bookmarkable report snapshots, via the IntoDNS.ai API. No signup or API key. npx intodns-mcp

Tools & Capabilities Breakdown

MCP Server Malcolm Tools (51)

search_dsl
Run a raw OpenSearch DSL query and return its hits plus aggregations. Use this for full DSL control over the query and aggregation bodies. When you only need a match count and not the documents, use count. For Malcolm's simpler field-filter syntax instead of raw DSL, use malcolm_search. Aggregations honor the time filter inside the DSL body, so there is no hidden default time window. Returns the raw OpenSearch _search response. Both input guards run before any request leaves this server: malformed query_dsl, and an index containing /, ? or .., are refused as input errors rather than costing an upstream scan. When the query is easier to say as an Arkime expression, compile it with arkime_build_query and hand the index and query_dsl it returns straight to this tool — serialise its query_dsl object to a JSON string first, which is what this parameter declares.
count
Count documents matching a DSL query clause, without returning the documents. Use this instead of search_dsl when you only need the number of matches, not the documents themselves. Note the query_dsl shape differs from search_dsl's — the schema says how. Returns the raw OpenSearch _count response ({"count": N, ...}). This tool takes no time arguments and applies no default window, so a bare call counts everything the index still holds, which on any real capture is millions of documents. Bound it with a range clause inside query_dsl, use malcolm_search when you want a human-readable time range, or arkime_sessions_summary when you want byte and packet totals beside the count.

Ready-to-Paste Client Configurations

Paste either (or both) of these JSON server blocks into your client config file (e.g. claude_desktop_config.json or ~/.cursor/mcp.json).

MCP Server Malcolm Configuration
mcpServers (Claude Desktop / Cursor)
{
  "mcpServers": {
    "nagametw-mcp-server-malcolm": {
      "command": "uvx",
      "args": [
        "mcp-server-malcolm"
      ]
    }
  }
}
Intodns MCP Server Configuration
mcpServers (Claude Desktop / Cursor)
{
  "mcpServers": {
    "rosconl-intodns-mcp-server": {
      "command": "npx",
      "args": [
        "-y",
        "intodns-mcp"
      ]
    }
  }
}

Frequently Asked Questions

MCP Server Malcolm is categorized under Security and uses a local stdio subprocess. In contrast, Intodns MCP Server belongs to Security using local stdio subprocess. Select MCP Server Malcolm when you need capabilities focused on security and Intodns MCP Server when you require tools for security.

More alternatives to MCP Server MalcolmMore alternatives to Intodns MCP ServerSecurity category hub

Related MCP Server Comparisons

Popular comparisons with MCP Server Malcolm

  • MCP Shodan logoMCP Server Malcolm vs MCP Shodan
  • Wireshark MCP logoMCP Server Malcolm vs Wireshark MCP
  • MCP Server logoMCP Server Malcolm vs MCP Server
  • Ida Pro MCP logoMCP Server Malcolm vs Ida Pro MCP

Popular comparisons with Intodns MCP Server

Category & ScopeSecuritySecurity
Quality signal57/100 (Good)65/100 (Great)
Transport ProtocolLocal Subprocess (stdio)Local Subprocess (stdio)
Auth RequirementotherNo auth required
Pricing ModelFree / Open SourceFree / Open Source
Required Env VarsNone requiredNone required
Compatible Clients
Claude DesktopCursorWindsurfClineVS Code
Claude DesktopCursorWindsurfClineVS Code
Install path signaluvx · highnpx · high
Engagement & Health 2 views 0 copies 0 upvotes 3 stars 4 views 0 copies 0 upvotes 2 stars
Verified / OfficialCommunity ListingCommunity Listing
Open full listingView MCP Server Malcolm ListingView Intodns MCP Server Listing
list_indices
List indices with their health, status, and document count. Use this to discover which indices exist before querying one. For the field schema (field names and types) of a single index, use index_mapping instead; for cluster-wide health rather than per-index status, use cluster_health. Returns a JSON array, one object per index, with name, health, status, and doc count. This reads OpenSearch's index list directly, so Malcolm's own internals come back beside the traffic, and most of what is listed holds no network data at all (.kibana_1, .opendistro_security, the arkime_*_v* config indices, top_queries-*). The traffic is in the arkime_sessions3-* indices alone; Arkime opens a new one per day, so their number grows and the newest is usually still empty — read "docs.count" rather than the name to find the one carrying the capture. A pattern matching nothing returns an empty array, not an error. "health" is a shard-replication fact and says nothing about whether capture is still arriving — malcolm_data_coverage answers that.
index_mapping
Return one index's field mapping: every field name and its OpenSearch type. Use this to learn what fields an index holds and how they are typed before writing a DSL query against it. To list which indices exist rather than inspect one index's schema, use list_indices. For Malcolm's non-standard field names across all indices, malcolm_field_search is easier than reading raw mappings. Returns the raw OpenSearch _mapping response; a non-existent index yields an OpenSearch error in the response body. A wildcard returns one mapping block per matching index rather than a merged one, and each block repeats the whole schema: "arkime_sessions3-*" costs roughly a megabyte of JSON, growing by another block every day Arkime opens a new index. Name ONE index when you only need the schema — the blocks are near-identical. The types it reports are OpenSearch's own (keyword, long, text), while malcolm_field_search reports Malcolm's names for the same fields (string, integer) — so come here only when the OpenSearch type is what you need.
cluster_health
Report OpenSearch cluster health: green/yellow/red status plus node and shard counts. This checks the storage backend (OpenSearch) itself, cluster-wide. To check whether the Malcolm API is reachable, use malcolm_ping; for the readiness of Malcolm's individual services, use malcolm_service_status; for per-index status rather than the whole cluster, use list_indices. Returns the raw OpenSearch _cluster/health document. This is a storage-layer answer only: every shard allocated says nothing about whether packets are still being captured or parsed. Measured on Malcolm v26.07.1 (single node) the steady state is green with number_of_nodes=1 and unassigned_shards=0, so treat yellow as something to explain rather than as normal. For whether data is still arriving use malcolm_data_coverage; for whether a capture node is dropping packets use arkime_node_stats.
malcolm_search
Search Malcolm's indexed network traffic using Malcolm's simple filter dict. Use this for field-based filtering with human-readable time ranges. To search with Arkime expression syntax instead, or when you need a session id to feed arkime_session_pcap / arkime_add_tags afterward, use arkime_sessions (only its rows carry that id). For raw OpenSearch DSL, use search_dsl. Confirm field names with malcolm_field_search first — Malcolm uses non-standard names. Returns the raw Malcolm /mapi/document response (matching documents); when nothing matched and a filter names a field Malcolm does not index, the correct field name is reported above the response. Two defaults to know before the first call: with no time_from this searches ALL retained history, where malcolm_aggregate covers only the last 24 hours; and filter values are matched exactly, so any wildcard or substring has to go to search_dsl instead.
malcolm_aggregate
Aggregate network traffic into top-N value buckets for one or more fields. Use this to count distinct values (top talkers, protocol distribution) rather than fetch documents — for the documents themselves use malcolm_search. For distinct values of a single field with less setup, malcolm_field_values is simpler. Returns the raw Malcolm /mapi/agg response (bucket keys with doc counts); when no buckets came back and an aggregated or filtered field is not one Malcolm indexes, the correct field name is reported above the response. With no time_from this covers only the LAST 24 HOURS, unlike malcolm_search which covers all history. Against a capture older than a day that returns an empty bucket list, which reads as "no such traffic" when it means "nothing in the last day" — suspect the window before the data.
malcolm_alerts
Search Suricata alerts with structured parameters, no field knowledge needed. Use this instead of malcolm_search when hunting Suricata alerts: it maps each argument to the correct Malcolm field for you (you don't need to know whether it's suricata.alert.signature or rule.name). It always filters event.dataset=alert. These are Suricata IDS alerts, signature matches on the wire; three other things on this server are also called alerts and are different mechanisms — malcolm_alerting_monitors and malcolm_alerting_alerts are the OpenSearch alerting plugin's standing rules and their firings, malcolm_anomaly_detectors is its machine-learning baseline, and malcolm_create_alert (alerting write class) records a finding of your own. Behavior: `signature` and `category` are substring searches, which Malcolm cannot express in a filter (its filters are exact terms), so this tool resolves the substring against the field's 500 most common values first and filters on the matches. A substring that matches no recorded value returns a message saying so rather than an empty result set — that is the difference between "no such signature here" and "no alerts fired". That pre-scan is the one place the time range bites: it reads only the last 24 hours, while the alert search itself covers ALL history when time_from is empty, so on a capture older than a day every signature reads as unrecorded until you pass time_from. Returns the raw Malcolm /mapi/document response (matching alert documents).
malcolm_field_search
Discover which field NAMES exist in Malcolm's index, by keyword, prefix, or type. Use this first, before any query, to confirm a field name exists — Malcolm uses non-standard names (e.g. http.useragent, NOT http.user_agent). To then see the VALUES a field holds, use malcolm_field_values; to see which datasets contain it, use malcolm_field_profile. Do NOT source an arkime_* argument from here: these are the names malcolm_* and search_dsl take, and Arkime has its own spelling for the same field (ip.src, srcIp) that arkime_field_search reports. Pass at least one argument. Returns a text list of "name (type)" lines, sorted alphabetically. Arguments narrow (AND), they never widen, and the mapping is big enough that one keyword rarely lands: it runs to thousands of fields, and a keyword as common as "ip" matches over a thousand of them on its own. The header line counts every match but only the first 100 names are printed, so add a prefix or a field_type rather than reading the printed list as the whole answer.
malcolm_field_values
List a single field's distinct VALUES with per-value document counts. Use this to see what values a field actually holds before filtering on it, so you don't invent values. To confirm the field NAME exists first, use malcolm_field_search; to see which datasets carry the field, use malcolm_field_profile. For multi-field or nested bucketing, use malcolm_aggregate. A "-" in the output is Malcolm's placeholder for documents where the field is absent, not a value you can filter on. Returns a text list of "value (N docs)" lines. With no time range this reads only the last 24 hours, so a value that exists only in older data is missing here and reads as invalid — measured on Malcolm v26.07.1, network.protocol lists nothing at the default window while its top value carries millions of documents once time_from reaches the capture. Pass time_from before concluding a value is not in this Malcolm.
malcolm_field_profile
Show which event.dataset types actually contain a given field, with doc counts. Use this to learn where a field lives (e.g. whether it only appears in SSL or DNS records) before scoping a query. To confirm the field NAME first, use malcolm_field_search; to list its distinct VALUES, use malcolm_field_values. Behavior: first resolves the name against the index mapping, then aggregates over event.dataset. Three distinct text outcomes — (1) unknown field → a "not found" message with close-name suggestions (no profile); (2) known field but no matching documents in the time window → an "exists but no documents" message; (3) a per-dataset "event.dataset=<name> (N docs)" list. The dataset counts honor the time window: with no range it uses the last 24 hours, so a field that only has old data can resolve as known yet profile as empty — pass time_from/time_to to reach historical data. Returns plain text, not JSON.
malcolm_service_status
Report readiness of each Malcolm service plus Malcolm version and OpenSearch health. Call this before a hunt to confirm the whole stack is up. For a bare is-the-API-alive check use malcolm_ping; for the OpenSearch cluster's green/yellow/red detail alone use cluster_health; for data freshness and per-dataset counts use malcolm_data_coverage. Returns a JSON summary with malcolm_version, mode, opensearch_health, a per-service readiness map, and an "N/total services ready" line. One probe failing adds an `errors` entry and keeps the rest; both failing is reported as an error, since there is then no status at all to report. The readiness map is also where the optional subsystems declare themselves — measured on Malcolm v26.07.1, 15 keys, netbox, filescan and extracted_files among them. Read the relevant key here before taking an empty answer from malcolm_netbox_lookup or malcolm_file_scans as "no such asset" when it may mean "that subsystem is not deployed".
+39 more tools listed on main page

Intodns MCP Server Tools (45)

scan_domain
Run the fast IntoDNS.ai DNS and email security scan (~3-8s). Returns a letter grade A+ to F, numeric score 0-100, structured issue list, prioritised recommendations, full DNS/email/web/security result sections, and canonical citation URLs. Read-only — no domain mutation, no destructive side effects. The default tool for agent-visible scan evidence; use get_everything_report for a deeper single-shot report including web/blacklist/sender data, or start_deep_scan for slower Internet.nl-grade analysis. After running, use explain_issue or generate_dns_fix on any returned issue. No auth.
nis2_quickscan
Compute a NIS2 Article 21.2 readiness score for a domain by mapping the IntoDNS quickscan onto the ten NIS2 measures. Returns a 0-100 weighted total, per-measure status (Article 21.2 a-j), evidence rows, critical gaps, and concrete fix suggestions. The score reflects only the DNS and email layer of NIS2 — full NIS2 compliance also requires audit of web applications, supply chain, organisational processes, and training. Use when the user asks about NIS2 compliance, NIS2 readiness, NIS2 Article 21.2, cyber-hygiene compliance, or related EU-NIS regulation checks for a domain.
get_everything_report
Generate the complete live IntoDNS.ai report covering DNS, email authentication, web/HTTPS, blacklist reputation, sender requirements, and canonical citation URLs in a single call. Read-only, no domain mutation. ~5-15s latency depending on backend cache state. Use when the user asks for everything, the full picture, or a deep current-state summary; use scan_domain for a faster default scan, or create_report_snapshot when the result must remain immutable for audit/ticket use. No auth, no side effects.
create_report_snapshot
Create an immutable evidence snapshot of the current Everything Report for a domain. Returns a snapshot ID, ISO timestamp, SHA-256 content hash, and stable bookmarkable URLs for both JSON and Markdown renderings of the report. Snapshots are write-once and resolve to the same evidence months/years later — useful for tickets, audit trails, NIS2/ISO compliance evidence, and LLM citations that should not drift. A canonical POST creates one snapshot per call (additive and not idempotent); use get_report_snapshot to read it back. Use this instead of get_everything_report when the result must remain stable.
get_report_snapshot
Read a previously created IntoDNS.ai Everything Report evidence snapshot by snapshot ID. Read-only GET — returns the immutable JSON report exactly as it was at snapshot creation, with the original SHA-256 content hash and timestamp. Requires `snapshotId` from create_report_snapshot. Use to verify or re-read an audit-trail evidence record without re-running a live scan; use get_everything_report for current live data instead. No auth, fully idempotent.
start_deep_scan
Start a long-running Internet.nl deep scan (typically 30-120s). Returns a `scanId` immediately; poll get_deep_scan_status until status='finished'. Read-only — no domain mutation. Internet.nl runs an exhaustive standards-compliance audit (IPv6, DNSSEC, modern TLS, RPKI, mail authentication) used by EU governments. Use when scan_domain output is not strict enough for compliance reporting, or when the user asks for an Internet.nl-grade audit. For sub-10s answers, use scan_domain. To abort an in-progress scan, call cancel_deep_scan. No auth.
get_deep_scan_status
Read-only status poll for a long-running Internet.nl deep scan. Returns scan progress (pending/running/finished), category scores, per-test results, and any failures. Requires a scanId returned by start_deep_scan; poll every 10-30s until status='finished'. Use after start_deep_scan; for fast single-vantage scans, prefer scan_domain. No auth, no side effects.
cancel_deep_scan
Cancel an in-progress Internet.nl deep scan. Marks the scan cancelled; the polling loop then withdraws the upstream Internet.nl batch, usually within ten seconds. Requires `scanId` returned by start_deep_scan. Nothing is deleted: a scan that already finished keeps its results and is left alone, so calling this twice is safe. An unknown or expired scanId returns 404. Use when the user changes their mind mid-scan or when polling get_deep_scan_status would otherwise time out. No auth.
lookup_dns
Read-only DNS record lookup via DNS-over-HTTPS. Pass `type` for a single record type or `types` for an array; if both omitted, returns A records. Returns parsed answers with TTL, raw rdata, and DNSSEC AD bit. Use for arbitrary record queries; use validate_dnssec for full DNSSEC chain validation, or check_dns_propagation for multi-resolver consensus. No auth, no rate limits beyond upstream resolver.
validate_dnssec
Read-only DNSSEC chain validation. Walks the DS/DNSKEY chain from root, checks signatures, algorithm strength, key rollover state, and reports any broken links or unsigned zones. Returns chain steps, algorithm grades, and a boolean `valid`. Use when a domain claims DNSSEC; use lookup_dns(type='DNSKEY') for raw key data only. Single HTTP GET, no auth, no destructive actions.
check_dns_propagation
Compare DNS responses across the nine currently configured public and authoritative resolvers to detect propagation lag, missing answers, or inconsistent TTL/data values. Defaults to record type A and region 'all'. Returns every resolver response plus a propagation percentage and explicit inconsistency list. Use when records were just changed and you suspect staleness; for a single DNS-over-HTTPS lookup use lookup_dns instead. Read-only HTTP, no auth, and no destructive actions.
check_tlsa_dane
Read-only TLSA/DANE DNS record check. With no port, resolves MX hosts and validates their `_25._tcp` TLSA tuple syntax; with an explicit port, queries `_<port>._<protocol>.<domain>`. Returns parsed usage, selector, matching type, certificate data, syntax errors, and best-practice advisories. It does not fetch or cryptographically match the live service certificate, so pair it with check_smtp_tls for SMTP certificate evidence. Use before publishing DANE records or troubleshooting DANE handover. No auth or destructive actions.
+33 more tools listed on main page
Dechonet MCP logo
Intodns MCP Server vs Dechonet MCP
  • Agentradar MCP logoIntodns MCP Server vs Agentradar MCP
  • Agentward logoIntodns MCP Server vs Agentward
  • Gia MCP Server logoIntodns MCP Server vs Gia MCP Server