mcpField
E
envdoctor

envdoctor

本地服务
github.com/CloudCorpRecords开发工具01 天前更新

关于 envdoctor

envdoctor 是用于检查代码仓库所需本地环境的命令行工具,面向希望快速确认依赖条件和配置文件是否齐备的开发者。它只运行确定性检查,不执行仓库代码,也不会输出环境变量值。

主要功能

  1. 01检查 Node 版本范围
  2. 02确认 Git、npm 和锁文件
  3. 03比对环境文件中的变量名
  4. 04输出可读或 JSON 报告
  5. 05指出失败项及修复方式

适用场景

  1. 01开始开发前检查本地环境
  2. 02排查缺失的依赖锁文件
  3. 03核对 .env 是否包含示例变量
  4. 04通过 MCP 获取环境检查报告

MCP 相关

通过 stdio 启动 MCP 服务,并提供 doctor_env 工具,以 JSON 返回与命令行相同的检查结果。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"cloudcorprecords-envdoctor": {
"command": "npx",
"args": [
"-y",
"@reneturcios/envdoctor"
]
}
}
}
启动命令npx -y @reneturcios/envdoctor

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@reneturcios/envdoctor0.1.0
ocighcr.io/cloudcorprecords/envdoctor:0.1.0

工具

1

收录的工具列表 · 更新于 1 天前

参数类型必填说明
pathstring是要检查的目标路径

详细介绍

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 会按以下顺序运行五项检查:

  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 的信息发现项;其余检查仍会运行。
  2. GIT-PRESENT - git --version 执行成功时通过。
  3. NPM-PRESENT - npm --version 执行成功时通过。
  4. LOCKFILE - 目标目录中存在 package-lock.json、yarn.lock 或 pnpm-lock.yaml 其中之一时通过(报告会指出具体文件)。缺少锁文件会生成规则为 NO-LOCKFILE 的中等严重性发现项。
  5. 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

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。