关于 endoflife.ai
endoflife.ai 是面向开发和运维团队的只读 MCP 服务,用于检查软件支持周期和终止生命周期风险。它整合版本状态、风险评分、技术栈与 SBOM 检查及安全信息源,并在结果中附上来源 URL。
主要功能
- 01检查版本支持状态
- 02评估终止生命周期风险
- 03扫描技术栈和 SBOM
- 04查看产品生命周期历史
- 05检查 KEV 和设备信息源
- 06查找升级路径及即将到期产品
适用场景
- 01审计技术栈中的依赖支持情况
- 02评估 SBOM 中的生命周期风险
- 03在产品停止支持前规划升级
- 04检查某产品的 KEV 暴露情况
MCP 相关
通过 Streamable HTTP 向 MCP 客户端提供只读生命周期工具、资源和提示词。工具查询 endoflife.ai API 与已发布的信息源,结果包含来源 URL。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://mcp.endoflife.aiclaude mcp add --transport http e30f5a https://mcp.endoflife.ai{"mcpServers":{"e30f5a":{"type":"http","url":"https://mcp.endoflife.ai"}}}在 Cursor 中打开{"servers":{"e30f5a":{"type":"http","url":"https://mcp.endoflife.ai"}}}在 VS Code 中打开{"mcpServers":{"e30f5a":{"type":"http","url":"https://mcp.endoflife.ai"}}}{"mcpServers":{"e30f5a":{"serverUrl":"https://mcp.endoflife.ai"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
https://mcp.endoflife.ai需要授权工具
5| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| product | string | 是 | 产品 slug 或名称,例如:"postgresql"、"nodejs"、"ubuntu"。 |
| version | string | 是 | 版本/周期,例如:"14"、"18"、"20.04"。 |
详细介绍
endoflife.ai — MCP 服务
通过 Model Context
Protocol(MCP,Streamable HTTP 传输)向 AI Agent 提供 endoflife.ai 的生命周期情报。这是一个无依赖的 Cloudflare Worker,封装了公开的 api.endoflife.ai/v1 端点和网站发布的 feed——不重复存储数据,每个回答都附带来源 URL。
当前版本:1.4.0(位于 src/index.js 的 SERVER_INFO.version、server.json、
package.json、Dockerfile 的 ARG VERSION,以及网站的
endoflife/.well-known/mcp/server-card.json 中——请确保它们一致;注册表和
Glama 会读取 server.json)。
1.4.0:check_sbom 是 API 的 POST /v1/sbom 的轻量代理(所有入口共用一个解析器;版本保留其发行系列,例如 python 3.12、ubuntu 20.04)。
超过层级上限时,会返回已评分的子集以及 limit_note 和
not_scored_count;scan_stack 会对该层级允许的前 N 个项目评分,并将其余项目列在
not_checked 中。在 1.4.0 之前,check_sbom 会将所有版本截断为主版本号,而包含超过 5 个匹配组件的无密钥 SBOM 则不会返回任何结果。
工具(全部为只读)
| 工具 | 功能 | 数据来源 |
|---|---|---|
check_eol | 产品 X 的版本 Y 是否已终止生命周期? | GET /v1/status/:slug/:version |
get_risk_score | EOL 风险评分(0–100)+ 因素明细 | GET /v1/score/:slug[/:version] |
scan_stack | 一次性评估整个技术栈 | POST /v1/batch |
list_products | 搜索 700 多个受追踪产品 → 解析 slug | GET /v1/products |
get_product_lifecycle | 某个产品的完整版本历史和日期 | GET /v1/product/:slug |
get_kev_exposure | 归属于某个产品的所有 CISA KEV 条目(添加日期、截止日期、原文所述的必要操作)+ 已遭利用和无法修补的条目 | endoflife.ai/kev-products.json、exploited-and-unpatchable.json |
get_upcoming_eol | 接下来 N 天内即将终止生命周期的所有项目(整个目录或指定产品列表) | endoflife.ai/scanner-db.json |
get_edge_device_status | EOS Edge Device feed,包含 BOD 26-02 状态,可按平台/状态/型号筛选 | endoflife.ai/eos-edge-devices.json |
get_upgrade_path | 支持的目标版本、网站建议、供应商声明的后续版本 | GET /v1/product/:slug、checker-db.json、edge feed |
check_sbom | CycloneDX / SPDX JSON → 按包 URL 解析组件(精确匹配、purl-map.json);无 purl 时按名称解析 → 评分数量不超过层级上限,其余计入说明;未匹配项会附带原因列出,绝不猜测 | POST /v1/sbom |
每个工具都声明了 annotations(readOnlyHint、idempotentHint)和宽松的
outputSchema;结果以 JSON 文本和 structuredContent 两种形式返回。查询未命中时会返回“你是否想找”的 slug 建议(基于实时产品列表进行前缀/子串/编辑距离 ≤ 2 匹配)。
资源(resources/list / resources/read):llms.txt、EOS Edge Device
feed、已遭利用和无法修补条目、按产品划分的 KEV、edge 变更日志。
提示词(prompts/list / prompts/get):audit_stack、eol_calendar、
edge_device_review。
端点:POST /(JSON-RPC)、GET /(信息页)、GET /health(存活状态 JSON)、
GET /.well-known/mcp/server-card.json(发现卡片)。
使用遥测
配置 USAGE Analytics Engine 绑定(见 wrangler.toml,数据集
endoflife_mcp_usage)后,每次方法/工具调用都会写入一个数据点:工具名称、
客户端 user agent、成功/错误、有密钥/匿名、延迟(毫秒)。不记录请求正文。可通过 Cloudflare Analytics Engine SQL API 查询,例如:
SELECT blob1 AS tool, count() AS calls, sum(_sample_interval) AS weighted
FROM endoflife_mcp_usage WHERE timestamp > NOW() - INTERVAL '7' DAY
GROUP BY tool ORDER BY calls DESC
该绑定为可选项;未配置时,代码不会执行任何操作。
部署
生产环境部署通过 GitHub Actions 执行,不要在本地运行 wrangler:
gh workflow run mcp-server-deploy.yml
(.github/workflows/mcp-server-deploy.yml,使用固定版本的 wrangler;需要设置仓库机密 CLOUDFLARE_API_TOKEN / CLOUDFLARE_ACCOUNT_ID。)本地仍可使用 wrangler dev 进行开发;默认环境和 production 环境都声明了 API 服务绑定和 USAGE 数据集。
自定义域名(mcp.endoflife.ai)
wrangler.toml 中的 route 要求 mcp.endoflife.ai 通过 Cloudflare 解析:
添加一个 AAAA 记录,名称为 mcp,IPv6 地址为 100::,并启用代理。此记录已配置。
部署前测试
Node 测试框架会针对实时 API 和数据源测试每个方法(该模块无需修改即可在 Node 中运行,只需设置 env.API = { fetch }):
node scratch/mcp_test.mjs # see the session scratchpad; 22 RPC calls, expects 0 failures
离线单元测试(模拟 fetch,不访问网络):在 mcp-server/ 中运行 npm test
(node --test test/)。
作为容器运行(Red Hat UBI)
server.mjs 在普通 Node.js 进程中运行与 mcp.endoflife.ai 相同的处理程序;Dockerfile 则基于 registry.access.redhat.com/ubi9/nodejs-22-minimal 打包该程序,用于集群部署(OpenShift AI MCP 目录所需的形式)。无需构建步骤,也没有依赖项;容器通过 HTTPS 与 https://api.endoflife.ai 通信,并以权限受限的 UBI 用户(uid 1001)运行。
docker build -t endoflife-mcp mcp-server/
docker run --rm -p 8080:8080 endoflife-mcp
curl -s localhost:8080/health
端点与 Worker 自身的端点相同:POST /(Streamable HTTP JSON-RPC)、GET /health(就绪状态)、GET /.well-known/mcp/server-card.json。设置 ENDOFLIFE_API_KEY(docker run -e ENDOFLIFE_API_KEY=...),服务器便会在每次未携带自身密钥的调用中,将其作为 X-API-Key 发送。从 2026 年 11 月 16 日 00:00 UTC 起,自托管服务器需要设置该密钥,届时 API 将不再响应不带密钥的数据请求;只有 mcp.endoflife.ai 上托管的端点仍无需密钥。访问 https://endoflife.ai/api#free-key 可立即通过邮件获取免费密钥(每天 150 次请求,无有效期限制;更高用量需使用付费密钥)。.github/workflows/rhel-validation.yml 已在 RHEL 9 和 10 上通过 Node 20 和 22 验证(证据见 docs/company/redhat-validation-evidence.md)。
从 MCP 客户端连接
Claude Desktop / Cursor / VS Code(mcpServers):
{
"mcpServers": {
"endoflife": { "command": "npx", "args": ["mcp-remote", "https://mcp.endoflife.ai"] }
}
}
支持原生远程 MCP 的客户端可直接使用此 URL:
{ "mcpServers": { "endoflife": { "url": "https://mcp.endoflife.ai" } } }
无需客户端即可测试
# tools/list
curl -s https://mcp.endoflife.ai -X POST -H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | jq
# KEV exposure for a product
curl -s https://mcp.endoflife.ai -X POST -H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"get_kev_exposure","arguments":{"product":"ivanti-connect-secure"}}}' | jq
# health + discovery card
curl -s https://mcp.endoflife.ai/health | jq
curl -s https://mcp.endoflife.ai/.well-known/mcp/server-card.json | jq
身份验证与套餐
通过托管端点 mcp.endoflife.ai 进行个人使用和评估时,读取工具无需密钥(每个 Agent 每天可请求 200 次,每次调用最多 5 个组件)。直接调用 API 或自行运行此服务器时,仅在 2026 年 11 月 16 日 00:00 UTC 之前无需密钥(匿名套餐:每天 50 次请求,每次 SBOM 或批量调用最多 3 个组件);此后,每个数据请求都需要密钥(在自托管服务器上设置 ENDOFLIFE_API_KEY;访问 https://endoflife.ai/api#free-key 获取免费密钥)。在公司工具中运行、检查库存或按计划调用的 Agent 属于生产用途,应使用付费密钥:Starter(每月 89 美元,每天 10,000 次请求,每次调用最多 25 个组件)或 Pro(每月 199 美元,不限每日请求次数,每次调用最多 50 个组件);在 https://endoflife.ai/api?utm_source=mcp#get-key 结账时即可获取。将密钥放入 X-API-Key 请求头;Worker 会将其直接传递给 api.endoflife.ai。
备注
- 同一区域陷阱:
api.endoflife.ai是此区域中的 Worker;直接对其调用普通fetch()会访问源站并失败。在生产环境中必须使用API服务绑定。 - 静态数据源从站点源站获取,并设置
cf.cacheTtl = 600,同时在隔离环境中缓存 10 分钟。 - **按客户端限流:**依赖上游 API 的限流机制。如果 MCP 流量增长,请在调用上游之前添加一个以
CF-Connecting-IP为键的 KV 限流器。 - 发现卡片也通过主站提供,地址为
https://endoflife.ai/.well-known/mcp/server-card.json。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。