TLS Radar

com.tlsradar由 tlsradar.com 發布官方發布者v0.5.1更新於 Oct 24, 2026

SSL/TLS scanning, free Let's Encrypt issuance, and certificate-expiry monitoring.

已驗證Streamable HTTP可網頁執行雲端與基礎設施安全與監控

概覽

AI 產生的概覽

遠端 MCP 伺服器,用於 SSL/TLS 掃描、免費簽發 Let's Encrypt 憑證,以及憑證到期監控與提醒。

可以做什麼
  • 匿名掃描主機名稱,取得憑證詳細資料與歷史掃描結果
  • 透過 DNS 或 HTTP 驗證簽發、檢查傳播、完成、續期並查詢免費 Let's Encrypt 憑證訂單狀態
  • 新增、批次新增、列出與移除受監控網域,並列出 N 天內到期的憑證
  • 以 JSON 匯出與匯入監控設定,方便備份或基礎設施即程式碼
  • 查看方案、額度與用量,並以電子郵件邀請團隊成員
適用情境
適合讓助理檢查網站的 TLS 設定、申請或續期免費 Let's Encrypt 憑證,或在多個網域之間追蹤憑證到期情況,而不必另外開管理後台。
執行需求
遠端 streamable HTTP 端點,不需本機執行環境或安裝套件。掃描與憑證簽發不需帳號;監控、方案、匯入匯出與團隊工具需要一次性 OAuth 登入(在 Claude Code 執行 /mcp,或新增連接器時登入)。若要在本機產生金鑰來簽發憑證,需要能本機執行 openssl 的用戶端,例如 Claude Code 或 Cowork。
安裝前請注意
監控、團隊與匯入匯出工具會操作帳號並寫入資料(增刪監控、以電子郵件邀請成員)。免費方案僅含 1 個監控與每月 1 次提醒,回應中可能附帶升級提示。自動完成 DNS 驗證時會讀取本機 DNS 服務商憑證,例如 CLOUDFLARE_API_TOKEN 或 AWS CLI。除非刪除本機 install_id 檔案,否則會以 client_id 參數傳送匿名安裝識別碼。憑證簽發會經由廠商伺服器代理至 Let's Encrypt。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 TLS Radar,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/com.tlsradar%2Ftlsradar/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。

{
  "mcpServers": {
    "tls-radar": {
      "type": "http",
      "url": "https://tlsradar.com/api/v1/mcp"
    }
  }
}

README

TLS Radar plugin for Claude Code & Cowork

[MIT License] [Claude Code plugin] [smithery badge]

Run SSL/TLS scans, issue free Let's Encrypt certificates, and manage cert monitoring from inside Claude Code or Claude Cowork - through a single MCP server, with nothing to configure.

Independent monitoring from a vendor that doesn't sell certificates - built for the 90-day-cert era, where manual renewal tracking is already finished.

[Installing the plugin and issuing a free cert with /tls-cert]

# Public - no account, no setup/tls-scan example.com                       # free SSL/TLS scan/tls-cert mydomain.dev                      # free 90-day Let's Encrypt cert (private key stays local)/tls-renew mydomain.dev                     # renew a cert
# Connect once for monitoring (OAuth via /mcp)/mcp                                        # built-in Claude Code OAuth flow/tls-monitor add api.foo.io                 # one or many: /tls-monitor add a.com b.com c.com/tls-monitor list/tls-monitor remove api.foo.io/tls-diagnose                               # health check (use when something's off)/tls-upgrade                                # open pricing page

See real output before installing: sample scan report

Other actions - "what's expiring soon," "scan history for X," "what plan am I on," "export/import my monitors," "invite a teammate" - just ask in plain language; the plugin's skill routes them to the right tool. No slash command needed.

How it works

Claude Code's MCP client talks to one remote server:

  • tlsradar.com/api/v1/mcp

Certificate issuance is proxied through that server to the Let's Encrypt backend (Beacon), so there's a single connection and a single auth model - no second server, no token to paste into your shell.

  • Public tools (scan, create_certificate, check_certificate_propagation, finalize_certificate, get_certificate_status, renew_certificate) work with no account.
  • Authenticated tools (monitoring, plan info, export/import, team) use Claude Code's built-in OAuth 2.0 + PKCE. Run /mcp once, pick the tlsradar server, approve in the browser; the token is managed by Claude Code.

