Ssl Inspector

io.github.GuardBeePublished by GitHub account GuardBeev0.5.1Updated Nov 3, 2026

TLS certificate/cipher/protocol inspection

Overview

AI-generated overview

Local MCP server that inspects TLS certificates, cipher suites, protocols and HSTS for domains, so an assistant can audit SSL configuration and expiry.

What you can do
  • Inspect one domain's full TLS setup: certificate, cipher, protocol and HSTS
  • Inspect many domains in parallel in a single bulk scan
  • Check certificate expiry across domains and flag ones expiring soon
  • Retrieve detailed certificate data such as SHA-256 fingerprint, SANs, issuer chain and serial number
  • Report security findings like expired, revoked or self-signed certificates, weak keys, ciphers and deprecated protocols
When to use it
Useful when you want an assistant to answer questions about a site's SSL/TLS health, compare certificates across several domains, or watch for upcoming certificate expiry without leaving the chat.
Requirements
Runs as a local stdio process, installed from the npm package @guardbee/mcp-ssl-inspector (Node.js, no external dependencies). Outbound network access to the target domains on their TLS ports is required. No accounts, API keys or environment variables are declared.
Before you install
The server connects out to whatever domains it is asked about, so target hostnames are disclosed to those servers. Optional telemetry is off by default; setting GUARDBEE_TELEMETRY=1 sends server, tool, success, duration and short parameter values to a third-party package, with longer strings and fields like content, token or password replaced by a placeholder. Results are read-only observations.

Installation

In SourceWeft

  1. Open Ssl Inspector in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

@guardbee/mcp-ssl-inspector

🇬🇧 English | 🇹🇷 Türkçe | 🇨🇳 中文 | 🇯🇵 日本語 | 🇰🇷 한국어 | 🇧🇷 Português | 🇪🇸 Español | 🇩🇪 Deutsch

[npm version] [npm downloads] [License: MIT]

An MCP server that inspects TLS certificates, cipher suites, and protocol configuration for any domain. Uses Node.js's built-in tls module — no external dependencies.

Telemetry is off by default. With GUARDBEE_TELEMETRY=1 it sends the server, tool, success, duration and short parameter values such as a file path; longer strings and fields like content, token or password are replaced with a placeholder. See @guardbee/mcp-telemetry.


Features

  • Certificate Inspection — validity, days until expiry, SHA-256 fingerprint, SANs, issuer chain
  • Protocol Check — TLS 1.0/1.1 deprecation warning, SSLv2/v3 critical warning
  • Cipher Analysis — detects NULL, EXPORT, RC4, DES, 3DES, anonymous ciphers
  • HSTS Check — Strict-Transport-Security header, max-age, includeSubdomains
  • Bulk Scanning — scans N domains in parallel
  • Certificate Expiry Monitoring — 🚨 / ⚠️ / ✅ icons for upcoming expirations
  • 12 Unit Tests — pure logic tests, no network connection required

Quick Start

bash
npm install -g @guardbee/mcp-ssl-inspector

Add to claude_desktop_config.json:

json
{  "mcpServers": {    "guardbee-ssl-inspector": {      "command": "npx",      "args": ["-y", "@guardbee/mcp-ssl-inspector"]    }  }}

MCP Tools

ToolDescription
inspect_sslFull TLS inspection for a single domain (cert + cipher + protocol + HSTS)
inspect_ssl_bulkInspects multiple domains in parallel
check_cert_expiryChecks certificate expiry dates for N domains
get_cert_infoDetailed certificate info for a domain (fingerprint, SAN, chain, serial number)

Example Usage

You can ask Claude:

"Is example.com's SSL certificate valid?"

"When do these domains' certificates expire: example.com, api.example.com, shop.example.com"

"Is example.com using a weak cipher suite?"

Example Output

┌─ example.com:443│  Protocol  : TLSv1.3│  Cipher    : TLS_AES_256_GCM_SHA384 (256 bit)│  Chain     : depth=2 valid=yes│  Cert CN   : example.com│  Validity  : Mar 15 2024 → Jun 13 2024 (expires in 45 days)│  SANs      : example.com, www.example.com│  Issuer    : Let's Encrypt│  SHA-256   : AA:BB:CC:DD:...│  HSTS      : enabled (max-age=31536000, includeSubdomains)│  ✅ No security issues found

Security Findings

