protogrid

Search / io.github.xyzzylabs/tc39-mcp

tc39-mcp

R0· no sign-in

Independent MCP server for the TC39 specs (ECMA-262 + ECMA-402): clauses, search, diffs, history.

v0.6.4 · active · repository · website · descriptor JSON · versions

An agent can connect right now, no human step.Remote endpoint, no authentication, reachable on the last probe.
Quality79good
Trust96of 100
Uptime, 30 days96%
Latency p50258 ms

Connect

8 clients · secrets stay placeholders
{
  "mcpServers": {
    "tc39-mcp": {
      "type": "http",
      "url": "https://mcp.xyzzylabs.ai/tc39/mcp"
    }
  }
}
claude mcp add --transport http tc39-mcp https://mcp.xyzzylabs.ai/tc39/mcp
[mcp_servers.tc39-mcp]
url = "https://mcp.xyzzylabs.ai/tc39/mcp"
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "tc39-mcp": {
      "type": "remote",
      "url": "https://mcp.xyzzylabs.ai/tc39/mcp",
      "enabled": true
    }
  }
}
{
  "mcpServers": {
    "tc39-mcp": {
      "type": "http",
      "url": "https://mcp.xyzzylabs.ai/tc39/mcp"
    }
  },
  "deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=tc39-mcp&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vbWNwLnh5enp5bGFicy5haS90YzM5L21jcCJ9"
}
{
  "servers": {
    "tc39-mcp": {
      "type": "http",
      "url": "https://mcp.xyzzylabs.ai/tc39/mcp"
    }
  }
}
{
  "mcpServers": {
    "tc39-mcp": {
      "httpUrl": "https://mcp.xyzzylabs.ai/tc39/mcp"
    }
  }
}
extensions:
  "tc39-mcp":
    enabled: true
    name: "tc39-mcp"
    type: streamable_http
    uri: "https://mcp.xyzzylabs.ai/tc39/mcp"
    timeout: 300

Quality 79 / 100good

protocol75 · weight 25
  • warn
    protocol.modernnewest supported version is 2024-11-05; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
  • n/a
    protocol.statelessonly applies to 2026-07-28 servers
  • pass
    protocol.transportstreamable HTTP
  • n/a
    protocol.list_ttlonly applies to 2026-07-28 servers
authorizationn/a · weight 15
  • n/a
    auth.prm, auth.as_metadata, auth.cimdno remote uses OAuth
  • n/a
    auth.secret_in_urlno templated URL
tool hygiene71 · weight 30
  • pass
    tools.descriptionsevery tool has a description
  • pass
    tools.description_lengthdescriptions are concise
  • pass
    tools.schemasevery tool has an object input schema
  • fail
    tools.annotationsno tool declares readOnlyHint or destructiveHint, so clients cannot tell safe calls from risky ones
  • fail
    tools.directory_hintsno tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: proposal.get (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); spec.about (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); clause.list (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); …
  • pass
    tools.token_costabout 1,882 tokens to load every tool
  • pass
    tools.api_dumptools are not a one-to-one API dump
stability100 · weight 15
  • pass
    stability.changesno tool changes in 30 days
  • pass
    stability.rug_pullno tool changed its meaning under the same name
dependenciesn/a · weight 15
  • n/a
    deps.known_vulns, deps.mcp_sdk_version, deps.resolvabledeps.dev does not know [email protected]

17 tools, about 1,882 tokens to load them all · tool set a0d40b2e18a4 · checked 2026-10-20 15:26 UTC

Tool changes

No tool definition changes recorded. A server's first observation is its baseline; later probes record what changes.

Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.

Trust 96 / 100

provenance90
liveness98
freshness100
hygiene100

+repository +namespace-matches-repo +website +reachable +uptime-96% +updated-13d-ago

Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.

Dependencies

[email protected] npmthis version is not known to the dependency resolver

Dependency graphs from deps.dev; advisories from OSV.dev, including the GitHub Advisory Database and the PyPI Advisory Database; all CC BY 4.0. The graph is what a clean install of this version resolves today; nothing was installed or run. How it is checked.

Endpoints

remoteauthreachableuptime 30dp50protocollast ok
https://mcp.xyzzylabs.ai/tc39/mcp streamable-httpnoneyes96%258 ms2024-11-052026-10-20
packageregistryversionruntimesecrets
tc39-mcpnpm0.6.4–

Tools (17)

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.
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.
proposal.getFetch one TC39 proposal by slug (exact) or name (case-insensitive).
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).
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.
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 URLs. Set `include_cross_spec: true` to also resolve outgoing references from ECMA-262 → ECMA-402 (or vice versa).
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.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.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.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).
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.
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.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.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.
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`.

Schemas: list_tools.

Similar MCP servers

More from io.github.xyzzylabs

Official server.json
{
  "name": "io.github.xyzzylabs/tc39-mcp",
  "title": "tc39-mcp",
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
  "remotes": [
    {
      "url": "https://mcp.xyzzylabs.ai/tc39/mcp",
      "type": "streamable-http"
    }
  ],
  "version": "0.6.4",
  "packages": [
    {
      "version": "0.6.4",
      "transport": {
        "type": "stdio"
      },
      "identifier": "tc39-mcp",
      "registryType": "npm"
    }
  ],
  "repository": {
    "url": "https://github.com/xyzzylabs/tc39-mcp",
    "source": "github"
  },
  "websiteUrl": "https://mcp.xyzzylabs.ai/tc39",
  "description": "Independent MCP server for the TC39 specs (ECMA-262 + ECMA-402): clauses, search, diffs, history."
}