ECMAScript规范搜索服务

一个用于搜索和阅读ECMA-262规范、浏览TC39提案、搜索会议记录、查找测试用例和获取会议议程的远程MCP服务器。

  • by jasnell
  • TypeScript
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 jasnell/tc39-spec-mcp

使用说明

tc39规格mcp

遥控器 主控程序 用于搜索和读取 ECMA-262 规范,浏览活动 TC39提案,搜索 全体会议记录,查找现有 测试262 一致性测试,获取 会议议程,抬头看 TC39代表.

部署为无状态 Cloudflare工作人员 使用可流式传输的http。

工具

search_spec

通过抽象操作名称、内置对象、节ID或节号搜索ECMA-262规范。

参数:

  • query (字符串,必填)--搜索词(例如。 "ValidateTypedArray", "ArrayBuffer", "sec-arraybuffer-objects", "25.1")
  • limit (number,可选)--返回的最大结果数。默认值:15。

示例结果:

Found 1 matching section(s) for "ValidateTypedArray":

- **23.2.4.4 ValidateTypedArray ( O, order )**
  ID: `sec-validatetypedarray`
  URL: https://tc39.es/ecma262/multipage/indexed-collections.html#sec-validatetypedarray

get_spec_section

通过ID获取特定ECMA-262节的完整内容。返回转换为简化markdown的节,并保留算法步骤、参数和交叉引用。

参数:

  • section_id (string,必填)--节ID(例如。 "sec-validatetypedarray").这 sec- 前缀是可选的。使用 search_spec 以发现ID。

list_proposals

列出TC39官方提案 tc39/提案 存储库。

参数:

  • stage (字符串,可选)--按阶段筛选: "1", "2", "2.7", "3",或 "4" (已完成)。
  • search (string,可选)--按名称、作者或冠军进行筛选。

get_proposal

从其GitHub存储库中获取TC39提案的README(以及可选的规范文本)。

参数:

  • name (字符串,必填)--提案名称或搜索词(例如。 "Temporal", "decorators").
  • include_spec (布尔值,可选)--如果 true,还获取提案的 spec.emu 或 spec.html 文件。违约: false.

search_notes

在TC39全体会议笔记中搜索关于提案、主题或代表的讨论。返回与会议日期、演示者、讨论摘录和结论匹配的议程项目部分。

参数:

  • query (字符串,必填)--搜索词(例如。 "Temporal", "iterator helpers", "TypedArray concat").
  • from_date (字符串,可选)--仅搜索自此日期以后的会议,在 YYYY-MM 格式。
  • limit (number,可选)--返回的最大结果数。默认值:10。

示例结果:

Found 1 matching section(s) for "TypedArray concat":

### TypedArray Concatenation
Meeting: November 18, 2025 (2025-11)
Presenter: James Snell (JSL)
Conclusion: Conditional stage 1 accepted pending repo creation.

search_test262

搜索 tc39/test262 一致性测试套件,用于与内置对象、方法或功能相关的现有测试。

参数:

  • query (string,必填)--功能名称、内置或方法路径(例如。 "ArrayBuffer", "TypedArray.prototype.slice", "ArrayBuffer.prototype.transfer").
  • limit (number,可选)--返回的最大结果数。默认值:20。

get_agenda

从中获取并解析TC39全体会议议程 tc39/议程 存储库。返回所有提案,包括阶段、时间框、进度目标、支持材料链接(幻灯片、规格PR、测试262 PR)和演示者。还包括短/长讨论和时间表限制。

参数:

  • meeting (字符串,可选)--中的会议标识符 YYYY/MM 格式(例如。, "2026/03").如果省略,则返回下一个即将召开的会议。

lookup_delegate

按姓名、TLA(三个字母的缩写)或部分匹配查找TC39代表。返回代理人的全名和TLA。有助于解析会议笔记记录中的缩写。

参数:

  • query (字符串,必填)--代表姓名、TLA或部分匹配(例如。 "KG", "Kevin Gibbons", "gibbons").

示例结果:

Found delegate: **Kevin Gibbons** (KG)

数据源

数据 源 缓存TTL
规格截面索引 tc39.es/ecma262/多页/ TOC 24小时
规范部分内容 单个多页HTML文件 24小时
提案(第1至4阶段) github/tc39/提案 markdown文件 1小时
提案自述/规范文本 个人提案GitHub仓库 1小时
会议记录 github/tc39/笔记 会议目录 24小时列表,7天过去的笔记,1小时最近的
测试262测试 https://tc39/test262 目录树 6小时
会议议程 github/tc39/根达斯 标记文件 15分钟
代表名单 github/tc39/笔记 delegates.txt 24小时

设置

作为MCP客户端

添加到MCP客户端配置中:

{
  "tc39": {
    "type": "remote",
    "url": "https://tc39-spec-mcp.jasnell.workers.dev/mcp",
    "enabled": true
  }
}

本地开发

npm install
npm start
# MCP endpoint: http://localhost:8787/mcp

部署

npx wrangler deploy

建筑

  • 无状态 --用途 createMcpHandler 具有按请求服务器工厂(无持久对象)。
  • 无身份验证 --所有数据源都是公开的。
  • 缓存 -Cloudflare Cache API在生产、内存中 Map 本地开发者的后备方案。
  • HTML标记 --从多页HTML中提取规范部分,并将其转换为适合LLM使用的简化标记。