When you run /mcp, Claude Code fetches tlsradar.com/.well-known/oauth-authorization-server (RFC 8414), dynamically registers as a public client (RFC 7591), opens the browser for consent (PKCE / RFC 7636), and includes the token on subsequent requests automatically.

Certificates keep your private key local

/tls-cert generates the key + CSR on your machine (via a bundled, tested helper that writes the key with 0600 permissions and never overwrites an existing key - it backs it up) and sends only the CSR. The private key never leaves your computer and no passphrase is ever typed into the chat. Before presenting the issued certificate, the plugin verifies locally that the returned chain actually covers your domain. If you want a .p12 bundle (e.g. for Windows/Java import), the plugin packages it locally too.

An interrupted issuance is resumable: the order state is saved to ~/.config/tlsradar/orders/<domain>.json, so you can close the session mid-flow and later say "finish my cert for example.com" (or re-run /tls-cert) to pick up where you left off. /tls-renew reuses the saved email and challenge method from that file, with confirmation.

You choose how to prove control of the domain, and the plugin remembers your choice (in ~/.config/tlsradar/config.json):

  • dns-01 - you add a TXT record by hand (works anywhere).
  • dns-01-cloudflare / dns-01-route53 - the plugin sets the TXT record for you via the provider API, reading your token from the local environment (CLOUDFLARE_API_TOKEN, or your configured aws CLI). Those credentials stay on your machine - they're never sent to TLS Radar or Beacon.
  • http-01 - serve a file on http://yourdomain (port 80); issues the apex only.

When a cert is issued, TLS Radar emails you about ongoing monitoring - the cert → monitoring handoff is fully automatic and server-side.

Works in Claude Code and Cowork

This is a standard plugin, so it runs in both Claude Code and Claude Cowork. Scanning, certificate issuance, and monitoring all work in either client: the tools come from one MCP server, and the certificate flow runs openssl plus a bundled helper script locally (both clients can run local commands and the bundled script via ${CLAUDE_PLUGIN_ROOT}). Connecting for monitoring uses your client's built-in OAuth - /mcp in Claude Code, or the equivalent connect step in Cowork.

Use in Claude.ai (custom connector)

You don't need Claude Code to scan and monitor from Claude. TLS Radar is a standard remote MCP server, so you can add it as a custom connector in the Claude.ai apps (web, desktop, mobile) on any plan - Free included (Free allows one connector).

  1. Open Settings → Connectors (Team/Enterprise: Organization settings → Connectors, Owner only).
  2. Click Add custom connector.
  3. Paste the connector URL: https://tlsradar.com/api/v1/mcp/connect
  4. Save, then sign in to TLS Radar when the OAuth prompt appears (the connector is an authenticated surface - sign-in connects your account once, then scanning and monitoring both work).

Then just ask in plain language - "scan example.com", "what certs are expiring soon", "monitor api.foo.io". There are no slash commands in Claude.ai; the tool descriptions route your request.

No account? Use Claude Code instead. The anonymous, no-signup scanning and free cert issuance live in the Claude Code plugin (below), which talks to the public …/api/v1/mcp endpoint. The Claude.ai connector requires a one-time sign-in because hosted connectors must authenticate.

Certificate issuance stays a Claude Code / Cowork feature. /tls-cert generates your private key locally with openssl, which the Claude.ai apps can't do (no local shell). In a connector you get scanning and monitoring; to issue a Let's Encrypt cert with the key staying on your machine, use the plugin in Claude Code/Cowork, or the web form at beacon.tlsradar.com.

Install

In Claude Code, add the marketplace and install - two commands, no clone, no paths:

/plugin marketplace add TLS-Radar/tlsradar-claude-plugin/plugin install tlsradar@tlsradar

(Or browse it in the /plugin menu after adding the marketplace.) In Claude Cowork, add it from the plugin catalog (search "TLS Radar"). That's it - scanning and cert issuance work immediately. Run /mcp (or Cowork's connect step) when you want monitoring.

Manual install (no marketplace)
bash
git clone https://github.com/TLS-Radar/tlsradar-claude-plugin ~/.claude/plugins/tlsradar

Free plan limits

  • 1 monitor included free
  • 1 alert per month, delivered at 7 days before expiry
  • Unlimited free scans (rate-limited)
  • Free Let's Encrypt issuance
  • REST API access on every plan, including Free

