wasm-mcp

io.github.xyzzylabs由 GitHub 帳號 xyzzylabs 發布v0.2.16更新於 Oct 24, 2026

Read-only MCP server for the WebAssembly spec: instructions, types, sections, search, proposals.

已驗證Streamable HTTP可網頁執行知識與記憶開發者工具

概覽

AI 產生的概覽

針對 WebAssembly 規格的唯讀 MCP 伺服器,讓助理查詢指令、型別、規格條文與提案。

可以做什麼
依助憶符或二進位操作碼查詢單一指令,包含堆疊簽章與陷阱條件;也可依類別、版本或前綴列出與搜尋指令。查詢值型別與型別形式及其定義原文。在 core、JS API 與 web API 三套規格中取得、瀏覽並全文搜尋條文。列出 WebAssembly 提案與其階段,可依狀態、champion 或受影響規格篩選。回報套件版本與資料所依據的固定上游提交。
適用情境
適合在開發 WebAssembly 工具鏈、編譯器、執行環境或學習規格時,讓助理依據固定版本的官方規格作答,而非憑記憶。也方便確認某項特性處於哪個提案階段。
執行需求
可使用託管的 streamable HTTP 遠端端點,或以 npx 從 npm 套件 wasm-mcp 以 stdio 在本機執行。不需帳號、API 金鑰或請求標頭;規格資料已內嵌,請求時不需網路存取。
安裝前請注意
唯讀且匿名:不執行、編譯或執行任何 WebAssembly 程式碼,也不寫入資料。託管端點依來源 IP 限流。專案聲明與 W3C WebAssembly 相關工作組無關聯,因此回答應視為對應 spec_version 所回報的固定提交。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 wasm-mcp,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/io.github.xyzzylabs%2Fwasm-mcp/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。

{
  "mcpServers": {
    "wasm": {
      "type": "http",
      "url": "https://mcp.xyzzylabs.ai/wasm/mcp"
    }
  }
}

README

wasm-mcp

Model Context Protocol server for the WebAssembly core specification. SHA-pinned, read-only, deterministic — safe to host as a public unauthenticated endpoint.

Not affiliated with, endorsed by, or sponsored by the W3C WebAssembly Community Group or Working Group.

What it gives you

  • spec_version — the pinned upstream commit and package version.
  • instruction_get — opcode bytes, category, introducing version, stack type signature, validation + execution prose anchors / URLs, and trap conditions (traps + can_trap), by mnemonic (i32.add) or binary opcode (0x6a).
  • instruction_list — enumerate, filterable by category (numeric, vector, reference, parametric, variable, table, memory, control, ref, i31, struct, array, extern), introducing version, or prefix.
  • instruction_search — ranked free-text search across mnemonics, categories, and opcodes.
  • type_get — value types (number / vector / reference) and type forms (functype, limits, memtype, …) with defining prose.
  • section_get — one spec clause by id / anchor (structure, validation, execution, binary, text), with prose, cross-references, SpecTec formal-rule references, and the rendered URL.
  • section_list — navigate the clause tree by area or anchor prefix.
  • spec_search — full-text search across anchors, titles, and prose.
  • proposal_list — WebAssembly proposals and their phases (from the pinned WebAssembly/proposals repo), filterable by status, phase, champion, or affected spec.

section_get, section_list, and spec_search take a spec argument covering all three specs in the WebAssembly/spec repo: core (default), js-api (the JavaScript embedding API), and web-api (Web-platform integration). The instruction and type tools are core-only.

Contract

Every tool is:

  • Read-only. No state mutation, no writes outside an optional local cache.
  • Deterministic. Same input → same output, over the pinned spec commit recorded in vendor/PINNED.txt.
  • No execution. Never compiles, validates-by-running, instantiates, or runs any WebAssembly or arbitrary code. Validation and reduction rules are returned as data.
  • No auth, no secrets, no PII. Usable anonymously.
  • No network at request time. All spec data is fetched and indexed at build time and baked into the package.

Install (stdio, local)

bash
npx wasm-mcp

