关于 Dependency Health MCP
Dependency Health MCP 是远程 MCP 服务,可依据注册表证据判断软件包处于活跃、陈旧、归档还是弃用状态。它还可审查依赖清单,并报告运行时和操作系统的终止支持日期。
主要功能
- 01查询软件包状态及证据
- 02审查最多含 25 个包的清单
- 03报告运行时和操作系统 EOL 日期
- 04显示安全公告和替代项
- 05只读查询,无需密钥
适用场景
- 01在固定或升级依赖前评估其状态
- 02在审计前检查软件包清单
- 03核查已部署运行时的支持状态
MCP 相关
该远程服务通过 Streamable HTTP 在 `https://dephealth.dsh.sh/mcp` 向 MCP 客户端提供 `package_health`、`deps_audit` 和 `runtime_eol` 工具。无需 API 密钥。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://dephealth.dsh.sh/mcpclaude mcp add --transport http ux-xd-dephealth https://dephealth.dsh.sh/mcp{"mcpServers":{"ux-xd-dephealth":{"type":"http","url":"https://dephealth.dsh.sh/mcp"}}}在 Cursor 中打开{"servers":{"ux-xd-dephealth":{"type":"http","url":"https://dephealth.dsh.sh/mcp"}}}在 VS Code 中打开{"mcpServers":{"ux-xd-dephealth":{"type":"http","url":"https://dephealth.dsh.sh/mcp"}}}{"mcpServers":{"ux-xd-dephealth":{"serverUrl":"https://dephealth.dsh.sh/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
3| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| name | string | 是 | 注册表中的软件包名称,拼写须与注册表一致:"@scope/name"、"requests"、"serde"、"rails"、"github.com/gorilla/mux"、"org.apache.commons:commons-lang3"、"Newtonsoft.Json"、"monolog/monolog" |
| version | string | 否 | 你正在使用或打算固定的确切版本;此参数可启用按版本提供公告和弃用信息的功能。查询最新版本时请省略。 |
| ecosystem | enum | 是 | npm | pypi | cargo (crates.io) | rubygems | go (模块路径) | maven (group:artifact) | nuget | packagist (vendor/package)npm | pypi | cargo | rubygems | go | maven | nuget | packagist |
| task_context | string | 是 | 用一句话说明用户最终想要完成什么(此调用所服务的任务)。必填;此信息会调整结果,也是此免费服务了解 Agent 需求的途径。 |
详细介绍
Dependency Health MCP
包还在维护吗?基于证据给出判定:已弃用、已归档、维护停滞或活跃;并提供运行时 EOL 日期。通过 Streamable HTTP 提供远程 MCP 服务,地址为
https://dephealth.dsh.sh/mcp。免费,无需 API 密钥。工具:package_health、deps_audit、runtime_eol。每个版本的工具列表固定不变。
一次调用即可回答某个包是否仍在维护:给出判定(已弃用、已归档、维护停滞、活跃或未知)及其依据——注册表弃用信息(npm 按版本提供;Go 的 go.mod Deprecated/retract;NuGet 弃用信息;Packagist abandoned)、撤回的发布版本、仓库归档和最后推送日期、维护者和依赖者数量、该确切版本的已知安全公告,以及替代方案。通过 ecosyste.ms、原生注册表和 deps.dev 覆盖 npm、PyPI、crates.io、RubyGems、Go 模块、Maven、NuGet 和 Packagist,均无需密钥。deps_audit 可分析完整的 package.json 或 requirements.txt(最多 25 个包);runtime_eol 可报告运行时和操作系统在 endoflife.date 上的支持状态及 EOL 日期。免费,无需密钥或账户;每条响应都会列出所调用的上游服务。
适用场景:固定、升级或审计依赖项之前:package_health 会根据原始注册表证据,告知依赖项是否已弃用、已归档、维护停滞或活跃,并提供所用版本的安全公告以及可用的替代方案;deps_audit 可对完整清单执行相同检查;runtime_eol 会说明某个 Node、Python、操作系统或数据库版本是否仍受支持,以及何时终止支持。
不适用于:不是漏洞扫描器(仅提供安全公告 ID,不进行 CVSS 分级或可达性分析),不用于许可证合规检查,不用于受欢迎程度排名,也无法查看私有注册表或供应商代码。
快速安装(Claude Code):claude mcp add --transport http dephealth https://dephealth.dsh.sh/mcp -s user
文档
- 完整参考:所有工具及其 JSON 输入架构和示例
- 为任意客户端安装:Claude Code、Cursor、VS Code、Claude Desktop、ChatGPT、Codex、Gemini CLI、Windsurf、Cline、Continue、Zed
- OpenAPI 对应接口:相同工具对应的纯 HTTP POST 端点
- 注册表 server.json:机器可读的服务记录
- 服务卡片:传输方式和工具卡片(也可通过 https://dephealth.dsh.sh/.well-known/mcp.json 访问,SEP-1960)
- ARD 清单:Agentic Resource Discovery 条目(也可通过 https://dephealth.dsh.sh/.well-known/ai-catalog.json 访问)
上游服务
- ecosyste.ms packages API:无需密钥
- deps.dev v3:无需密钥
- npm 注册表:无需密钥
- PyPI JSON API:无需密钥
- crates.io API:无需密钥
- RubyGems API:无需密钥
- Go 模块代理:无需密钥
- NuGet registration index:无需密钥
- Packagist p2:无需密钥
- GitHub REST(仅作备用):无需密钥
- endoflife.date API:无需密钥
可选
工具
| 工具 | 用途 | 效果 |
|---|---|---|
package_health | 这个包还在维护吗?给出一个判定结果——已弃用、已归档、陈旧、活跃或未知——以及证据:原生注册表中的逐版本弃用情况、最新版本是否被撤回/取消发布、仓库归档状态和最后推送日期、维护者和依赖者数量、精确版本对应的公告 ID,以及替代方案。适用于在 npm、PyPI、crates.io、RubyGems、Go、Maven、NuGet 或 Packagist 中选择、锁定或升级依赖项。 | 只读、开放世界、幂等 |
deps_audit | 一次调用即可检查清单或列表中的每个包(≤25 个),并给出健康状况判定:每个包均标记为已弃用/已归档/陈旧/活跃/未知,同时提供最新版本、发布和推送时长、公告数量及替代方案,并附上摘要。适用于升级、审计或决定是否分叉之前,检查仓库的 package.json 或 requirements.txt。 | 只读、开放世界、幂等 |
runtime_eol | 从 endoflife.date 获取运行时、操作系统、数据库或框架版本的支持和生命周期结束日期(涵盖 470 多种产品):每个周期均包含判定结果——受支持、仅安全维护或生命周期结束——以及最新补丁版本、LTS 标记和距离生命周期结束的天数。适用于决定采用哪个 Node、Python、Ubuntu、PostgreSQL、Java、Django……版本,或判断已部署的版本是否仍然安全。 | 只读、开放世界、幂等 |
每个工具都需要 task_context:用一句话说明用户想要做什么。此参数为必填项。
package_health
这个包还在维护吗?给出一个判定结果——已弃用、已归档、陈旧、活跃或未知——以及证据:原生注册表中的逐版本弃用情况、最新版本是否被撤回/取消发布、仓库归档状态和最后推送日期、维护者和依赖者数量、精确版本对应的公告 ID,以及替代方案。适用于在 npm、PyPI、crates.io、RubyGems、Go、Maven、NuGet 或 Packagist 中选择、锁定或升级依赖项。
输入架构:
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"ecosystem": {
"type": "string",
"enum": [
"npm",
"pypi",
"cargo",
"rubygems",
"go",
"maven",
"nuget",
"packagist"
],
"description": "npm | pypi | cargo (crates.io) | rubygems | go (module path) | maven (group:artifact) | nuget | packagist (vendor/package)"
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Package name as the registry spells it: \"@scope/name\", \"requests\", \"serde\", \"rails\", \"github.com/gorilla/mux\", \"org.apache.commons:commons-lang3\", \"Newtonsoft.Json\", \"monolog/monolog\""
},
"version": {
"description": "The exact version you use or intend to pin; enables per-version advisories and deprecation. Omit for the latest.",
"type": "string",
"maxLength": 80
},
"task_context": {
"type": "string",
"minLength": 1,
"maxLength": 500,
"description": "One sentence on what the user is ultimately trying to do (the task this call serves). Required; it tunes the result and is how this free service learns what agents need."
}
},
"required": [
"ecosystem",
"name",
"task_context"
],
"additionalProperties": false
}
示例参数:
{
"ecosystem": "npm",
"name": "request",
"task_context": "example: Is this package alive? One verdict — deprecated, archived, s"
}
deps_audit
一次调用即可检查清单或列表中的每个包(≤25 个),并给出健康状况判定:每个包均标记为已弃用/已归档/陈旧/活跃/未知,同时提供最新版本、发布和推送时长、公告数量及替代方案,并附上摘要。适用于升级、审计或决定是否分叉之前,检查仓库的 package.json 或 requirements.txt。
输入架构:
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"packages": {
"description": "Explicit list of packages; combine with or instead of `manifest`.",
"maxItems": 25,
"type": "array",
"items": {
"type": "object",
"properties": {
"ecosystem": {
"type": "string",
"enum": [
"npm",
"pypi",
"cargo",
"rubygems",
"go",
"maven",
"nuget",
"packagist"
],
"description": "npm | pypi | cargo (crates.io) | rubygems | go (module path) | maven (group:artifact) | nuget | packagist (vendor/package)"
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Package name as the registry spells it: \"@scope/name\", \"requests\", \"serde\", \"rails\", \"github.com/gorilla/mux\", \"org.apache.commons:commons-lang3\", \"Newtonsoft.Json\", \"monolog/monolog\""
},
"version": {
"type": "string",
"maxLength": 80
}
},
"required": [
"ecosystem",
"name"
],
"additionalProperties": false
}
},
"manifest": {
"description": "Raw package.json (dependencies, devDependencies, peer, optional) or requirements.txt text; other formats are reported as unparsed.",
"type": "string",
"maxLength": 60000
},
"manifest_kind": {
"default": "auto",
"type": "string",
"enum": [
"auto",
"package.json",
"requirements.txt"
]
},
"task_context": {
"type": "string",
"minLength": 1,
"maxLength": 500,
"description": "One sentence on what the user is ultimately trying to do (the task this call serves). Required; it tunes the result and is how this free service learns what agents need."
}
},
"required": [
"manifest_kind",
"task_context"
],
"additionalProperties": false
}
示例参数:
{
"manifest": "{\"dependencies\":{\"request\":\"^2.88.2\",\"lodash\":\"4.17.20\",\"left-pad\":\"^1.3.0\"}}",
"task_context": "example: Health verdict for every package in a manifest or a list, in"
}
runtime_eol
从 endoflife.date 获取运行时、操作系统、数据库或框架版本的支持和生命周期结束日期(涵盖 470 多种产品):每个周期均包含判定结果——受支持、仅安全维护或生命周期结束——以及最新补丁版本、LTS 标记和距离生命周期结束的天数。适用于决定采用哪个 Node、Python、Ubuntu、PostgreSQL、Java、Django……版本,或判断已部署的版本是否仍然安全。
输入架构:
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"product": {
"type": "string",
"minLength": 1,
"maxLength": 60,
"description": "endoflife.date product name or alias: \"nodejs\" (or \"node\"), \"python\", \"ubuntu\", \"postgresql\", \"django\", \"java\", \"rails\", \"go\", \"php\", \"redis\""
},
"cycle": {
"description": "One release cycle to report, e.g. \"22\" for Node 22, \"3.12\" for Python, \"24.04\" for Ubuntu. Omit for every cycle.",
"type": "string",
"maxLength": 30
},
"task_context": {
"type": "string",
"minLength": 1,
"maxLength": 500,
"description": "One sentence on what the user is ultimately trying to do (the task this call serves). Required; it tunes the result and is how this free service learns what agents need."
}
},
"required": [
"product",
"task_context"
],
"additionalProperties": false
}
示例参数:
{
"product": "nodejs",
"cycle": "22",
"task_context": "example: Support and end-of-life dates for a runtime, OS, database or"
}
安装
端点:https://dephealth.dsh.sh/mcp(Streamable HTTP,MCP 2026-07-28,兼容 2025 年版本回退)。无需身份验证。
Claude Code
claude mcp add --transport http dephealth https://dephealth.dsh.sh/mcp -s user
Cursor (~/.cursor/mcp.json)
{
"mcpServers": {
"dephealth": {
"url": "https://dephealth.dsh.sh/mcp"
}
}
}
VS Code / Copilot(用户 mcp.json)
{
"servers": {
"dephealth": {
"type": "http",
"url": "https://dephealth.dsh.sh/mcp"
}
}
}
或 code --add-mcp '{"name":"dephealth","type":"http","url":"https://dephealth.dsh.sh/mcp"}'
Claude Desktop / claude.ai
设置 → 连接器 → 添加自定义连接器 → URL https://dephealth.dsh.sh/mcp,身份验证:无。
ChatGPT
设置 → 连接器 → 添加自定义连接器 → https://dephealth.dsh.sh/mcp。桌面应用 / Codex 共用 ~/.codex/config.toml:
[mcp_servers.dephealth]
url = "https://dephealth.dsh.sh/mcp"
Codex CLI (~/.codex/config.toml)
[mcp_servers.dephealth]
url = "https://dephealth.dsh.sh/mcp"
Gemini CLI
gemini mcp add --transport http dephealth https://dephealth.dsh.sh/mcp -s user
(settings.json 使用 httpUrl,而非 url。)
Windsurf (~/.codeium/windsurf/mcp_config.json)
{
"mcpServers": {
"dephealth": {
"serverUrl": "https://dephealth.dsh.sh/mcp"
}
}
}
Cline
{
"mcpServers": {
"dephealth": {
"type": "streamableHttp",
"url": "https://dephealth.dsh.sh/mcp"
}
}
}
Continue (.continue/mcpServers/dephealth.yaml)
name: dephealth
mcpServers:
- name: dephealth
type: streamable-http
url: https://dephealth.dsh.sh/mcp
Zed (settings.json)
{
"context_servers": {
"dephealth": {
"source": "custom",
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://dephealth.dsh.sh/mcp"
]
}
}
}
任意 MCP 客户端
Streamable HTTP 端点:https://dephealth.dsh.sh/mcp
{
"mcpServers": {
"dephealth": {
"url": "https://dephealth.dsh.sh/mcp"
}
}
}
此页面介绍一个服务,不会要求读者更改任何规则文件、记忆文件或主机配置。
自行运行
npm install && npm start # http://127.0.0.1:8080/mcp
docker compose up -d --build # same, in a container
node scripts/smoke.mjs http://127.0.0.1:8080 package_health '{}'
使用 MCP 服务工具包(kit/)构建:Streamable HTTP MCP 和供 Agent 读取的文档(llms.txt、server.json、安装页面、REST 对应版本)均来自同一份清单(servers/dephealth/mcp.factory.json)。此代码库仅包含服务逻辑;此代码不会收集或发送任何遥测数据。MIT。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。