wasm-mcp

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

Should I use this

Quality & Safety

A
Description quality
97%
Schema completeness
88%
Naming quality
80%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (1)

  • LOWTool 'type_get' description lacks action verbin type_get

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,330Tokens (tool definitions)
~929 BTypical response size
Moderate attention impact (1.04% of 128k context)

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

npmwasm-mcp0.2.16stdio

Remote endpoints

https://wasm-mcp.chicoxyzzy.workers.dev/mcpstreamable-http
https://mcp.xyzzylabs.ai/wasm/mcpstreamable-http

What it can do

Tool inventory

Tools (9)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢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

Rate this Server

Evidence

Recent observations

verifiedversion not recorded9 tools
verifiedversion not recorded9 tools
verifiedversion not recorded9 tools
verifiedversion not recorded9 tools
verifiedversion not recorded9 tools
verifiedversion not recorded9 tools
verifiedversion not recorded9 tools
verifiedversion not recorded9 tools
verifiedversion not recorded9 tools
verifiedversion not recorded9 tools