关于 envdoctor
envdoctor 是用于检查代码仓库所需本地环境的命令行工具,面向希望快速确认依赖条件和配置文件是否齐备的开发者。它只运行确定性检查,不执行仓库代码,也不会输出环境变量值。
主要功能
- 01检查 Node 版本范围
- 02确认 Git、npm 和锁文件
- 03比对环境文件中的变量名
- 04输出可读或 JSON 报告
- 05指出失败项及修复方式
适用场景
- 01开始开发前检查本地环境
- 02排查缺失的依赖锁文件
- 03核对 .env 是否包含示例变量
- 04通过 MCP 获取环境检查报告
MCP 相关
通过 stdio 启动 MCP 服务,并提供 doctor_env 工具,以 JSON 返回与命令行相同的检查结果。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
1收录的工具列表 · 更新于 1 天前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| path | string | 是 | 要检查的目标路径 |
详细介绍
envdoctor
envdoctor 会检查本机环境是否符合仓库声明的要求。指定一个仓库目录后,它会运行一组简单且确定性的检查,每项检查都会标明通过或失败,并指出修复方法。它绝不会运行仓库中的代码,也绝不会打印任何机密值。
安装
无需安装即可运行:
npx @reneturcios/envdoctor doctor [path]
也可以全局安装:
npm install -g @reneturcios/envdoctor
CLI
envdoctor doctor [path] [--json]
envdoctor mcp
envdoctor --version
doctor [path]检查path指定的仓库(默认:当前目录),并打印易读的报告。添加--json可获取机器可读的报告。mcp通过 stdio 启动 MCP 服务。--version打印版本。
退出代码:判定结果为 HEALTHY 时返回 0,判定结果为 ISSUES 时返回 1;目标不存在等用法错误返回 2;读取端提前关闭输出管道时返回 141。
MCP
MCP 服务公开一个工具:
doctor_env接受path参数,运行与 CLI 相同的检查,并返回 JSON 报告。
检查项
v0.1 会按以下顺序运行五项检查:
- NODE-VERSION - 将当前运行的 Node 版本(
process.version)与目标package.json中的engines.node范围进行比较。支持的范围语法包括:>=、<=、>、<、=、^20.0.0这样的插入符范围、~20.11.0这样的波浪号范围、20.11.0这样的精确版本、20.x和20.11.x这样的 x 范围、部分版本,以及>=18 <21这样的空格分隔组合。不符合这些语法的范围会作为规则为 RANGE-UNSUPPORTED 的信息发现项报告,而不会进行猜测。如果目标没有package.json,则会跳过此检查,并生成规则为 NO-PACKAGE-JSON 的信息发现项;其余检查仍会运行。 - GIT-PRESENT -
git --version执行成功时通过。 - NPM-PRESENT -
npm --version执行成功时通过。 - LOCKFILE - 目标目录中存在
package-lock.json、yarn.lock或pnpm-lock.yaml其中之一时通过(报告会指出具体文件)。缺少锁文件会生成规则为 NO-LOCKFILE 的中等严重性发现项。 - ENV-FILE - 仅当目标目录中存在
.env.example时适用。如果缺少.env,则会生成规则为 ENV-MISSING 的中等严重性发现项,并给出修复方法:“将 .env.example 复制为 .env 并填写值”。如果存在.env,则会比较.env.example和.env中的键名;每个在.env中缺失的键名都会生成规则为 ENV-KEYS-MISSING 的中等严重性发现项。如果没有.env.example,此检查会通过,因为不需要 env 文件。
每项通过的检查都会计入 counts.checksPassed,并作为规则为 CHECK-PASS 的信息条目出现在报告的发现项中,因此打印的报告会列出所有已运行的检查。
环境变量值绝不会出现在输出中
这项保证很明确:envdoctor 只比较键名。
- 解析
.env.example和.env时,每行只读取第一个=左侧的文本。该文本就是键名。 - 从第一个
=开始的所有内容都是值。解析时会丢弃这些值,不会存储、返回、记录或打印在任何报告、发现项、摘要或错误中。 - 关于 env 文件的发现项只会列出键名,绝不会列出值。例如,ENV-KEYS-MISSING 发现项会指出
.env.example中列出的某个键在.env中缺失;不会提及任何值。
判定规则
- HEALTHY - 没有中等或高严重性发现项。通过的检查、注明原因而跳过的检查,以及 RANGE-UNSUPPORTED 等信息说明都不会改变此判定结果。
- ISSUES - 存在至少一项中等或高严重性发现项。
报告计数包括 checksRun、checksPassed、checksFailed、checksWarned 和 checksSkipped,此外还有按严重性细分的发现项总数。
限制
- v0.1 只检查 Node、git、npm 和文件:
engines.node范围、这两个工具的版本、锁文件,以及上文所述的 env 文件。 - v0.1 不检查端口、运行中的服务、数据库和网络连通性。端口和服务检查属于未来工作。
- 磁盘空间不在检查范围内。
- 仅支持 NODE-VERSION 下列出的 Node 范围语法。任何其他范围语法都会产生 RANGE-UNSUPPORTED 信息发现,而不是通过或失败。
- 不会执行目标仓库中的任何内容。envdoctor 运行的命令只有
git --version和npm --version。
评论
支持 Markdown
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。