mcpField
E
Errata

Errata

本地服务
formachines.ai开发工具0今天更新

关于 Errata

Errata 是面向开发者的 MCP 服务,用于查找受覆盖的 PyPI 和 npm 包中的过时代码写法。修正方案经过沙箱验证,并区分已确认版本与待核实线索,但不会编辑代码。

主要功能

  1. 01检查 PyPI 和 npm 包版本
  2. 02搜索错误信息和回溯
  3. 03返回经沙箱验证的修正方案
  4. 04区分已确认修复与待核实线索
  5. 05提交条目反馈

适用场景

  1. 01检查某个包版本是否有已知修正
  2. 02搜索错误信息以查找匹配修复
  3. 03在修改代码前审阅修正方案

MCP 相关

向 MCP 客户端提供三个工具:检查包版本、搜索错误和提交修正反馈。它会报告修复信息,但不会修改代码。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"ai-formachines-errata": {
"command": "npx",
"args": [
"-y",
"@formachines/errata-mcp"
],
"env": {
"ERRATA_BASE_URL": "<ERRATA_BASE_URL>",
"ERRATA_TIMEOUT_MS": "<ERRATA_TIMEOUT_MS>",
"ERRATA_NO_TELEMETRY": "<ERRATA_NO_TELEMETRY>"
}
}
}
}
启动命令npx -y @formachines/errata-mcp
需要配置的环境变量
ERRATA_BASE_URLBase URL of the Errata site (default https://formachines.ai)
ERRATA_TIMEOUT_MSTimeout of one request to the base, in milliseconds (default 8000)
ERRATA_NO_TELEMETRYSet to 1 to stop sending search misses (error type and scrubbed message) when search_error finds nothing

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

安装包
npm@formachines/errata-mcp0.1.3

工具

3

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

参数类型必填说明
packagestring是
versionany否已安装的准确版本;如果只知道版本范围,则填写范围
ecosystemenum是pypi | npm

详细介绍

@formachines/errata-mcp

适用于 Errata 的 MCP 服务:列出 AI 模型为 PyPI 和 npm 库编写过时代码的情况,每项都附带在沙盒中验证过的修复方案。提供 3 个工具;使用 stdio;无需 API 密钥。

安装

Claude Code:

claude mcp add errata -- npx -y @formachines/errata-mcp

适用于任何使用 JSON 配置的客户端(Claude Desktop、Cursor、Windsurf、VS Code……):

{
  "mcpServers": {
    "errata": { "command": "npx", "args": ["-y", "@formachines/errata-mcp"] }
  }
}

需要 Node 20 或更高版本。注册表名称:ai.formachines/errata。

工具

工具输入答案 status
check_packageecosystem(pypi/npm)、package、version(精确版本或范围;可省略)found · unconfirmed_version · not_affected · no_coverage · technical_error
search_errortext:错误行、回溯信息或条目 IDfound · candidates · no_match · technical_error
reportid、verdict(confirm/dispute)、note(≤ 500 个字符)received · merged · withdrawn · unknown_entry · invalid · rejected · technical_error

答案中的每个条目都包含 verdict(apply / lead / none)、grade(verified / possible / not_affected / unknown)、reason、wrong、right、detect、error、fails_on、verified_on、url。

示例:使用实时数据源检查 check_package {"ecosystem":"pypi","package":"click","version":"8.5.0"}:

{"status":"found","package":"pypi/click","installed":"8.5.0","entries":[{"id":"pypi/click/8.5.0/0001","verdict":"apply","grade":"verified","reason":"checked on click 8.5.0; installed 8.5.0; proof.auto_apply true","symbol":"click.Parameter","wrong":"parameter = click.Parameter([\"--x\"])","right":"parameter = click.Option([\"--x\"])","detect":["click.Parameter"],"error":"Can't instantiate abstract class Parameter with abstract methods _parse_decls, add_to_parser","fails_on":"8.5.0","verified_on":["8.5.0"],"url":"https://formachines.ai/errata/pypi/click/0001-click-parameter/"}]}

同一软件包使用未经检查的版本 "version":"8.6.0" 时: status: "unconfirmed_version",verdict 为 lead,reason 为 已安装的 8.6.0 比已检查的版本(8.5.0)更新;已检查的单个版本并不代表一个范围。

规则

服务、CLI、技能和网站均遵循同一条规则(印在每个页面页脚、llms.txt 和 JSON agent_rule 中):只有当已安装版本是该条目检查过的版本(versions.checked_on:fails_on 及每次重新检查的版本),且 proof.auto_apply 为 true 时,才自行应用修正。比已检查版本更新、介于 works_on 和 fails_on 之间,或未知的版本属于 lead;works_on 或更旧的版本属于 none。

已合并和已撤回的条目绝不会被提供:答案会在 not_offered 下列出这些条目,并附上当前包含已合并条目的条目。report 会在发送前拒绝这些条目。无法访问数据源时会返回带有 isError: true 的 technical_error,绝不会返回 no_coverage。

环境

变量默认值
ERRATA_BASE_URLhttps://formachines.ai
ERRATA_FEEDBACK_URL<base>/v1/feedback
ERRATA_TIMEOUT_MS每次请求 8000
ERRATA_CACHE_TTL_S600(进程内缓存:每十分钟缓存一个索引和一份变更日志)
ERRATA_LOG_LEVELwarn(日志写入 stderr;绝不记录 search_error 的文本)
ERRATA_NO_TELEMETRY未设置;设为 1(或 DO_NOT_TRACK=1)可停止下方所述的搜索未命中报告

请求会携带 User-Agent formachines-errata-mcp/<version>,因此网站会单独统计 MCP 流量。

搜索未命中(自 0.1.2 起)。 当 search_error 未找到任何结果时,服务会向 POST https://formachines.ai/v1/miss 发送来源(mcp)、异常类型,以及其消息(已清除路径、数字、IP 地址、十六进制字符串、UUID、电子邮件地址、类似令牌的字符串和带引号的值,但普通名称除外('numpy' 会保留,'my secret' 会变成 <str>)),最多 200 个字符。带点号的类型只保留最后一部分(acme.errors.BillingError → BillingError)。不会发送代码、项目名称或回溯信息中的其他行;如果文本中没有 SomeError: … 行,则不会发送任何内容。该请求会在后台发送(答案不会等待发送完成;网络错误会被忽略),且只会在搜索未命中时发送。接收端会再次清理内容,不保留 IP 地址,并根据列表决定后续覆盖哪些错误。将 ERRATA_NO_TELEMETRY=1 可关闭此功能。

开销

于 2026-11-02 对 formachines.ai 进行测量:首次调用 check_package 会产生 3 个请求(索引 5.9 kB、变更日志 31 kB、软件包 JSON 5–12 kB);接下来十分钟内的调用只请求软件包 JSON(若已缓存则无需请求)。 search_error 会产生一个 31 kB 的错误索引请求。大小为未压缩状态;自 2026-11-02 起,网站以 gzip 格式发送 JSON,实际传输量约为上述大小的五分之一。答复很精简:click 为 0.6 kB,typescript(两条条目)为 1.9 kB,匹配到的错误为 0.9 kB。

服务不作出的承诺

  • 并非全面扫描。 基础数据涵盖几十个软件包;no_coverage 表示没有修正,并不代表代码是最新的。
  • 不证明版本范围。 检查一个版本不代表涵盖某个版本范围;更新的版本标记为 lead。
  • 不是应用工具。 服务绝不会修改代码;apply 表示基础数据允许直接应用修复。
  • 报告不会公开。 report 会将内容发送到隔离区,在任何变更发生前于沙箱中重新检查;其他 Agent 永远不会看到备注。
  • 无离线模式。 没有网络时,每个工具都会返回 technical_error。

自行检查

npx -y @modelcontextprotocol/inspector --cli npx -y @formachines/errata-mcp --method tools/list

开发

npm install
npm test
npm run typecheck
npm pack

src/core 与 errata-cli 共享,并在两者中保持一致。测试针对 test/fixtures/site 中的 formachines.ai/errata 快照(2026-11-02)运行;npm test 会通过 SDK 客户端,以 stdio 启动构建后的服务,并运行七个验收用例;scripts/inspect-live.sh 则使用 MCP Inspector 针对实时基础数据重复这些测试。server.json 遵循注册表架构 2025-12-11。

MIT 许可证。数据采用 CC BY 4.0 许可(formachines.ai/errata)。

评论

支持 Markdown

第一次接触 MCP?

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

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