tenable-mcp-server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@tenable-mcp-serverlist assets with high severity vulnerabilities"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Tenable MCP Server
An MCP (Model Context Protocol) server for Tenable Vulnerability Management and the wider Tenable One platform. Connects LLMs like Claude to your Tenable instance for querying assets, vulnerabilities, scans, exposure metrics, attack paths, web app scans, cloud security findings, and more — via natural language.
Built with FastMCP v3 and pyTenable.
Features
58 tools across 25 modules: assets, vulnerabilities, scans, exposure scoring, Attack Path Analysis, Web App Scanning (WAS), Attack Surface Management (ASM), Cloud Security (CNAPP), container security, compliance, tags, agents, networks, policies, users/groups, audit log, and patch verification
Mock mode for demos and development — every result carries a visible simulation banner plus machine-readable
simulated: true/authoritative: falsemetadataHonest pagination on list endpoints: filters apply to the complete observed capped sample, caps are reported as partial lower bounds, and no unreachable next offset is advertised beyond a cap
Markdown output optimized for LLM consumption
Graceful degradation when licensed features (Lumin/Tenable One, WAS, CNAPP, ASM) are unavailable
STDIO-only transport so API keys are never exposed through an unauthenticated network listener
Read-mostly surface: the only write operations are scan launch/stop and tag assign/unassign, all marked with MCP tool annotations
Related MCP server: tenable-mcp
Quick Start
Prerequisites
Python 3.11+
uv (recommended) or pip
Tenable VM API keys (generate here) — or none at all for mock mode
Install
git clone <repo-url> && cd tenable-mcp-server
uv venv && source .venv/bin/activate
uv pip install -e ".[dev]"Configure
cp .env.example .env
# Edit .env with your Tenable API keysOr export directly:
export TENABLE_ACCESS_KEY=your-access-key
export TENABLE_SECRET_KEY=your-secret-keyRun
# STDIO transport (default, for Claude Desktop / Claude Code)
tenable-mcp
# Mock mode (no API keys needed)
TENABLE_MOCK=true tenable-mcpClaude Desktop Integration
Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"tenable": {
"command": "uv",
"args": ["run", "--directory", "/path/to/tenable-mcp-server", "tenable-mcp"],
"env": {
"TENABLE_ACCESS_KEY": "your-access-key",
"TENABLE_SECRET_KEY": "your-secret-key"
}
}
}
}For mock/demo mode, set "TENABLE_MOCK": "true" in env and omit the API keys.
The server prepends SIMULATED TENABLE DATA to every tool response and marks result
metadata non-authoritative, so mock output cannot silently pass as live evidence.
Tools Reference
All tools return Markdown. Read-only tools carry readOnlyHint: true annotations.
Assets & Exposure
Tool | Description |
| List assets with hostname/IP/OS filters and pagination |
| Full asset detail by UUID (hostname, IPs, OS, AES, ACR, tags) |
| Cyber Exposure Score (CES) from Tenable One |
| Per-asset AES (0-1000) and ACR (1-10) |
| Open vulnerability counts by severity |
| Tenable One exposure view cards with CES trend series |
Vulnerabilities & Plugins
Tool | Description |
| List vulns with severity/VPR/CVE/state filters |
| Full plugin details (description, solution, references) |
| Per-asset vulnerability list |
| Plugin family and plugin metadata |
| Fail-closed before/after verification that CVEs/plugins are fixed on valid VM assets. Each UUID is first resolved in the workbenches namespace; unknown or mismatched IDs are not verifiable, never clean. Per-asset status is VERIFIED, NOT_PATCHED, UNKNOWN, or ERROR; only a complete, successful query with understood finding states and zero matching open findings yields VERIFIED. Every report carries source, UTC query time, scope, and collection completeness. |
| Recast/accept rule search |
Scans, Scanners & Policies
Tool | Description |
| Scan inventory, results, run history |
| Scan lifecycle (write operations) |
| Scanner fleet |
| Scan policies |
| Folders and scan exclusions |
Attack Path Analysis (Tenable One)
Tool | Description |
| Prioritized attack paths with source/target and techniques |
| Attack path findings |
| MITRE ATT&CK technique inventory |
| Per-country APA coverage map bucketed by hostname prefix (ISO 3166-1 defaults, configurable) |
Web App Scanning, ASM, Cloud & Containers
Tool | Description |
| Web App Scanning configs, scans, findings |
| Attack Surface Management inventory |
| CNAPP cloud resources and misconfigurations |
| CNAPP VM and container image vulnerabilities |
| Container Security |
Platform Administration
Tool | Description |
| Tag management |
| Nessus agent fleet |
| Network objects |
| Users and groups |
| Platform audit log |
| Compliance/audit findings |
Configuration
Environment Variable | Default | Description |
| (required) | Tenable API access key |
| (required) | Tenable API secret key |
|
| Tenable cloud URL |
|
| Enable mock mode for demo/testing |
|
| Safety cap for export consumption |
|
| Default pagination limit |
| (optional) | Tenable Cloud Security (CNAPP) API key |
| (optional) | Attack Surface Management API key |
| (optional) | JSON map of hostname prefixes to country labels for APA coverage bucketing (defaults to ISO 3166-1 alpha-2) |
Development
# Run tests (uses mock mode automatically -- no credentials needed)
uv sync --extra dev
uv run pytest tests/ -v
# Lint
uv run ruff check src/ tests/Architecture
FastMCP v3 server with lifespan-managed
TenableIOclientAll pyTenable calls wrapped in
asyncio.to_thread()(pyTenable is synchronous)Export iterators use one-record lookahead to detect the safety cap (
MAX_EXPORT_CONSUME = 10,000), then paginate the observed sample in memoryCloud Security tools use direct GraphQL over httpx (https-only guard) instead of pyTenable's CNAPP client
Error handling via
@handle_tenable_errorsdecorator mapping API errors to actionableToolErrormessagesMock client mirrors the pyTenable interface with deterministic UUIDs for consistent test/demo data
Limitations
License-gated features degrade, not fail: CES/AES/ACR, exposure views, APA, WAS, ASM, CNAPP, and Container Security require the corresponding Tenable licenses; tools return an explanatory message when the feature is unavailable on your instance.
Tenable VM (cloud) only — Tenable Security Center (on-prem) is not supported; its API differs substantially.
Export scale: vulnerability/asset exports are capped at
TENABLE_MAX_EXPORTrecords per call to keep responses LLM-sized. This is not a full data-lake export tool.Capped totals are lower bounds: a partial-export banner and metadata say when the cap was reached. At the end of the observed sample,
has_moreis false because no further offset is addressable through that capped call;truncatedremains true to show that the source itself contains more data.No HTTP transport: credential-bearing operation is deliberately limited to stdio. Run one process per client trust boundary.
Write surface is minimal by design: scan launch/stop and tag operations only. No remediation, recast, or user-management writes.
APA country coverage relies on hostname prefixes when asset tags are absent; hostnames that don't encode location won't bucket (they are reported as unmapped rather than guessed).
License
MIT
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Alicense-qualityDmaintenanceMCP server enabling AI assistants to interact with the Qualys vulnerability management platform. Supports investigation, risk assessment, compliance, remediation, security overview, and report management.381MIT
- AlicenseAqualityCmaintenanceExposes Tenable security operations as MCP tools for AI-powered security workflows, enabling asset, vulnerability, scan, plugin, and tag management via natural language.17MIT
- Flicense-qualityBmaintenanceMCP server for ConnectSecure vulnerability management, exposing 285 read-only tools to query assets, vulnerabilities, Active Directory, and more via natural language.
- Alicense-qualityBmaintenanceMCP server for querying live CISA KEV, EPSS, and enriched vulnerability feeds with full provenance. Enables natural-language access to auditable security-intelligence data from Claude Desktop and other MCP clients.MIT
Related MCP Connectors
MCP server for Pentest-Tools.com: run scans, manage findings and reports via your preffered LLM.
Security scanner for MCP servers. Detect vulnerabilities, prompt injection, and tool poisoning.
Official Microsoft MCP Server to query Microsoft Entra data using natural language
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/tarhou/tenable-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server