# ssl.sh MCP 服务器：在 Claude、Cursor 里直接查证书

> 把 https://ssl.sh/mcp 接入 Claude Code、Claude Desktop、Cursor 等 MCP 客户端，让 AI 助手检查证书、获取证书链、查 CT 日志、解释 SSL 报错。

Source: https://ssl.sh/zh/docs/mcp/
Last updated: 2026-11-10

把 MCP 客户端指向 `https://ssl.sh/mcp`，AI 助手就能直接检查证书、下载完整证书链、查询证书透明度日志、查找 SSL 报错的解释。服务器公开、只读，不需要登录。

## 接入方法

### Claude Code

```bash
claude mcp add --transport http ssl-sh https://ssl.sh/mcp
```

接入后可以直接问：“检查一下 example.com 的证书，什么时候过期？”

需要带 API Key 时：

```bash
claude mcp add --transport http ssl-sh https://ssl.sh/mcp --header "Authorization: Bearer 你的KEY"
```

### Claude Desktop 和 claude.ai

打开 **设置 → 连接器（Connectors）→ 添加自定义连接器**，名称填 `ssl.sh`，地址填 `https://ssl.sh/mcp`。只支持本地（stdio）服务器的客户端，可以在 `claude_desktop_config.json` 里用 `mcp-remote` 转接：

```json
{
  "mcpServers": {
    "ssl-sh": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://ssl.sh/mcp"]
    }
  }
}
```

### Cursor

写进 `~/.cursor/mcp.json`（所有项目生效）或项目里的 `.cursor/mcp.json`：

```json
{
  "mcpServers": {
    "ssl-sh": {
      "url": "https://ssl.sh/mcp"
    }
  }
}
```

其他支持远程 MCP 的工具（如 VS Code、Windsurf、Cherry Studio 等）填同一个地址即可，传输类型选 HTTP（Streamable HTTP）。

## 工具列表

| 工具 | 参数 | 返回 |
|---|---|---|
| `check_certificate` | `host`、`port`（443）、`starttls`、`full`（false） | 有效性、剩余天数、签发者、域名、证书链是否可信和完整、TLS 版本、问题和解决办法链接、评级。`full=true` 时再测 TLS 1.0–1.3、HSTS、CAA 和吊销状态。 |
| `get_certificate_chain` | `host`、`port` | 证书链摘要和 `fullchain.pem`（站点证书 + 中间证书，缺的按 AIA 补齐）。 |
| `days_until_expiry` | `host`、`port` | 剩余整天数和精确的过期时间。 |
| `search_ct_logs` | `domain`、`include_subdomains`（true）、`include_expired`（false）、`limit`（50，最大 500） | CT 日志里的证书，按时间倒序。 |
| `check_caa` | `domain` | 生效的 CAA 记录及其所在的域名。 |
| `check_hsts` | `host`、`port` | Strict-Transport-Security 响应头和 HSTS 预加载状态。 |
| `explain_ssl_error` | `error`、`lang`（`en` 或 `zh`） | 最匹配的 ssl.sh 报错页面链接和要点；`lang` 设为 `zh` 返回中文页面。 |

每个结果都同时包含给模型看的简短文字和结构化数据（`structuredContent`）。工具执行失败（比如 `blocked_address`、DNS 解析失败）会以 `isError: true` 的结果返回，AI 助手可以据此向你解释原因。

## 协议细节

- **地址：**`POST https://ssl.sh/mcp`，请求体是一条 JSON-RPC 2.0 消息（兼容 2025-03-26 版本的批量请求）。
- **响应：**`Content-Type: application/json`。`notifications/initialized` 这类通知返回 `202 Accepted`，没有响应体。`GET /mcp` 返回 405（不提供 SSE 推送流）。
- **版本协商：**`initialize` 时如果客户端请求的 `protocolVersion` 是 `2025-11-25`、`2025-06-18`、`2025-03-26` 之一就原样返回，否则返回 `2025-11-25`。请求头 `MCP-Protocol-Version` 是不支持的版本时返回 400。
- **方法：**`initialize`、`ping`、`tools/list`、`tools/call`。
- **会话：**无状态，不下发 `Mcp-Session-Id`。
- **额度：**每次触发新检查的 `tools/call` 计入 [API 额度](devdoc:api)。

用 curl 测试：

```bash
curl -s https://ssl.sh/mcp -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"curl","version":"1"}}}'

curl -s https://ssl.sh/mcp -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"days_until_expiry","arguments":{"host":"example.com"}}}'
```