When you hit the monitor limit, the tool's response includes the recommended upgrade and a pricing URL.

Configuration

Nothing is required. Optional environment variables:

  • TLSRADAR_BASE_URL - override the TLS Radar URL (default https://tlsradar.com). Useful for staging/self-host.

Anonymous usage id. The first time you run a scan or cert command, the plugin mints a random id at ~/.config/tlsradar/install_id and passes it (as a client_id argument) so anonymous usage can be attributed to one install. It identifies an install, not a person. The plugin runs no startup hook, does not modify your shell config, and sends no tracking header - the id travels only as that argument, read from the local file.

To opt out: rm ~/.config/tlsradar/install_id. With the file gone, no id is sent.

Privacy & security

  • This plugin ships no tokens or credentials - there's nothing secret in this repo. See SECURITY.md.
  • The OAuth token is managed by Claude Code's MCP client, not by this plugin.
  • Certificate private keys are generated locally and never sent to any server.
  • DNS-provider credentials (CLOUDFLARE_API_TOKEN, AWS CLI) are read from your local environment and never sent to TLS Radar or Beacon.
  • An anonymous install id is sent for usage attribution, passed as a tool argument read from ~/.config/tlsradar/install_id (see Configuration to opt out). The plugin modifies no shell files and sends no tracking header. It identifies an install, not a person.
  • To revoke access: https://tlsradar.com/oauth/authorized_applications or remove the MCP server in /mcp.
  • Access tokens expire in 2 hours; refresh tokens rotate on use, capped at 90 days.

Layout

.├── README.md                        # this file├── CLAUDE.md                        # architecture / funnel / contracts (humans + AI agents)├── CONTRIBUTING.md                  # dev loop + how to add commands├── CHANGELOG.md                     # version history├── SECURITY.md                      # reporting + why the plugin holds no secrets├── LICENSE                          # MIT├── .claude-plugin/plugin.json       # plugin manifest├── .claude-plugin/marketplace.json  # self-hosting marketplace entry├── .mcp.json                        # MCP server config (one remote URL)├── commands/                        # slash commands (how to add one: CONTRIBUTING.md)├── skills/                          # NL skill router (with its own README)├── tools/manifest.json              # single source of truth for tool names├── scripts/                         # CI guards + tested local helpers (DNS provider, cert CSR/chain)└── evals/                           # tool-routing evals (prompt → expected tool)

Contributing

Start with CONTRIBUTING.md for the dev loop (all checks are offline and run with python3). For architecture, the funnel, contract pitfalls, and the release process, read CLAUDE.md - useful for both humans and AI agents. Changes are tracked in CHANGELOG.md.

Security reports: [email protected] (never a public issue) - see SECURITY.md.

License

MIT © TLS Radar

來源:README.md,提交 1fdc122

工具

16

scan_domain

SSL/TLS Scan

Run a free, anonymous SSL/TLS scan against a hostname and return certificate details. No account required.

輸入參數domain必填client_id

create_certificate

Start Certificate Issuance

Start issuing a FREE Let's Encrypt certificate for a domain (no account required). Step 1 of 3. Lifetime is Let's Encrypt's default: 90 days today, 64 days from 2027-02-10; read the real expiry from the issued certificate. Pick a validation method with `challenge`: "dns-01" (default; publish a TXT record; covers apex + www) or "http-01" (serve a file over HTTP on port 80; issues the exact domain only). dns-01 with a DNS-provider API token is the most automatable; http-01 suits a server you control on port 80. Returns an order_id plus either dns_records (dns-01) or http_files (http-01) to put in place. Next: poll `check_certificate_propagation` until all_found, then call `finalize_certificate`. Strongly prefer the CSR path at finalize (the private key never leaves the user's machine). Issuing automatically offers the user ongoing monitoring by email once it completes - don't add a monitor manually afterward.

輸入參數email必填domain必填challengeclient_idmarketing_consent

check_certificate_propagation

Check Challenge Propagation

Check whether the DNS TXT records for a certificate order have propagated (Cloudflare/Google/Quad9). Step 2 of issuance - poll until all_found is true, then call finalize_certificate. Returns per-record resolver results.

輸入參數order_id必填

finalize_certificate

Finalize Certificate

