mcpField
T
tc39-mcp

tc39-mcp

リモート
mcp.xyzzylabs.ai開発ツール22 日前に更新
リポジトリ公式サイト

tc39-mcp について

tc39-mcpは、ECMAScript仕様(ECMA-262とECMA-402)を照会する独立した読み取り専用MCPサーバーです。条項やアルゴリズム手順、版の比較、関連テストを必要とするエージェント向けに、上流コミットに固定した再現可能なデータを返します。

主な機能

  1. 01条項と構造化されたアルゴリズム手順の取得
  2. 02条項検索と仕様記法の解決
  3. 03双方向の相互参照追跡
  4. 04版の比較と上流履歴の確認
  5. 05test262テストとTC39提案の検索
  6. 06ローカルキャッシュとオフライン内蔵データ

活用シーン

  1. 01JavaScript仕様のアルゴリズム手順の確認
  2. 02仕様条項間の参照関係の追跡
  3. 03版を比較して文面の変更を調査
  4. 04条項に対応するtest262テストや提案の検索

MCP 対応

クライアント向けに、ECMA-262とECMA-402の条項、検索結果、相互参照、版の差分、履歴、test262テスト、提案を照会するMCPツールを提供します。ローカルstdioサーバーとホスト型HTTPエンドポイントに対応しています。

設定

リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。

エンドポイントhttps://mcp.xyzzylabs.ai/tc39/mcp
インストールコマンドをコピー
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。

パッケージ
npmtc39-mcp0.6.4

ツール

17

このツールにパラメーターはありません。

詳細

tc39-mcp

Test npm version License: MIT

📖 ドキュメント: mcp.xyzzylabs.ai/tc39 — 始める · ツール · クックブック · エディション · アーキテクチャ · ホスティング

独立したプロジェクト — Ecma International または TC39 の公式出版物ではありません。公開済みの ECMAScript 仕様(ECMA-262 + ECMA-402)を読み込みます。

MCP に対応する AI エージェントに、JS 仕様への構造化アクセスを提供します。 Model Context Protocol に対応するクライアントなら、どれでも clause.get sec-tonumber を呼び出して、4 MB の spec.html を渡されて検索する代わりに、解析済み JSON を取得できます(アルゴリズムの手順は個別の配列、相互参照は ID、シグネチャは型付きの値として返されます)。ツールは、ECMA-262(コア言語)と ECMA-402(Intl API)を対象としています。条項、アルゴリズムの手順、双方向の相互参照、エディション間の差分、上流の Git 履歴、test262 の検索、プロポーザルの検索が可能です。すべての応答は特定の上流コミットに SHA で固定されるため、エージェントが引用した内容の再現性を保てます。

スナップショットは、ローカルキャッシュ → ホストされた Worker → バンドル済みフォールバックの順に解決されます。stdio トランスポート(npx tc39-mcp)は、キャッシュが空の場合に、ホストされた Cloudflare Worker から各スナップショットを取得して ~/.cache/tc39-mcp/ に保存し、以降はディスクから提供します。再検証は、ローカルのコピーが約 4 時間より古い場合にのみ行われます(条件付きの If-None-Match リクエスト)。npm パッケージには、両方の仕様の最新安定版エディションと main エディションに加え、test262 とプロポーザルのインデックスもバンドルされています。Worker に接続できない場合、これらはパッケージから直接提供されます(オフライン時のフォールバックであり、キャッシュには書き込まれません)。共有ネットワークエンドポイントが必要な場合は、ホストされた Worker を HTTP の代替手段として利用できます。その R2 データは約 4 時間ごとに上流から更新されます。

インストールと最初の呼び出し

任意の MCP クライアントに接続できます。stdio の起動コマンドはどこでも同じで、設定ファイルだけが異なります。

{
  "mcpServers": {
    "tc39": { "command": "npx", "args": ["tc39-mcp"] }
  }
}

グローバルインストールも可能です。npm i -g tc39-mcp を実行し、その後 tc39-mcp を実行してください。

初回実行時に npm パッケージがダウンロードされます(最新安定版エディションと main エディションに加え、プロポーザルと test262 のインデックスがバンドルされています)。特定のスナップショットに対する最初の呼び出しでは、ホストされた Worker から取得してローカルにキャッシュします。以降の呼び出しはディスクから提供され、約 4 時間の鮮度期間が経過した後にのみ Worker に対して再検証されます。Worker に接続できない場合でも、バンドル済みのエディションを使ってオフラインで応答できます。次に、クライアントで以下を実行します。

clause.get を使って sec-tonumber を読み込み、手順を表示してください

構造化 JSON が返されます。