FindingSeverityDescription
CERT_EXPIRED🔴 CriticalCertificate has expired
CERT_EXPIRY_CRITICAL🔴 Critical< 7 days remaining
CERT_EXPIRY_SOON🟠 High< 21 days remaining (ACME clients renew at 30: renewal is failing)
CERT_EXPIRY_WARN🟡 Medium< 30 days remaining
HOSTNAME_MISMATCH🔴 CriticalThe certificate is not valid for the host
CERT_REVOKED🔴 CriticalThe certificate has been revoked
CERT_SELF_SIGNED🟠 HighSelf-signed certificate
CERT_CHAIN_INCOMPLETE🟠 HighThe server does not send its intermediate certificate
CERT_CHAIN_INVALID🟠 HighOther chain validation error
WEAK_KEY🟠 High / 🔴 CriticalRSA key under 2048 bits (critical under 1024), EC key under 256 bits
WEAK_SIGNATURE🟠 HighLeaf or intermediate signed with SHA-1 or MD5
CERT_NO_SAN🟡 MediumNo Subject Alternative Name
DEPRECATED_PROTOCOL🟠 HighThe server still accepts TLS 1.0 or 1.1 (probe)
OBSOLETE_PROTOCOL🔴 CriticalSSLv2 or SSLv3
WEAK_CIPHER🔴 Critical / 🟠 HighAccepts NULL/EXPORT/RC4 (critical) or 3DES (high) suites (probe)
WEAK_DH🟠 High / 🔴 CriticalDiffie-Hellman group under 2048 bits (critical under 1024) (probe)
NO_FORWARD_SECRECY🟡 MediumAccepts RSA key exchange ciphers (probe)
NO_HSTS🟡 MediumNo HSTS header found
HSTS_SHORT_MAX_AGE🔵 Lowmax-age < 15552000s
NO_TLS13🔵 LowTLS 1.3 not supported (probe)
NO_OCSP_STAPLING🔵 LowNo stapled OCSP response
NO_CAA🔵 LowNo CAA DNS record for the domain or a parent

Probes. One default handshake lands on the best protocol and cipher both sides share, so a server that also accepts TLS 1.0 or RSA key exchange looks fine. inspect_ssl and the CLI therefore make a few extra handshakes, each offering only the thing under test (TLS 1.0, TLS 1.1, TLS 1.3, RSA key exchange, DHE, weak cipher families). Weak families the runtime's own OpenSSL cannot offer (Node 22 builds have no 3DES/RC4/EXPORT) are listed as not tested rather than passed. --no-probes / probes: false skips them; inspect_ssl_bulk leaves them off unless asked.


CLI — CI/CD Integration

In addition to MCP server mode, this can also be used directly as a CLI:

bash
# Full TLS inspection for a single domainnpx @guardbee/mcp-ssl-inspector inspect example.com
# Multiple domainsnpx @guardbee/mcp-ssl-inspector inspect example.com api.example.com shop.example.com
# Custom portnpx @guardbee/mcp-ssl-inspector inspect example.com:8443
# Certificate expiry checknpx @guardbee/mcp-ssl-inspector expiry example.com api.example.com
# Fail only on criticalnpx @guardbee/mcp-ssl-inspector inspect example.com --fail-on=critical
# JSON outputnpx @guardbee/mcp-ssl-inspector inspect example.com --format=json

Exit codes: 0 = no issues · 1 = findings above threshold / expired cert · 2 = error

Configuration via guardbee.yml

Create a guardbee.yml at your project root to persist CLI flags. CLI flags always override file settings.

yaml
ssl-inspector:  fail-on: high          # critical | high | medium | low  port: 443  hosts:                 # used when no domain is given on the CLI    - example.com    - api.example.com    - shop.example.com

See guardbee.example.yml for a sample file.

GitHub Actions — Post-Deployment Check

yaml
name: SSL Checkon:  workflow_run:    workflows: ["Deploy"]    types: [completed]
jobs:  ssl-check:    runs-on: ubuntu-latest    steps:      - name: Inspect SSL certificate        run: npx @guardbee/mcp-ssl-inspector inspect ${{ vars.DOMAIN }} --fail-on=high
      - name: Check cert expiry (warn if < 30 days)        run: npx @guardbee/mcp-ssl-inspector expiry ${{ vars.DOMAIN }}

Scheduled Expiry Monitor

yaml
name: Cert Expiry Monitoron:  schedule:    - cron: "0 9 * * 1"  # Every Monday at 09:00
jobs:  expiry:    runs-on: ubuntu-latest    steps:      - name: Check certificate expiry dates        run: |          npx @guardbee/mcp-ssl-inspector expiry \            example.com \            api.example.com \            shop.example.com \            --format=json

GitLab CI

yaml
ssl-inspect:  image: node:20  script:    - npx @guardbee/mcp-ssl-inspector inspect $DOMAIN --fail-on=high  environment:    name: production  only:    - main

Development

bash
npm installnpm test          # 12 unit testsnpm run build     # TypeScript compile

License

MIT — GuardBee

Feedback

Questions, ideas, or a false positive? Start a thread in GitHub Discussions or open an issue. If GuardBee is useful to you, a ⭐ on the repository helps others find it.

Source: packages/ssl-inspector/README.md at commit bc5997d

Tools

4

inspect_ssl

Inspect TLS certificate, cipher suite, and protocol configuration for a single domain

ParametershostrequiredportprobescheckHsts

inspect_ssl_bulk

Inspect TLS configuration for multiple domains in parallel

Parametersporthostsrequiredprobes

check_cert_expiry

Check certificate expiry for one or more domains and highlight certificates expiring soon

ParametershostsrequiredwarnDays

get_cert_info

Get detailed certificate information for a domain including fingerprint, SANs, and issuer chain

Parametershostrequiredport

Version history

3
  1. v0.5.1LatestOct 30, 2026
  2. v0.4.2Oct 22, 2026
  3. v0.3.1Oct 13, 2026

Score

90% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts
  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts