wasm-mcp
Read-only MCP server for the WebAssembly spec: instructions, types, sections, search, proposals.
Should I use this
Quality & Safety
Findings (1)
- LOWin type_get
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"wasm-mcp": {
"command": "npx",
"args": [
"wasm-mcp"
]
}
}
}Runnable packages
0.2.16stdioRemote endpoints
https://wasm-mcp.chicoxyzzy.workers.dev/mcpstreamable-httphttps://mcp.xyzzylabs.ai/wasm/mcpstreamable-httpWhat it can do
Tool inventory
Tools (9)
🟢spec_version
Return this server's package version plus the pinned upstream commit SHA(s) the bundled data was indexed from.
Input Schema
{
"type": "object",
"properties": {},
"additionalProperties": false
}🟢instruction_get(mnemonic, opcode)
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).
Input Schema
{
"type": "object",
"properties": {
"mnemonic": {
"type": "string",
"description": "Instruction mnemonic, e.g. `i32.add`. Case-insensitive, exact."
},
"opcode": {
"type": "string",
"description": "Binary opcode hex, e.g. `0x6a` or `0xfd 0x89 0x02`. Exact."
}
},
"additionalProperties": false
}🟢instruction_list(category, introduced_in, prefix, can_trap)
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.
Input Schema
{
"type": "object",
"properties": {
"category": {
"type": "string",
"enum": [
"control",
"numeric",
"parametric",
"variable",
"table",
"memory",
"ref",
"i31",
"struct",
"array",
"extern",
"vec"
],
"description": "Instruction category."
},
"introduced_in": {
"type": "string",
"enum": [
"1.0",
"2.0",
"3.0"
],
"description": "Introducing version."
},
"prefix": {
"type": "string",
"description": "Mnemonic prefix, e.g. `i32.`. Case-insensitive."
},
"can_trap": {
"type": "boolean",
"description": "Keep only instructions that can (true) / cannot (false) trap."
}
},
"additionalProperties": false
}🟢instruction_search(query, limit)
Ranked free-text search across instruction mnemonics, categories, and opcode hex. Returns hits with a `matched_on` field.
Input Schema
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Search text."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"description": "Max hits."
}
},
"required": [
"query"
],
"additionalProperties": false
}🟢type_get(name)
Look up a value type (`i32`, `funcref`, `v128`, …) or type form (`functype`, `limits`, `memtype`, …): classification, sibling members, defining clause prose, formal refs, and URL.
Input Schema
{
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Type or type-form name. Case-insensitive, exact."
}
},
"required": [
"name"
],
"additionalProperties": false
}🟢section_get(id, spec)
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.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Clause id or anchor."
},
"spec": {
"type": "string",
"enum": [
"core",
"js-api",
"web-api"
],
"description": "Which spec (default core)."
}
},
"required": [
"id"
],
"additionalProperties": false
}🟢section_list(spec, path, anchor_prefix, titled_only, max_level)
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`.
Input Schema
{
"type": "object",
"properties": {
"spec": {
"type": "string",
"enum": [
"core",
"js-api",
"web-api"
],
"description": "Which spec (default core)."
},
"path": {
"type": "string",
"description": "Source path / prefix."
},
"anchor_prefix": {
"type": "string",
"description": "Id/anchor prefix."
},
"titled_only": {
"type": "boolean",
"description": "Drop anchor-only blocks."
},
"max_level": {
"type": "integer",
"minimum": 1,
"maximum": 6,
"description": "Cap heading depth."
}
},
"additionalProperties": false
}🟢spec_search(query, spec, limit)
Full-text search across clause anchors, titles, and prose of a spec (`core` / `js-api` / `web-api`). Ranked anchor-exact > title > anchor > prose, with snippets for body matches.
Input Schema
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Search text."
},
"spec": {
"type": "string",
"enum": [
"core",
"js-api",
"web-api"
],
"description": "Which spec (default core)."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"description": "Max hits."
}
},
"required": [
"query"
],
"additionalProperties": false
}🟢proposal_list(status, phase, champion, affects, contains)
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`.
Input Schema
{
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"phase-0",
"phase-1",
"phase-2",
"phase-3",
"phase-4",
"phase-5",
"finished",
"inactive"
],
"description": "Lifecycle status."
},
"phase": {
"type": "integer",
"minimum": 0,
"maximum": 5,
"description": "Numeric phase 0–5."
},
"champion": {
"type": "string",
"description": "Champion substring."
},
"affects": {
"type": "string",
"description": "Affected spec (finished only)."
},
"contains": {
"type": "string",
"description": "Name/champion substring."
}
},
"additionalProperties": false
}Community
Evidence