{
  "meta": {
    "id": "sec-tonumber",
    "aoid": "ToNumber",
    "title": "ToNumber ( argument )",
    "number": "7.1.4",
    "kind": "op"
  },
  "signatureRaw": "ToNumber ( _argument_: an ECMAScript language value, ): either a normal completion containing a Number or a throw completion",
  "algorithms": [
    { "steps": [
        { "text": "If _argument_ is a Number, return _argument_." },
        { "text": "If _argument_ is either *undefined* or a Symbol, throw a *TypeError* exception." },
        { "text": "If _argument_ is *null*, return *+0*<sub>𝔽</sub>." },
        "..."
    ]}
  ],
  "crossrefs": ["sec-tonumber-applied-to-the-string-type", "..."]
}

5 分でできるガイド: docs/getting-started.md。

ホストされた HTTP

ローカルのサブプロセスを実行せず、ホストされた Cloudflare Worker にクライアントを接続できます。同じ MCP プロトコルを使い、インストールは不要です。

{
  "mcpServers": {
    "tc39": {
      "type": "http",
      "url": "https://mcp.xyzzylabs.ai/tc39/mcp"
    }
  }
}

トラフィックは IP ごとに 30 件/分に制限されています。

得意なこと

  • エージェントが幻覚を起こさずに仕様を推論できるようにします。 構造化された JSON の回答によって、実際の仕様テキストに基づいてモデルを動作させます。 ステップ番号、相互参照のリンク先、シグネチャの形式、 エディション間の差分、適合性テストなどが対象です。引用された内容はすべて、 特定の SHA における特定の条項 ID に対応するため、簡単に検証・再現できます。
  • 手がかりから目的の条項を見つけます。 spec.search は AOID の完全一致を優先して順位付けします。spec.symbol_resolve は [[Prototype]] / %Object.prototype% / ~enumerate~ を解決します。
  • 参照を双方向にたどります。 spec.crossrefs は、 ある条項が参照する内容と、その条項を参照する側の両方を返します。AOID を高密度化しているため、 <emu-xref> の href だけでなく、ステップテキスト中の単なる言及も対象になります。 include_cross_spec は 262 ↔ 402 の参照も解決します。 (Cookbook レシピ 1。)
  • エディションを比較し、文章の変化を追跡します。 spec.diff は ES2016 以降の任意の 2 つのエディションを比較します。spec.history は ピックアックス検索で上流の git ログをたどります。 (Cookbook レシピ 2。)
  • 条項に対応する test262 のカバレッジを見つけます。 test262.search は、 前方一致する esid: を使い、sec-tonumber と sec-tonumber-applied-to-the-string-type の両方を 1 回の呼び出しで検索します。
  • 提案を仕様に対応付けます。 tc39/proposals の構造化インデックスから proposal.list / proposal.get を使って、ECMA-262 と ECMA-402(Intl)の提案を 参照できます。spec で絞り込めます。仕様と同じ 4 時間ごとの間隔で更新されます。
  • ローカルキャッシュ、同梱データによるフォールバック(stdio)。 スナップショットが ~/.cache/tc39-mcp/ にキャッシュされると、ツールの呼び出しはディスクから処理され、 約 4 時間の鮮度期間を過ぎた後にのみ、ホストされた Worker に対して再検証されます (R2 オブジェクトキーを含み、条項 ID は決して含まない条件付きの If-None-Match リクエストです)。 Worker に接続できない場合でも、同梱されたエディションをオフラインで利用できます。 ホストされた Worker は、共有利用やマルチテナント利用向けの HTTP 代替手段です。

ツール(5 つの名前空間に 19 個)

目的ツール
提供中の内容を確認するspec.about · spec.snapshots
特定の条項を読むclause.get
名前や症状から条項を見つけるspec.search · spec.global_search
[[X]] / %X% / ~X~ 表記を解決するspec.symbol_resolve
閲覧する / 概要を確認するclause.list · clause.outline
エディション / コミット履歴を比較するspec.diff · spec.history
参照をたどる(参照先と参照元)spec.crossrefs
構造化テーブルを読むspec.tables
文法を調べるspec.grammar · spec.sdo_index
既知の組み込み機能を列挙するspec.well_known_intrinsics
適合性テストを見つけるtest262.search · test262.get
提案を調べるproposal.list · proposal.get

完全なリファレンス(入力スキーマ、出力型、ツールごとの呼び出し例): docs/tools.md — スキーマから自動生成されるため、内容が古くなることはありません。

仕様とエディション

仕様を読むすべてのツールで spec("262" または "402"、既定値は "262")と edition(既定値は "latest")を指定できます。

  • ECMA-262:es2016 ~ es2026、main。(ES5 / ES5.1 / ES6 には上流タグがないため、サポートされていません。)
  • ECMA-402:es2016 ~ es2026、main。(402 は各年のエディションをタグではなく esYYYY ブランチとして公開します。取得ステップではブランチとタグを同じ方法で解決します。)
  • エイリアス:latest は仕様を認識し、各仕様の現在の安定リリースを指します(現時点では es2026)。 draft / next はどちらの仕様でも main を指します。

