Tenable.sc MCP Server

Release CI License: GPL v3 Python

This tool is not an officially supported Tenable project.

Production-ready Model Context Protocol (MCP) server for Tenable Security Center Plus. Features intelligent caching for 90% token savings and 1000x faster responses.

Latest: v1.3.1 (2026-06-24) - Patch Management Tool | Status: ✅ Production Ready


What's New in v1.3.1

  • Tool 6: tsc_list_missing_patches - Comprehensive patch gap analysis
    • Universal mode: All OS types + third-party software (Chrome, Office, VMware, etc.)
    • Windows mode: KB articles and legacy MS bulletins
    • Smart parsing: Extracts KB IDs, vulnerability counts, third-party updates
    • Repository name auto-resolution (e.g., "Default" → ID 9)
    • Token efficient: 700-20,000 tokens depending on scope
    • 6 critical bugs fixed during implementation

See CHANGELOG.md for complete release notes.


Quick Start

# 1. Create .env file
cd tenable-sc-mcp-server
cp .env.example .env
nano .env  # Add your Tenable.sc credentials

# 2. Build and start
docker build -t tenable-sc-mcp:latest .
docker-compose up -d

# Server running at: http://localhost:8000/mcp

Required .env configuration:

TSC_URL=https://your-sc-server.com
TSC_ACCESS_KEY=your-access-key
TSC_SECRET_KEY=your-secret-key
TSC_VERIFY_SSL=true

Features

  • 90% token savings - Intelligent Redis caching
  • 1000x faster - <1ms cached responses vs 200-500ms API calls
  • 100+ resources - Full Tenable.sc REST API coverage
  • Zero storage - Stateless proxy with optional cache
  • RBAC enforced - Respects all Tenable.sc permissions
  • Production ready - Docker Compose with health checks

Available Tools

High-Level Tools (Optimized for LLMs)

See USER_GUIDE.md for complete documentation and examples.

Tool Purpose Token Savings Cache TTL
tsc_profile_ip_efficient Complete IP security assessment 83% (2.5K vs 15K) 180-300s
tsc_list_vulns_by_ip_summary Quick vulnerability counts 88% (700 vs 6K) 180s
tsc_list_vulns_by_ip_full Detailed vulnerability records 58% (5K vs 12K) 180s
tsc_list_ips IP discovery with 55+ filters 400-3.7K tokens 120s
tsc_list_vulns_by_cve CVE outbreak response 85% (1-2K vs 10K) 240s
tsc_list_missing_patches Patch gap analysis (all OS + third-party) 60-70% (0.7-20K) 240s

Core API Tools

  • tsc_resource_action - Unified CRUD for all resources (list, get, create, update, delete)
  • tsc_catalog - Browse 100+ available resources
  • tsc_current_user - Verify API identity and permissions
  • tsc_analyze - Run analysis queries (cached)
  • tsc_cache_stats / tsc_cache_clear - Cache management

See docs/TOOLS.md for complete tool reference.


Configuration

OpenCode

Add to opencode.json:

{
  "mcp": {
    "tenable-sc": {
      "type": "remote",
      "url": "http://localhost:8000/mcp",
      "enabled": true
    }
  }
}

Claude Desktop

Add to MCP settings:

{
  "mcpServers": {
    "tenable-sc": {
      "command": "docker",
      "args": ["run", "--rm", "-i",
        "-e", "TSC_URL=https://your-sc-server.com",
        "-e", "TSC_ACCESS_KEY=your-key",
        "-e", "TSC_SECRET_KEY=your-secret",
        "tenable-sc-mcp:latest"]
    }
  }
}

Architecture

MCP Client (OpenCode/Claude)
        ↓
tenable-sc-mcp server
        ↓
Redis Cache (90% hit rate)
        ↓
Tenable.sc REST API

Key Principles (see DESIGN_PRINCIPLES.md):

  • Unified filters dict parameter (55+ filters)
  • Smart caching with data-type-specific TTLs
  • Token optimization (80%+ reduction target)
  • Comprehensive error handling

Filter System

New in v1.2.0: All tools use unified filters dict parameter.

# Example: Find critical assets with CVE
tsc_list_vulns_by_cve("CVE-2021-44228", filters={
    "asset_criticality": "7-10",    # Range format required
    "severity": "critical",
    "exploit_available": "Yes"
})

Important Rules:

  • Scoring filters use range format: "7-10" NOT ">7"
  • Applies to: asset_criticality, vpr_score, aes_score, cvss_v3_base_score, epss_score
  • Common filters: severity, exploit_available, cve, plugin_id, port, protocol

Documentation:


Deployment Options

Docker Compose (Recommended)

docker build -t tenable-sc-mcp:latest .
docker-compose up -d

Standalone Docker

docker run -d --name tenable-sc-mcp \
  -p 8000:8000 \
  -v ~/.tenable-sc-mcp.env:/config/tsc.env:ro \
  tenable-sc-mcp:latest \
  --transport streamable-http \
  --host 0.0.0.0 --port 8000 \
  --env-file /config/tsc.env

Local Python

python3 -m venv .venv
source .venv/bin/activate
pip install .
export TSC_URL="https://sc.example.com"
export TSC_ACCESS_KEY="key"
export TSC_SECRET_KEY="secret"
tenable-sc-mcp --transport stdio

Troubleshooting

Containers won't start:

docker compose logs tenable-sc-mcp
# Check: Missing .env, invalid TSC_URL, firewall

Can't reach Tenable.sc:

curl -k https://your-sc-server.com/rest/currentUser
# Expected: "invalid token" (endpoint reachable)

Cache not working:

docker ps --filter "name=redis"  # Should show (healthy)
# Ask MCP: "show me cache statistics"

Remote clients can't connect:

docker ps --filter "name=tenable-sc-mcp"  # Should show 0.0.0.0:8000
curl http://your-server-ip:8000/mcp

See SUPPORT.md for more help.


Security

  • RBAC enforced - Uses your Tenable.sc API keys, all permissions apply
  • No credential storage - Environment variables only
  • SSL/TLS support - Set TSC_VERIFY_SSL=true in production
  • No built-in auth - Bind to trusted networks only (127.0.0.1 for local)

Best practices:

  • ❌ Never commit API keys to git
  • ✅ Use env files with mode 0600
  • ✅ Create dedicated least-privilege API user in Tenable.sc
  • ✅ Use firewall rules or SSH tunnels for remote access

See SECURITY.md for vulnerability reporting.


Documentation

User Docs

Developer Docs

Project


Compatibility

Component Version
Python 3.11+
Tenable.sc Current API versions
Docker 20.10+ (Compose v2)
Redis 7+

Contributing

Contributions welcome! See CONTRIBUTING.md for guidelines.

Quick links:


License

GNU GPL v3.0 - See LICENSE


Need help? Check SUPPORT.md or open an issue.