tc39-mcp server
online · 100% uptimeio.github.xyzzylabs/tc39-mcp·v0.6.4·2 starsIndependent MCP server for the TC39 specs (ECMA-262 + ECMA-402): clauses, search, diffs, history.
2 stars566 downloads/wk
Reviews
Write oneNobody has reviewed tc39-mcp yet.
If you have run it, two minutes of your experience saves the next person an afternoon.
tc39-mcp tools (17, 1 write)
write = sends, deletes, buys or postsclause.getFreeFetch 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.listFreeList parsed spec clauses with optional filters (kind, section prefix, has_algorithm). `spec` selects '262' or '402'. `at: '<sha>'` queries a historical main snapshot.
clause.outlineFreeReturn 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.
proposal.getFreeFetch one TC39 proposal by slug (exact) or name (case-insensitive).
proposal.listFreeList 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).
spec.aboutFreeSelf-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.
spec.crossrefsFreeFor 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 URLs. Set `include_cross_spec: true` to also resolve outgoing references from ECMA-262 → ECMA-402 (or vice versa).
spec.diffFreeClause-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.global_searchwrite actionFreeRun 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.grammarFreeQuery 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.sdo_indexFreeIndex 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).
spec.searchFreeSearch the parsed spec by clause id / aoid / title (+ step text with `search_steps`). Aoid-exact ranks first. `at: '<sha>'` searches a historical main snapshot.
spec.snapshotsFreeList 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_resolveFreeResolve 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.tablesFreeList 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.well_known_intrinsicsFreeEnumerate 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.
test262.searchFreeSearch 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`.
Public scan report
scanner v0.1.10 · 2026-10-15 · same rubric, same numbers if you re-run it
- Code scan96 source files scanned25/25
- Live reliabilityremote reachable in 620ms20/20
- Tool poisoning17 tool descriptions checked15/15
- Auth qualityopen endpoint exposes 1 write-action tools with no auth3/15
- Maintenancelast push 1 days ago15/15
- Maintainer identityregistry namespace matches repository owner7/10
Findings (1)
- highWrite-action tools reachable without authentication
auth.open-write
How tc39-mcp compares
Against every graded Web search MCP server, from our own scans and uptime checks. Updated after each scan run.
- Safety score
- 85/100
- higher than 75% of 3,470 Web search servers
- Tools
- 17
- the typical Web search server has 5
- Tools that change things
- 6%
- typical: 0%. Fewer write tools means less an agent can break
- Uptime
- 100%
- of our recent checks; the typical remote Web search server answers 100%
- Response time
- 58 ms
- faster than 95% of 2,238 Web search servers
- GitHub stars
- 2
- more than 70% of 1,786 Web search servers
- Downloads a week
- 566
- more than 87% of 827 Web search servers with a package
What its tools let an agent do: 16 read · 1 change
Release history: 2 versions in the registry since 2026-09-08, latest 2026-10-07, typically one every 29 days.
Install tc39-mcp in Claude Code, Cursor or VS Code
claude mcp add --transport http tc39-mcp https://mcp.xyzzylabs.ai/tc39/mcp
What the publisher says
From the tc39-mcp repository's README, as published. We do not edit it. Read it on GitHub
tc39-mcp
📖 Docs: mcp.xyzzylabs.ai/tc39 — Get started · Tools · Cookbook · Editions · Architecture · Hosting
Independent project — not an official Ecma
International or TC39 publication. Reads the publicly
published ECMAScript specs (ECMA-262 + ECMA-402).
Give MCP-speaking AI agents structural access to the JS spec. Any client that speaks the Model Context Protocol can call clause.get sec-tonumber and get back parsed JSON (algorithm steps as discrete arrays, cross-references as ids, signatures as typed values) instead of being handed a 4 MB spec.html to grep through. Tools cover ECMA-262 (the core language) and ECMA-402 (the Intl API): clauses, algorithm steps, cross-references both ways, edition diffs, upstream git history, test262 search, proposal lookup. Every response is SHA-pinned to a specific upstream commit so anything an agent cites stays reproducible.
Snapshots resolve through a local cache → hosted Worker → bundled fallback chain. The stdio transport (npx tc39-mcp) fetches each snapshot from the hosted Cloudflare Worker on a cold cache, writes it under ~/.cache/tc39-mcp/, and serves it from disk thereafter — revalidating only when the local copy is older than ~4 hours (a conditional If-None-Match request). The npm package also bundles the latest stable + main editions of both specs plus the test262 and proposals indexes; when the Worker is unreachable, those are served straight from the package (the offline fallback — not written to the cache). The hosted Worker is also the HTTP alternative when you want a shared network endpoint; its R2 data refreshes from upstream every ~4 hours.
Install + first call
Wire it into any MCP client — the stdio launch command is the same everywhere, only the config file differs:
{
"mcpServers": {
"tc39": { "command": "npx", "args": ["tc39-mcp"] }
}
}A global install works too — npm i -g tc39-mcp, then run tc39-mcp.
The first run downloads the npm package (latest stable + main editions plus the proposals and test262 indexes are bundled). The first call for a given snapshot fetches it from the hosted Worker and caches it locally; subsequent calls are served from disk, revalidated against the Worker only after the ~4-hour freshness window. If the Worker is unreachable, the bundled editions still answer offline. Then in your client:
use clause.get to read sec-tonumber and show me the steps
You should see structured JSON back:
{
"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", "..."]
}Five-minute walkthrough: docs/getting-started.md.
Hosted HTTP
Shortened. The full README is on GitHub.
Nothing above is checked by us. What we check is on the safety report.
tc39-mcp: common questions
- Is tc39-mcp server safe?
- Yes, by our scan: it is graded A (85/100). Read the tc39-mcp safety report
- How do I install tc39-mcp?
- It runs remotely at mcp.xyzzylabs.ai. Add it to Claude Code, Cursor, VS Code or Claude Desktop with the snippets above, or call it through the mcp.market gateway without installing anything.
- Does tc39-mcp need an API key?
- Not as far as the registry entry and our scan can tell: no credentials are declared or required.
- Is tc39-mcp maintained?
- The last commit was 20 days ago (2026-10-15). The latest release is v0.6.4.
- Is tc39-mcp up?
- 100% of our last 28 checks got an answer. We check remote servers about four times a day.
- What can I use instead of tc39-mcp?
- Servers from other publishers that do the same job: jDocmunch MCP server and all2md MCP server.
- How does tc39-mcp compare with other Web search MCP servers?
- safety score 85/100 (higher than 75% of 3,470 Web search servers); tools 17 (the typical Web search server has 5); tools that change things 6% (typical: 0%. Fewer write tools means less an agent can break). Full comparison.
Alternatives to tc39-mcp
Same job from other publishers: the closest match first, then the best rated.
- jDocmunch MCPSection-level doc search for .md, .rst, .adoc, .ipynb, .html, .yaml, .json, and OpenAPI specs.not reviewedEstablishedA
- all2mdRead, convert, search, diff and outline PDF, Word, PowerPoint, HTML and 40+ formats as Markdown.not reviewedGrowingA