全表と新しいリリースの追加方法については、docs/editions.md を参照してください。

スナップショットのセルフホスティング

stdio サーバーは、公開ホスト型 Worker (キャッシュ → Worker → バンドルされたフォールバック)から https://mcp.xyzzylabs.ai/tc39/r2/<key> にあるスナップショットを取得するため、厳格な外部通信制限のあるネットワークではバンドル版にフォールバックし、その他の版にはアクセスできません。TC39_MCP_BASE_URL でベース URL を上書きし、プライベートミラーを指定してください。厳格な外部通信制限のあるネットワーク、エアギャップ環境、セルフホスト型 Worker での実行に便利です。

TC39_MCP_BASE_URL=https://my-mirror.example.com npx tc39-mcp

エンドポイントは、同じキー構造 (spec-<spec>-<edition>.json、test262-index.json、 proposals-index.json)を提供するだけでかまいません。通常の静的ファイルサーバーで動作します。ETag を返す場合、サーバーは If-None-Match を使って再検証します(負荷の小さい 304)。ETag がない場合は、キャッシュ済みのコピーが古くなると、オブジェクト全体を再取得します。ミラーにデータを格納するには、ローカルチェックアウトに対して npm run parse を実行し(下記参照)、build/*.json を任意のバケットにアップロードします。

キャッシュは $XDG_CACHE_HOME/tc39-mcp に保存されます(XDG_CACHE_HOME が設定されていない場合は ~/.cache/tc39-mcp)。

ソースからビルドする(コントリビューター向け)

エンドユーザーには不要です。上記の npm パッケージとホスト型 Worker がサポート対象の利用方法です。ここではサーバー自体を開発します。

git clone https://github.com/xyzzylabs/tc39-mcp
cd tc39-mcp
npm install
npm run fetch-spec               # ~2 min, ~150 MB — both specs at every supported edition
npm run parse                    # spec.html → build/spec-<spec>-<edition>.json
npm run fetch-test262            # optional, enables test262.* (~300 MB)
npm run build-test262-index
npm run fetch-proposals          # optional, enables proposal.* (~50 MB)
npm run build-proposals-index
npm run mcp                      # start the stdio MCP server against your source

公開済みの bin ではなく、ローカルのソースを使うように MCP クライアントを設定します。

{
  "mcpServers": {
    "tc39": {
      "type": "stdio",
      "command": "npm",
      "args": ["run", "--silent", "mcp"],
      "cwd": "/abs/path/to/tc39-mcp"
    }
  }
}

--silent を指定すると npm のライフサイクルバナーが stdout に出力されないため、MCP クライアントはクリーンな JSON-RPC ストリームを受信できます。

ドキュメント

mcp.xyzzylabs.ai/tc39 でホストされています。検索可能でダークモードに対応しており、更新のたびに自動で再ビルドされるため、 /snapshots には常に最新の SHA が反映されます。

リポジトリ内にもあります(GitHub でも閲覧できます)。

  • docs/getting-started.md — インストール → 接続 → 最初の呼び出し → 検証。5 分で完了します。
  • docs/tools.md — すべてのツール、すべてのフィールド、すべての 例。ソースから自動生成されます。
  • docs/cookbook.md — 複数ツールを使ったレシピ: 仕様をまたいだ検索、文章のドリフト追跡、文法/SDO の 相互参照、test262 のカバレッジ、プロポーザルから条項へのマッピング。
  • docs/editions.md — サポート対象のエディションと エイリアスの解決。
  • docs/architecture.md — データパイプライン、 パーサー、キャッシュ、メモリモデル。
  • docs/deployment.md — ローカル stdio、npm CLI、ホスト型 Cloudflare Worker、更新モデル、オブザーバビリティ。
  • CONTRIBUTING.md — 取り込みやすい変更の種類と、 取り込まれない変更について。
  • SECURITY.md — 脅威モデルと責任ある 脆弱性開示。
  • CHANGELOG.md — バージョン履歴と自動更新の 方針。

プライバシーポリシー

tc39-mcp は読み取り専用の仕様検索サービスです。stdio トランスポート (npx tc39-mcp)はテレメトリーを送信せず、クエリを送信することもありません。スナップショットはキャッシュが空または古い場合にホスト型 Worker から取得され、それ以外の場合はローカルディスクから提供されます。この取得で送信されるのは R2 オブジェクトキーであり、条項 ID やツール引数ではありません。ホスト型 Cloudflare Worker が収集するのは、標準的なリクエストメタデータ(レート制限用の IP、タイムスタンプ、リクエストヘッダー)のみです。リクエスト本文をログに記録せず、Cookie を設定せず、第三者とデータを共有することもありません。

ポリシー全文:mcp.xyzzylabs.ai/tc39/privacy

プライバシーに関する質問は、GitHub で privacy ラベルを付けて Issue を作成してください。

ライセンス

MIT

コメント

MCP は初めてですか?

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

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