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