Wire it into any MCP client by adding the server to its config (the launch command is the same everywhere; only the config file differs):

json
{  "mcpServers": {    "wasm": {      "type": "stdio",      "command": "npx",      "args": ["wasm-mcp"]    }  }}

Hosted Worker

The Cloudflare Worker in worker/ exposes the same tool surface as the stdio package over streamable HTTP at a single unauthenticated endpoint, rate-limited per source IP (30 req / 60 s):

https://mcp.xyzzylabs.ai/wasm/mcp

GET /wasm/health reports status and the pinned SHAs; GET /wasm/privacy states the anonymous, no-storage posture. All spec data is bundled into the Worker, so it does pure in-memory lookups — no storage, no network at request time.

Releases & data refresh

The pinned commits live in vendor/PINNED.txt and are reported by spec_version. A scheduled GitHub Actions workflow (refresh.yml) SHA-diffs the upstream repos daily; when a pin moves it re-pins, bumps the patch version, and tags a release, which publishes the npm package (release.yml) and redeploys the Worker (deploy-worker.yml).

Maintainers:

  • npm publish uses Trusted Publishing (OIDC) — no NPM_TOKEN. Configure it once on npmjs.com (wasm-mcp → Settings → Trusted Publisher → GitHub Actions: org xyzzylabs, repo wasm-mcp, workflow release.yml).
  • Worker deploy needs CLOUDFLARE_API_TOKEN + CLOUDFLARE_ACCOUNT_ID, stored as environment secrets on the cloudflare GitHub Environment (not repo-wide) with a main + v* deployment rule — see Securing the deploy credentials.
  • For the refresh workflow's tag push to trigger release + deploy, add a WORKFLOW_PAT PAT (contents: write + workflows) — without it, refresh still re-pins and tags, but you run release / deploy manually. (Same secret name tc39-mcp uses, so one PAT — or an xyzzylabs org secret — can serve both repos.)

License

MIT — see LICENSE.

來源:README.md,提交 3a46742

工具

9

spec_version

Return this server's package version plus the pinned upstream commit SHA(s) the bundled data was indexed from.

無需輸入參數。

instruction_get

Fetch one WebAssembly instruction by mnemonic (`i32.add`) or binary opcode (`0x6a`, multi-byte `0xfd 0x89 0x02`): opcode bytes, category, introducing version, stack type signature, validation/execution anchors + URLs, and `traps` (runtime trap conditions with canonical names; empty + `can_trap:false` when it never traps).

輸入參數opcodemnemonic

instruction_list

Enumerate WebAssembly instructions, filterable by `category`, `introduced_in` (1.0|2.0|3.0), mnemonic `prefix`, and `can_trap` (only trapping / only non-trapping). Rows (incl. `can_trap`) sorted by opcode.

輸入參數prefixcan_trapcategoryintroduced_in

type_get

Look up a value type (`i32`, `funcref`, `v128`, …) or type form (`functype`, `limits`, `memtype`, …): classification, sibling members, defining clause prose, formal refs, and URL.

輸入參數name必填

section_get

Fetch one spec clause by id or anchor across `core` / `js-api` / `web-api` (`syntax-numtype`, `valid-unreachable`, `modules`, `streaming-modules`, …): title, prose, cross-references, SpecTec formal refs, and rendered URL.

輸入參數id必填spec

section_list

Navigate the clause tree of a spec (`core` / `js-api` / `web-api`), filterable by source `path` (`syntax`, `valid`, `exec`, `binary`, `text`, `appendix`), `anchor_prefix`, `titled_only`, and `max_level`.

輸入參數pathspecmax_leveltitled_onlyanchor_prefix

proposal_list

List WebAssembly proposals + phases. Filter by `status` (phase-0…phase-5, finished, inactive), `phase` (0–5), `champion`, `affects` (core|js-api|web-api), or `contains`.

輸入參數phasestatusaffectschampioncontains

版本歷史

1
  1. v0.2.16最新Sep 16, 2026

評分

已滿足適用檢查項的 100%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分