Errata

ai.formachines由 formachines.ai 發布v0.1.2更新於 Nov 7, 2026

經沙箱驗證的修復:解決AI模型為PyPI和npm庫編寫過時程式碼的問題

AI 翻譯由 AI 模型根據下方的原文描述翻譯,可能有誤。

原文描述

Sandbox-verified fixes where AI models write outdated code for PyPI and npm libraries

已驗證STDIO僅桌面AI 與機器學習

概覽

Errata 的本機 MCP 服務,由 formachines.ai 發布;無需登入;STDIO;3 個工具。

暫無 AI 概覽:以下資訊來自註冊中心條目和服務本身。

發布者
formachines.ai

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Errata,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

@formachines/errata-mcp

An MCP server for Errata: places where AI models write outdated code for PyPI and npm libraries, each with a fix verified in a sandbox. Three tools; stdio; no API key.

Install

Claude Code:

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

Any client with a JSON config (Claude Desktop, Cursor, Windsurf, VS Code …):

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

Node 20 or newer. Registry name: ai.formachines/errata.

Tools

toolinputanswer status
check_packageecosystem (pypi/npm), package, version (exact, or a range; may be omitted)found · unconfirmed_version · not_affected · no_coverage · technical_error
search_errortext: an error line, a traceback, or an entry idfound · candidates · no_match · technical_error
reportid, verdict (confirm/dispute), note (≤ 500 characters)received · merged · withdrawn · unknown_entry · invalid · rejected · technical_error

Each entry in an answer carries verdict (apply / lead / none), grade (verified / possible / not_affected / unknown), reason, wrong, right, detect, error, fails_on, verified_on, url.

Example, check_package {"ecosystem":"pypi","package":"click","version":"8.5.0"} against the live base:

json
{"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/"}]}

and the same package at a version nobody checked, "version":"8.6.0": status: "unconfirmed_version", verdict lead, reason installed 8.6.0 is newer than the versions checked (8.5.0); one checked version is not a range.

Rule

One rule for the server, the CLI, the skill and the site (printed in every page footer, llms.txt and the JSON agent_rule): apply a correction on your own only when the installed version is one it was checked on (versions.checked_on: fails_on and every recheck) and its proof.auto_apply is true. A newer version than the checked ones, one between works_on and fails_on, or an unknown one is lead; works_on or older is none.

Merged and withdrawn entries are never offered: answers list them under not_offered with the entry that carries a merged one now. report refuses them before sending. An unreachable base is technical_error with isError: true, never no_coverage.

Environment

variabledefault
ERRATA_BASE_URLhttps://formachines.ai
ERRATA_FEEDBACK_URL<base>/v1/feedback
ERRATA_TIMEOUT_MS8000 per request
ERRATA_CACHE_TTL_S600 (in-process cache: one index and changelog per ten minutes)
ERRATA_LOG_LEVELwarn (logs go to stderr; the text of search_error is never logged)
ERRATA_NO_TELEMETRYunset; 1 (or DO_NOT_TRACK=1) stops the search-miss report below

Requests carry the User-Agent formachines-errata-mcp/<version>, so the site counts MCP traffic apart.

Search misses (since 0.1.2). When search_error finds nothing, the server sends POST https://formachines.ai/v1/miss with the source (mcp), the exception type and its message scrubbed of paths, numbers, IP addresses, hex, UUIDs, e-mails, token-like strings and quoted values other than plain names ('numpy' stays, 'my secret' becomes <str>), at most 200 characters. A dotted type keeps only its last part (acme.errors.BillingError → BillingError). No code, no project name, no other lines of the traceback; text with no SomeError: … line sends nothing. It is sent in the background (the answer never waits for it, a network error is ignored) and only on a miss. The receiver scrubs again, keeps no IP address and uses the list to decide which errors to cover next. ERRATA_NO_TELEMETRY=1 turns it off.

Overhead

Measured 2026-11-02 against formachines.ai: the first check_package costs 3 requests (index 5.9 kB, changelog 31 kB, the package JSON 5–12 kB), later calls in the next ten minutes only the package JSON (or nothing, when cached). search_error costs one 31 kB request for the error index. Sizes are uncompressed; since 2026-11-02 the site sends JSON gzipped, about a fifth of that on the wire. Answers are compact: 0.6 kB for click, 1.9 kB for typescript (two entries), 0.9 kB for a matched error.

What the server does not promise

  • Not a full scan. The base covers a few dozen packages; no_coverage means no corrections, not that the code is current.
  • No range proof. One checked version is not a range; newer versions are lead.
  • Not an applier. The server never edits code; apply says the base allows applying the fix as is.
  • Reports are not published. report sends to a quarantine that is rechecked in the sandbox before anything changes; a note is never shown to other agents.
  • No offline mode. Without the network every tool answers technical_error.

Check it yourself

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

Development

npm installnpm testnpm run typechecknpm pack

src/core is shared with errata-cli and kept identical in both. Tests run against a snapshot of formachines.ai/errata in test/fixtures/site (2026-11-02); npm test starts the built server over stdio with the SDK client and runs the seven acceptance cases; scripts/inspect-live.sh repeats them with MCP Inspector against the live base. server.json follows the registry schema 2025-12-11.

MIT licence. The data is CC BY 4.0 (formachines.ai/errata).

來源:README.md,提交 bb7af41

工具

3

check_package

Check a package version

Corrections for a PyPI or npm package where AI models write outdated code, each verified in a sandbox, with verdict apply / lead / none for the installed version and the reason. Apply on your own only verdict apply (checked on the installed version, proof.auto_apply true); show a lead to the user, a newer version than the checked ones included.

輸入參數package必填versionecosystem必填

search_error

Search by error text

Find corrections by an error message or traceback line (ImportError, AttributeError, TypeError …) or by an entry id. Returns the matching error signatures and their entries. On no match it sends the error type and a scrubbed message (no code, paths, numbers or quoted values) to formachines.ai so missing errors get covered; ERRATA_NO_TELEMETRY=1 turns that off.

輸入參數text必填

report

Report whether a correction worked

Send confirm (the fix worked) or dispute (it did not) for an entry id. Reports are quarantined and rechecked in the sandbox before anything changes.

輸入參數id必填noteverdict必填

版本歷史

1
  1. v0.1.2最新Nov 3, 2026

評分

已滿足適用檢查項的 90%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分
  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分