mcpField
E
Errata

Errata

ローカル
formachines.ai開発ツール0今日更新

Errata について

Errata は、対象となる PyPI と npm パッケージの古いコード記述を探す開発者向け MCP サーバーです。修正はサンドボックスで検証され、確認済みのバージョンと参考情報を区別し、コード自体は変更しません。

主な機能

  1. 01PyPI と npm のパッケージバージョン確認
  2. 02エラーやトレースバックの検索
  3. 03サンドボックス検証済み修正の提示
  4. 04確認済み修正と参考情報の区別
  5. 05エントリーへのフィードバック送信

活用シーン

  1. 01パッケージの特定バージョンに既知の修正があるか確認
  2. 02エラーメッセージから対応する修正を検索
  3. 03コード変更前に修正内容を確認

MCP 対応

パッケージの確認、エラー検索、修正へのフィードバックという 3 つのツールを 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

README(原文)English

プロジェクトの README より

この 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 …):

{
  "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:

{"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 install
npm test
npm run typecheck
npm 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).

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。