Finalize and issue a certificate order in one call: validates the DNS challenges, waits for Let's Encrypt, and returns the issued cert. Step 3 of issuance - call after check_certificate_propagation reports all_found. STRONGLY PREFER passing csr_pem (generate the key + CSR locally with openssl so the private key never leaves the machine). Returns leaf_pem/chain_pem/fullchain_pem. If you must, pass a passphrase instead to get a PKCS#12 bundle - but a CSR is safer. If it replies "still validating", DNS hasn't fully propagated: re-check check_certificate_propagation and call again. Needs a locally-generated CSR (csr_pem) - requires a local shell with openssl. On a surface without one (e.g. a Claude.ai custom connector) this can't complete; it returns guidance to finish in Claude Code/Cowork or the web form. Scanning and monitoring work everywhere. On success the structuredContent carries a `handoff` object - relay `handoff.message` to the user and do NOT separately call add_monitor; the cert→monitoring handoff is automatic and server-side.

輸入參數csr_pemorder_id必填passphraseresume_tokenmax_wait_seconds

get_certificate_status

Certificate Order Status

Return the current state of a certificate order (dns_pending, validating, ready, completed, failed) and per-authorization Let's Encrypt statuses. Use it to resume an interrupted issuance.

輸入參數order_id必填

renew_certificate

Renew Certificate

Renew a certificate by cloning a recent order (requires the original order_id; Beacon purges orders after ~24h). Returns a new order_id and fresh DNS TXT records - then poll check_certificate_propagation and call finalize_certificate. If you don't have an order_id (the usual case at renewal time), call create_certificate for the domain instead; that IS the renewal.

輸入參數order_id必填

get_account

Account & Plan Info

Return the current user's plan, limits, and usage so the client can render upgrade nudges proactively.

無需輸入參數。

list_monitors

List Monitored Domains

List all certificates currently being monitored across the user's teams. If the response's structuredContent includes a `nudge` object, the user is at their monitor cap - surface it casually ONCE (lead with `nudge.recommended_upgrade`, mention `nudge.also_available` in one closing line); don't force it if it doesn't fit the conversation.

無需輸入參數。

add_monitor

Add Domain to Monitoring

Add a domain to ongoing certificate monitoring with expiry alerts. Requires authentication (the user runs /mcp once). If the plan's monitor limit is reached, the response's structuredContent carries a limit-reached payload - when relaying it, LEAD with `recommended_upgrade` (typically Starter, $9.99/mo), mention `also_available` tiers in a single closing line, and offer removing an existing monitor as the free alternative. Don't dump a full tier comparison; that's choice paralysis at the moment of action.

輸入參數domain必填

add_monitors

Add Multiple Domains

Add multiple domains to monitoring in one call. Returns a per-domain status so the caller can show partial-success outcomes. Honors the same plan-limit checks as add_monitor.

輸入參數domains必填

remove_monitor

Stop Monitoring a Domain

Stop monitoring a domain. Accepts the domain name or the host_id returned by list_monitors.

輸入參數domainhost_id

list_expiring_certificates

Expiring Certificates

Return monitored certificates expiring within N days. Defaults to 30. If the response's structuredContent includes a `nudge` object, the user is watching enough soon-to-expire certs to benefit from a higher tier - mention it casually ONCE (lead with `nudge.recommended_upgrade`); skip it if it doesn't fit.

輸入參數within

get_scan_history

Scan History

Return recent scan results for a domain the user monitors. Useful for spotting issuer changes, grade drops, or vulnerability appearances over time.

輸入參數limitdomain必填

export_monitors

Export Monitors

Dump the user's monitors as a JSON structure suitable for backup, migration, or infrastructure-as-code workflows. Tokens and PII are NEVER included - only domain configuration.

無需輸入參數。

import_monitors

Import Monitors

Create monitors from a JSON structure (typically produced by `export`). Skips domains the user is already monitoring; honors the plan's domain limit. Returns a per-domain status.

輸入參數payload必填

invite_team_member

Invite Teammate

Invite a user to a team by email. Defaults to the user's current team. Honors the plan's seat limit (returns the same upgrade payload as add_monitor when the cap is hit).

輸入參數roleemail必填team_id

版本歷史

1
  1. v0.5.1最新Sep 16, 2026

評分

已滿足適用檢查項的 100%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分