{
  "type": "mcp-server",
  "slug": "tenable-ot-security-mcp-server",
  "name": "Tenable OT Security MCP Server",
  "author": "aqamahn",
  "description": "Tenable OT Security asset, vulnerability, event and policy tools, with an opt-in dry-run-by-default write layer.",
  "github_url": "https://github.com/aqamahn/MCP-server-Tenable-OT-V2",
  "license": "Apache-2.0",
  "tier": "contributed",
  "tags": [
    "mcp-server",
    "ot-security",
    "ics",
    "scada",
    "asset-inventory",
    "vulnerability-management",
    "audit-logging"
  ],
  "integrations": [
    "Tenable"
  ],
  "domains": [
    "ot-iot-security"
  ],
  "date_added": "2026-08-01",
  "last_reviewed": "2026-08-04",
  "transport": "both",
  "runtime": "python",
  "auth_method": "api-key",
  "compatible_clients": [
    "Claude Desktop",
    "Claude Code"
  ],
  "tools_exposed": [
    {
      "name": "tenable_ot_status",
      "description": "Check Tenable OT connectivity"
    },
    {
      "name": "query_assets",
      "description": "Query OT assets"
    },
    {
      "name": "get_asset",
      "description": "Get one OT asset"
    },
    {
      "name": "get_asset_vulnerabilities",
      "description": "Get vulnerabilities for one asset"
    },
    {
      "name": "list_custom_fields",
      "description": "List configured custom fields"
    },
    {
      "name": "get_manual_asset_upload_status",
      "description": "Get manual asset-upload processing status"
    },
    {
      "name": "query_attack_pathways",
      "description": "Query attack-pathway data (relational, not computed)"
    },
    {
      "name": "query_vulnerability_clusters",
      "description": "Query vulnerability clusters (relational join, not computed)"
    },
    {
      "name": "query_temporal_patterns",
      "description": "Query temporal patterns (event sequence, not motif analysis)"
    },
    {
      "name": "get_asset_intelligence",
      "description": "Get asset intelligence bundle (joined data, not narrative)"
    },
    {
      "name": "query_events",
      "description": "Query OT events"
    },
    {
      "name": "get_event",
      "description": "Get one OT event"
    },
    {
      "name": "export_assets",
      "description": "Bulk export assets"
    },
    {
      "name": "export_plugin_definitions",
      "description": "Bulk export plugin definitions"
    },
    {
      "name": "export_findings",
      "description": "Bulk export findings"
    },
    {
      "name": "query_plugin_definitions",
      "description": "Query plugin (vulnerability) definitions"
    },
    {
      "name": "get_plugin_definition",
      "description": "Get one plugin definition"
    },
    {
      "name": "list_detection_policies",
      "description": "List detection policies"
    },
    {
      "name": "get_policy",
      "description": "Get one policy's full configuration"
    },
    {
      "name": "query_policy_findings",
      "description": "Query policy findings"
    },
    {
      "name": "get_schema_enums",
      "description": "Introspect the Tenable OT GraphQL schema"
    },
    {
      "name": "list_sensors",
      "description": "List sensors"
    },
    {
      "name": "summarize_environment",
      "description": "Summarize the OT environment"
    },
    {
      "name": "list_segments_and_zones",
      "description": "List network segments and zones"
    },
    {
      "name": "get_communication_paths",
      "description": "Get communication paths for an asset"
    },
    {
      "name": "query_vulnerabilities",
      "description": "Query OT vulnerabilities"
    },
    {
      "name": "get_vulnerability",
      "description": "Get one vulnerability"
    },
    {
      "name": "list_asset_groups",
      "description": "List asset groups (active)"
    },
    {
      "name": "list_archived_asset_groups",
      "description": "List archived asset groups"
    },
    {
      "name": "get_asset_group",
      "description": "Get an asset group by id"
    },
    {
      "name": "list_email_groups",
      "description": "List email groups"
    },
    {
      "name": "get_email_group",
      "description": "Get an email group by id"
    },
    {
      "name": "find_email_groups_using_smtp_server",
      "description": "Find email groups that route through a given SMTP server"
    },
    {
      "name": "list_schedule_groups",
      "description": "List schedule groups"
    },
    {
      "name": "list_archived_schedule_groups",
      "description": "List archived schedule groups"
    },
    {
      "name": "get_schedule_group",
      "description": "Get a schedule group by id"
    },
    {
      "name": "list_tag_groups",
      "description": "List tag groups"
    },
    {
      "name": "get_tag_group",
      "description": "Get a tag group by id"
    },
    {
      "name": "list_eligible_tags",
      "description": "Discover tags eligible for a tag group"
    },
    {
      "name": "list_rule_groups",
      "description": "List rule groups"
    },
    {
      "name": "list_archived_rule_groups",
      "description": "List archived rule groups"
    },
    {
      "name": "get_rule_group",
      "description": "Get a rule group by id"
    },
    {
      "name": "list_port_groups",
      "description": "List port groups"
    },
    {
      "name": "list_archived_port_groups",
      "description": "List archived port groups"
    },
    {
      "name": "get_port_group",
      "description": "Get a port group by id"
    },
    {
      "name": "list_protocol_groups",
      "description": "List protocol groups"
    },
    {
      "name": "list_archived_protocol_groups",
      "description": "List archived protocol groups"
    },
    {
      "name": "get_protocol_group",
      "description": "Get a protocol group by id"
    },
    {
      "name": "list_user_groups",
      "description": "List user groups (ICP-level)"
    },
    {
      "name": "list_archived_user_groups",
      "description": "List archived user groups (ICP-level)"
    },
    {
      "name": "get_user_group",
      "description": "Get a user group by id (ICP-level)"
    },
    {
      "name": "list_em_user_groups",
      "description": "List user groups (Enterprise Manager level)"
    },
    {
      "name": "list_em_archived_user_groups",
      "description": "List archived user groups (Enterprise Manager level)"
    },
    {
      "name": "get_em_user_group",
      "description": "Get a user group by id (Enterprise Manager level)"
    },
    {
      "name": "list_active_scans",
      "description": "List active scans"
    },
    {
      "name": "get_active_scan",
      "description": "Get one active scan"
    },
    {
      "name": "get_active_scan_executions",
      "description": "Get past executions of an active scan"
    },
    {
      "name": "list_network_config",
      "description": "Read what the appliance is configured to monitor"
    },
    {
      "name": "list_policy_relationships",
      "description": "Check what references an object before changing it"
    }
  ],
  "resources_exposed": [],
  "prompts_exposed": [],
  "repo": {
    "found": true,
    "archived": false,
    "pushed_at": "2026-09-06T15:02:11Z",
    "stars": 0,
    "forks": 0,
    "open_issues": 0,
    "owner_type": "user",
    "language": "Python",
    "checked_at": "2026-11-05T20:35:15.821Z"
  },
  "url": "https://exchange.tenable.com/mcp-servers/tenable-ot-security-mcp-server",
  "json_url": "https://exchange.tenable.com/api/mcp-servers/tenable-ot-security-mcp-server.json",
  "markdown_url": "https://exchange.tenable.com/mcp-servers/tenable-ot-security-mcp-server.md",
  "source_url": "https://github.com/tenable/cyberagents-exchange/blob/main/mcp-servers/tenable-ot-security-mcp-server.md"
}