tc39-mcp
Independent MCP server for the TC39 specs (ECMA-262 + ECMA-402): clauses, search, diffs, history.
Connect it
Settings → Connectors → Add custom connector
URL: https://mcp.xyzzylabs.ai/tc39/mcpSettings → Apps & Connectors → Advanced → Developer mode
Create connector with URL: https://mcp.xyzzylabs.ai/tc39/mcp{
"mcpServers": {
"tc39-mcp": {
"url": "https://mcp.xyzzylabs.ai/tc39/mcp"
}
}
}claude mcp add --transport http tc39-mcp https://mcp.xyzzylabs.ai/tc39/mcp{
"servers": {
"tc39-mcp": {
"type": "http",
"url": "https://mcp.xyzzylabs.ai/tc39/mcp"
}
}
}{
"mcpServers": {
"tc39-mcp": {
"command": "npx",
"args": [
"-y",
"tc39-mcp@0.6.4"
]
}
}
}claude mcp add tc39-mcp -- npx -y tc39-mcp@0.6.417 tools, verified live
spec.aboutSelf-description of this MCP server: package name + version, per-snapshot pin metadata (sha, fetched_at, biblio_commit, clause_count) for every supported (spec, edition), plus test262 + proposals index headers when present.
clause.getFetch a parsed TC39 clause as structured JSON. `spec` selects '262' (default) or '402'. `edition` defaults to 'latest'. `at: '<sha>'` pins to a historical main snapshot (only valid for edition='main'); omit to query the live snapshot.
clause.listList parsed spec clauses with optional filters (kind, section prefix, has_algorithm). `spec` selects '262' or '402'. `at: '<sha>'` queries a historical main snapshot.
spec.searchSearch the parsed spec by clause id / aoid / title (+ step text with `search_steps`). Aoid-exact ranks first. `at: '<sha>'` searches a historical main snapshot.
proposal.listList TC39 proposals from the static index (tc39/proposals). Filter by spec ('262'|'402'), stage ('0'|'1'|'2'|'2.7'|'3'|'finished'|'inactive'|'active'), champion (substring), or contains (name/slug substring).
proposal.getFetch one TC39 proposal by slug (exact) or name (case-insensitive).
spec.grammarQuery grammar productions captured from the spec's `<emu-grammar>` blocks. `{ nonterminal }` returns every production for that non-terminal (exact match); `{ contains }` filters by RHS / name substring; neither lists all non-terminals + their production counts. `include_sdo` folds in SDO-attached productions (off by default).
spec.tablesList or fetch parsed `<emu-table>` content. `{ id }` returns exactly that table (full columns + rows); otherwise list table summaries, optionally narrowed by a `filter` substring over the caption or id.
spec.sdo_indexIndex Syntax-Directed Operations by the grammar production they're defined on. `by: 'production'` (default) groups SDOs under each production; `by: 'sdo'` groups productions under each SDO title. `filter` narrows to keys containing a substring (case-insensitive).
clause.outlineReturn the section tree (table of contents) for a parsed (spec, edition). `depth` caps how deep the tree descends (1 = top-level only); `under` limits the tree to descendants of one clause id.
spec.global_searchRun spec.search across both ECMA-262 and ECMA-402 in one call and interleave hits by score. Each hit is tagged with the spec it came from. Use it when you don't know which spec defines a symbol. `search_steps` also matches algorithm step text.
spec.snapshotsList the live (spec, edition, sha, fetched_at) snapshots the hosted Worker is serving from R2. Filter by `spec` ('262'|'402') or `edition` (e.g. 'main', 'es2026'). Historical SHA-pinned copies are reachable via `at:` on clause.get / spec.search but aren't enumerated here.
spec.symbol_resolveResolve spec notation like `[[Prototype]]` (internal slot), `%Object.prototype%` (well-known intrinsic), or `~number~` (sigil enum): return clauses that mention or define it, ranked by occurrence with a bump for definition-y sections.
spec.well_known_intrinsicsEnumerate the well-known intrinsics in a spec with their probable defining clauses. Driven from the canonical §6.1.7.4 WKI table when present (ECMA-262), else a `%X%` prose scan (e.g. ECMA-402). `filter` narrows by bare-name substring.
spec.diffClause-level diff of one clause across two editions of a spec. Reports identical / modified / added / removed plus a field-level breakdown (title, signature, step count, reworded step indices, notes, crossrefs). `from` defaults to the latest stable release, `to` to main.
spec.crossrefsFor a clause id, return its outgoing references (clauses it cites) and/or incoming references (clauses that cite it — the back-reference index the parse alone doesn't expose). The reverse index is AOID-densified from step text. `direction`: 'in' | 'out' | 'both' (default). Outgoing also carries an `external` category: the clause's citations to external specs (Unicode, IETF, WHATWG) as resolvable U
test262.searchSearch the tc39/test262 conformance suite from its indexed front-matter. `query` AND-matches whitespace tokens (case-insensitive) across each test's description + path; `esid` prefix-matches the front-matter esid. Returns ranked hits (path, GitHub url at the indexed SHA, esid, description, features, flags), capped at `limit` (default 20). Supply at least one of `query` / `esid`.
Alternatives in Search & Research
Compare →SESerpApiA
Official SerpApi MCP server for Google, Bing, and other search engines.
SKSkillmdA
Search, fetch, lint, and install Agent Skills (SKILL.md) from the SkillMD registry.
WRWrapsA
Search the Wraps docs and estimate AWS SES costs. Public, read-only, no authentication.
FRfreeqA
Read and verify freeq conversations: channels, history, search, signatures, pins.
CEContribution ExchangeA
Contribution Exchange MCP: domain discovery, policies, preflight, proposals, and signals.
PCPhysical Capability CloudA
Discover, hire, and verify real-world physical capability through MCP.