Labsco
MCP SERVER

TC39 Specs (ECMA-262 + ECMA-402)

by xyzzylabs

Read the JavaScript spec as data: a clause comes back with its algorithm steps as arrays, its cross-references as ids, and a commit SHA pinning exactly which version you were quoting.

Framework & SDK Documentation LookupVerified
Summary
Spec answers you can cite, pinned to the commit they came from.

Two things make this more than a document reader. Every response carries the upstream SHA it was parsed from, so an answer stays checkable after the spec moves on — and the diff tool turns has this changed into a clause-level comparison between the stable edition and the working draft rather than a reading exercise. The incoming cross-references are the other quiet win: finding what cites a clause is a question the spec's own HTML cannot answer at all.

What it is

A parsed, SHA-pinned view of ECMA-262 and ECMA-402. Instead of grepping a multi-megabyte spec.html, an agent asks for a clause by id and gets structured JSON — metadata, signature, steps, notes and citations — plus edition diffs, git history, test262 and the proposals index.

What you get
  • Any clause fetched as structured JSON: metadata, signature, algorithm steps as discrete entries, notes, cross-references and outward citations to Unicode, IETF and WHATWG
  • Search by clause id, abstract-operation id or title — optionally through step text — across one spec or across both at once, with each hit tagged by which spec it came from
  • Clause listings filtered by kind, section prefix or whether they carry an algorithm, and the section tree returned as an outline anchored anywhere you like
  • Cross-references in both directions, including the incoming ones that the spec's own markup does not expose
  • Clause-level diffs between any two editions, reporting added, removed, modified or identical along with title, signature and per-step changes — the working draft against the current stable by default
  • The commits that touched a clause in the upstream checkout, found by its id token so creation, deletion and tag edits are caught
  • Spec notation resolved to the clauses that define it: internal slots, well-known intrinsics and sigil enums, plus an enumeration of the intrinsics and the parsed spec tables
  • Syntax-Directed Operations indexed by the grammar production they handle, and grammar productions queried by nonterminal or by what appears on the right-hand side
  • Test262 searched by free text or by clause id, and any test's source and front matter fetched by path
  • TC39 proposals listed by stage, champion or text match, and any one fetched by slug or name
  • Provenance for all of it: per-snapshot SHA, fetch time and clause count, and the list of historical snapshots you can query against
Requirements

Nothing to authorize and nothing to configure: it runs as npx tc39-mcp over stdio, and a hosted Streamable HTTP endpoint exists if you would rather not run it. Snapshots resolve through a local cache, then a hosted Worker, then a copy bundled in the package — the cache lives under a directory in your home folder and revalidates about every four hours, and when the network is unavailable the bundled editions still answer offline. This is an independent project reading the publicly published specs, not an Ecma International or TC39 publication. MIT.

Setup effort

One command — npx tc39-mcp