npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

wwise-waapi-mcp

v1.0.3

Published

Progressive-disclosure MCP server scaffold for Wwise WAAPI

Readme

Wwise MCP Server

中文文档

Lightweight Node.js + TypeScript MCP server for Wwise WAAPI.

⭐ Uses progressive tool discovery. Avoiding consuming large tokens by exposing the full WAAPI tool surface at once.

⭐ Use locally installed Wwise's WAAPI Json Schema for full WAAPI capabilities.

Quick start

Install dependencies

npm i

Configure Wwise install ROOT and WAAPI connection

Configurations are stored in config/runtime.json

If you leave the wwiseRoot configuration empty, or the path is invalid, the tool will use %WWISEROOT% to try finding the path.

The waapiUrl defaults to ws://127.0.0.1:8080/waapi if not specified.

// Example
{
  "wwiseRoot": "C:/Program Files (x86)/Audiokinetic/Wwise 2024.1.0.8669",
  "waapiUrl": "ws://127.0.0.1:8080/waapi"
}

Run in development (stdio default)

npm run dev

Or build and run

npm run build
npm start

Schema source and startup requirements

This project does not redistribute Audiokinetic WAAPI schema JSON files.

At startup, the server resolves WAAPI schema directory using this priority:

  1. config/runtime.json -> wwiseRoot
  2. WWISEROOT environment variable
  3. Live WAAPI probe:
    • call ak.wwise.core.getProjectInfo to confirm a project is open
    • call ak.wwise.core.getInfo and read directories.install

Expected schema path under root:

<WwiseRoot>/Authoring/Data/Schemas/WAAPI

If all probes fail, startup exits with waapi_schema_not_found.

Core capabilities

  • Layered architecture: core + registry + domains + lib.
  • Progressive-disclosure MCP surface:
    • tools/list only exposes discovery tools, not every runtime WAAPI tool
    • currently exposed discovery tools:
      • session.configure
      • session.getConfig
      • catalog.listDomains
      • catalog.listTools
      • catalog.getToolSchema
      • catalog.executeTool
  • Discovery and execution flow:
    • catalog.listDomains
    • catalog.listTools
    • catalog.getToolSchema
    • catalog.executeTool
  • Runtime-backed WAAPI tools across major domains.
  • Standard response envelope:
    • success: { ok: true, data: ... }
    • failure: { ok: false, error: { code, message, details? } }
  • Structured tool call logs with sensitive-field redaction.

Transport modes

stdio mode (default)

Use for standard MCP clients that spawn the server as a subprocess.

npm run dev
npm start
# equivalent to: node dist/src/index.js

Example MCP client config:

{
  "servers": {
    "wwise-mcp": {
      "type": "stdio",
      "command": "node",
      "args": ["dist/src/index.js"]
    }
  }
}

HTTP/SSE mode

Use when you want a long-running MCP endpoint over HTTP.

node dist/src/index.js --http
node dist/src/index.js --http --port 8080
MCP_TRANSPORT=http PORT=8080 node dist/src/index.js

HTTP endpoint summary:

| Method | Path | Purpose | | :-- | :-- | :-- | | POST | /mcp | Send JSON-RPC requests. Omit mcp-session-id on first initialize to create session. | | GET | /mcp | Open standalone SSE stream for server notifications. Requires mcp-session-id. | | DELETE | /mcp | Close session. Requires mcp-session-id. |

Port selection priority:

  1. --port <n>
  2. PORT env var
  3. default 3000

The HTTP server binds to 127.0.0.1 by default.

Verify

npm run build
npm run verify

Verification checks:

  • only discovery tools are registered through MCP tools/list
  • domains can be enumerated through catalog.listDomains
  • domain-local tools can be discovered through catalog.listTools
  • one tool schema can be queried through catalog.getToolSchema
  • one runtime WAAPI call can be executed through catalog.executeTool
  • WAAPI failure is still returned as a structured error when WAAPI is unavailable

Note: verify requires schema path resolution to succeed first.

WAAPI connection

Default WAAPI URL:

ws://127.0.0.1:8080/waapi

Configure in config/runtime.json:

{
  "waapiUrl": "ws://host:port/waapi"
}

Connecting to a specific Wwise instance

Each Wwise instance exposes WAAPI on a configurable port (default 8080). If multiple Wwise instances are running on the same machine, each must use a different port — Wwise will refuse to start its WAAPI server if the chosen port is already in use.

Use the session.configure tool at runtime to switch the target port without restarting the server:

// Switch to a Wwise instance running on port 8081
{ "port": 8081 }

The change is persisted to runtime.json and the current WAAPI session is disconnected. The next WAAPI call automatically reconnects to the new port.

Use session.getConfig to check the currently configured URL.

Access filtering

Optional startup filters:

  • WWISE_MCP_ALLOWED_DOMAINS=object,soundengine
  • WWISE_MCP_ALLOWED_RISKS=low,medium
  • WWISE_MCP_ALLOWED_PERMISSIONS=waapi:authoring:read,waapi:runtime

Package as EXE

npm run package:exe

Output file: bin/wwise-mcp.exe

Manual validation

After startup, call tools in this order:

  1. catalog.listDomains
  2. catalog.listTools with { "domain": "object", "includePlanned": true }
  3. catalog.getToolSchema with { "toolName": "ak.wwise.core.object.get" }
  4. catalog.executeTool with { "toolName": "ak.wwise.core.object.get", "arguments": { ... } }

This is the intended progressive-disclosure path: domain summary -> tool summary -> schema details -> execution.

The practical implication is that MCP clients no longer receive the full callable WAAPI surface during tools/list. They first discover available domains and tools, then request schema details for one tool, and only then execute that tool through the unified catalog.executeTool entrypoint.

Extend with new domains

  1. Copy src/domains/example/tools.ts to a new domain folder.
  2. Export getYourDomainTools() returning ToolDefinition[].
  3. Add domain metadata to config/domains.json.
  4. Import/register tools in src/index.ts.
  5. Extend src/lib/referenceCatalog.ts mapping when needed.