MCP 서버

tc39-mcp

io.github.xyzzylabs/tc39-mcp
개발자 도구 지식 및 문서 공개 · 연결 가능 MCP 2026-07-28

이 MCP로 할 수 있는 일

Provides structured search, browsing, cross-references, diffs, history, proposals, grammar, and test-suite access for ECMA-262 and ECMA-402 specifications.

clause.get
Fetch 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.
입력 스키마
{'type': 'object', 'required': ['id'], 'properties': {'at': {'type': 'string', 'description': "Optional historical SHA pin (hex, 4-40 chars). Only valid when edition='main'; released editions have no per-SHA history to address."}, 'id': {'type': 'string'}, 'spec': {'enum': ['262', '402'], 'type': 'string'}, 'edition': {'type': 'string'}}}
clause.list
List parsed spec clauses with optional filters (kind, section prefix, has_algorithm). `spec` selects '262' or '402'. `at: '<sha>'` queries a historical main snapshot.
입력 스키마
{'type': 'object', 'properties': {'at': {'type': 'string'}, 'kind': {'type': 'string'}, 'spec': {'enum': ['262', '402'], 'type': 'string'}, 'limit': {'type': 'number'}, 'edition': {'type': 'string'}, 'section': {'type': 'string'}, 'has_algorithm': {'type': 'boolean'}}}
clause.outline
Return 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.
입력 스키마
{'type': 'object', 'properties': {'spec': {'enum': ['262', '402'], 'type': 'string'}, 'depth': {'type': 'number'}, 'under': {'type': 'string'}, 'edition': {'type': 'string'}}}
proposal.get
Fetch one TC39 proposal by slug (exact) or name (case-insensitive).
입력 스키마
{'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string'}}}
proposal.list
List 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).
입력 스키마
{'type': 'object', 'properties': {'spec': {'enum': ['262', '402'], 'type': 'string'}, 'limit': {'type': 'number'}, 'stage': {'type': 'string'}, 'champion': {'type': 'string'}, 'contains': {'type': 'string'}}}
spec.about
Self-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.
입력 스키마
{'type': 'object', 'properties': {}, 'additionalProperties': False}
spec.crossrefs
For 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).
입력 스키마
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string'}, 'spec': {'enum': ['262', '402'], 'type': 'string'}, 'limit': {'type': 'number'}, 'edition': {'type': 'string'}, 'direction': {'enum': ['in', 'out', 'both'], 'type': 'string'}, 'include_cross_spec': {'type': 'boolean'}}}
spec.diff
Clause-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.
입력 스키마
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string'}, 'to': {'type': 'string'}, 'from': {'type': 'string'}, 'spec': {'enum': ['262', '402'], 'type': 'string'}}}
spec.global_search
Run 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.
입력 스키마
{'type': 'object', 'required': ['query'], 'properties': {'limit': {'type': 'number'}, 'query': {'type': 'string'}, 'search_steps': {'type': 'boolean'}}}
spec.grammar
Query 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).
입력 스키마
{'type': 'object', 'properties': {'spec': {'enum': ['262', '402'], 'type': 'string'}, 'limit': {'type': 'number'}, 'edition': {'type': 'string'}, 'contains': {'type': 'string'}, 'include_sdo': {'type': 'boolean'}, 'nonterminal': {'type': 'string'}}}
spec.sdo_index
Index 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).
입력 스키마
{'type': 'object', 'properties': {'by': {'enum': ['production', 'sdo'], 'type': 'string'}, 'spec': {'enum': ['262', '402'], 'type': 'string'}, 'limit': {'type': 'number'}, 'filter': {'type': 'string'}, 'edition': {'type': 'string'}}}
spec.search
Search the parsed spec by clause id / aoid / title (+ step text with `search_steps`). Aoid-exact ranks first. `at: '<sha>'` searches a historical main snapshot.
입력 스키마
{'type': 'object', 'required': ['query'], 'properties': {'at': {'type': 'string'}, 'spec': {'enum': ['262', '402'], 'type': 'string'}, 'limit': {'type': 'number'}, 'query': {'type': 'string'}, 'edition': {'type': 'string'}, 'search_steps': {'type': 'boolean'}}}
spec.snapshots
List 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.
입력 스키마
{'type': 'object', 'properties': {'spec': {'enum': ['262', '402'], 'type': 'string'}, 'edition': {'type': 'string'}}}
spec.symbol_resolve
Resolve 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.
입력 스키마
{'type': 'object', 'required': ['notation'], 'properties': {'spec': {'enum': ['262', '402'], 'type': 'string'}, 'limit': {'type': 'number'}, 'edition': {'type': 'string'}, 'notation': {'type': 'string'}}}
spec.tables
List 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.
입력 스키마
{'type': 'object', 'properties': {'id': {'type': 'string'}, 'spec': {'enum': ['262', '402'], 'type': 'string'}, 'limit': {'type': 'number'}, 'filter': {'type': 'string'}, 'edition': {'type': 'string'}}}
spec.well_known_intrinsics
Enumerate 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.
입력 스키마
{'type': 'object', 'properties': {'spec': {'enum': ['262', '402'], 'type': 'string'}, 'limit': {'type': 'number'}, 'filter': {'type': 'string'}, 'edition': {'type': 'string'}}}
test262.search
Search 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`.
입력 스키마
{'type': 'object', 'properties': {'esid': {'type': 'string'}, 'limit': {'type': 'number'}, 'query': {'type': 'string'}}}
추가됨
test262.search
2026년 9월 17일 12:53 PM
추가됨
spec.crossrefs
2026년 9월 17일 12:53 PM
추가됨
spec.diff
2026년 9월 17일 12:53 PM
추가됨
spec.well_known_intrinsics
2026년 9월 17일 12:53 PM
추가됨
spec.symbol_resolve
2026년 9월 17일 12:53 PM
추가됨
spec.snapshots
2026년 9월 17일 12:53 PM
추가됨
spec.global_search
2026년 9월 17일 12:53 PM
추가됨
clause.outline
2026년 9월 17일 12:53 PM
추가됨
spec.sdo_index
2026년 9월 17일 12:53 PM
추가됨
spec.tables
2026년 9월 17일 12:53 PM
추가됨
spec.grammar
2026년 9월 17일 12:53 PM
추가됨
proposal.get
2026년 9월 17일 12:53 PM
추가됨
proposal.list
2026년 9월 17일 12:53 PM
추가됨
spec.search
2026년 9월 17일 12:53 PM
추가됨
clause.list
2026년 9월 17일 12:53 PM
추가됨
clause.get
2026년 9월 17일 12:53 PM
추가됨
spec.about
2026년 9월 17일 12:53 PM