mcpField
E
errorcatalog

errorcatalog

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

关于 errorcatalog

errorcatalog 扫描提供的源码文本,查找 `throw new Error(...)`,并将字面消息与提供的文档核对。它面向需要整理错误信息、且希望分析过程不访问文件系统或网络的开发者。

主要功能

  1. 01查找支持的 Error 抛出语句
  2. 02记录文件、行号、类型和消息
  3. 03标记动态或缺失的消息
  4. 04核对字面消息与文档
  5. 05以 JSON 报告目录计数

适用场景

  1. 01检查提供的源文件中的错误
  2. 02确认错误消息是否出现在文档中

MCP 相关

MCP 服务提供 `catalog_errors` 工具,可扫描源码条目,并可选地将字面消息与文档条目核对。

配置

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

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

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

安装包
npm@reneturcios/errorcatalog0.1.0
ocighcr.io/cloudcorprecords/errorcatalog:0.1.0

工具

1

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

参数类型必填说明
docsarray否文档文本;将逐字检查其中是否包含字面消息(可选)
sourcesarray是要扫描的源文件

详细介绍

errorcatalog

代码库中抛出的每条错误消息都会被编目;如果你提供文档,还会注明每条消息是否有文档记录。

errorcatalog 会逐行扫描源文本,查找形式为 throw new <Name>Error(...) 的 throw 语句,其中类型名称以 Error 结尾(Error、TypeError、RangeError 或自定义类型,例如 FooError)。对于每个 throw 位置,它都会记录文件、从 1 开始的行号、错误类型,以及:

  • 字面量 — 第一个参数是双引号、单引号或反引号括起的字符串,且其中不含 ${。消息会按原样记录,包括转义序列——不会进行反转义。
  • 动态 — 第一个参数是其他任何内容:包含 ${ 的模板、标识符、调用、拼接,或未在同一行闭合的字面量。消息为 null。
  • 无消息 — throw new <Name>Error() 完全没有参数。消息为 null,且条目带有注记 no message argument。

不是 new <Name>Error(...) 形式的 throw 不会被编目,例如裸字符串、非 Error 构造函数或变量。 重复的 throw 会保留为单独条目:目录按 throw 位置记录。

提供文档文本时,每条字面量消息都会与文档进行逐字检查:如果消息是某份所提供文档的子字符串,则 documented 为 true;如果不是,则为 false。对于动态和无消息条目,documented 为 null;如果没有提供文档,则所有条目的 documented 都为 null,此时结果会报告 docs_provided: false,且 documented / undocumented 计数均为 0。

已知限制(有意为之):只检查 throw 语句的第一行,因此参数列表跨行的字面量会被归类为动态。分析仅在本地进行纯文本处理:核心功能不会访问网络或文件系统。

CLI

npx @reneturcios/errorcatalog catalog --sources sources.json --docs docs.json
npx @reneturcios/errorcatalog --version

sources.json 和 docs.json 各自包含一个 JSON 数组,数组元素为 {"path": "src/app.ts", "content": "..."} 对象。--docs 标志为可选。目录会以 JSON 格式输出。

退出代码:成功时为 0;发生运行时错误时为 1(包括 JSON 文件无法读取或无效,或条目格式错误——错误会指出出问题的路径,例如 sources[0].content is required);用法错误时为 2。

MCP 服务

npx -y @reneturcios/errorcatalog mcp

MCP 客户端配置:

{
  "mcpServers": {
    "errorcatalog": {
      "command": "npx",
      "args": ["-y", "@reneturcios/errorcatalog", "mcp"]
    }
  }
}
工具
  • catalog_errors — 为给定源文件中抛出的每条错误编目,并注明每条字面量消息是否有文档记录。

    • sources(数组,必需,至少 1 项)— 作为 {path, content} 对象的源文件
    • docs(数组,可选)— 作为 {path, content} 对象的文档文本;会将字面量消息与其进行逐字检查

    返回 {errors, counts, docs_provided},其中每条错误为 {path, line, error_type, message, dynamic, documented}(无消息条目还会包含 note),而 counts 为 {total, literal, dynamic, no_message, documented, undocumented}。

Docker

docker run -i ghcr.io/cloudcorprecords/errorcatalog
docker run --rm -v "$PWD:/w" ghcr.io/cloudcorprecords/errorcatalog catalog --sources /w/sources.json

开发

npm install
npm run build   # tsc -> dist/
npm test        # tsx --test test/*.test.ts (pure local, no network)
npm run dev     # run the CLI from source

许可证

MIT — 版权所有 (c) 2026 Rene Turcios

评论

支持 Markdown

第一次接触 MCP?

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

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