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

@wave-av/mcp-server

v0.2.0

Published

WAVE MCP Server - Exposes WAVE streaming APIs as tools for AI agents

Readme

@wave-av/mcp-server

MCP (Model Context Protocol) server that exposes WAVE streaming APIs as tools for AI coding assistants (Claude Code, Cursor, Windsurf).

kind domain lang visibility phase

Live · docs · npm · repo · Docs · Status

This README is machine-generated from WAVE's grounded Single Source of Truth — every factual claim below traces to a resolver that npm run verify checks against the live repo and live endpoints. Nothing here is asserted without a receipt.


Quick start

npx @wave-av/mcp-server
{
  "mcpServers": {
    "wave": {
      "command": "npx",
      "args": ["-y", "@wave-av/mcp-server"],
      "env": {
        "WAVE_API_KEY": "wave_live_..."
      }
    }
  }
}

Setup

1. Get an API key

# Via CLI
wave auth login

# Or create at https://wave.online/settings/api-keys

2. Configure your AI tool

Add to your .mcp.json (Claude Code, Cursor, Windsurf, etc.) — see the Quick start config above.

Available tools — Streams

| Tool | Description | | --- | --- | | wave_list_streams | List all streams with pagination and status filtering | | wave_create_stream | Create a new stream with protocol and privacy options | | wave_start_stream | Start streaming on an existing stream | | wave_stop_stream | Stop an active stream | | wave_get_stream_health | Get real-time health metrics for a stream |

Available tools — Studio

| Tool | Description | | --- | --- | | wave_list_productions | List studio production sessions | | wave_create_production | Create a new multi-camera production |

Available tools — Analytics

| Tool | Description | | --- | --- | | wave_get_viewers | Get current viewer count and breakdown | | wave_get_stream_metrics | Get detailed stream performance metrics |

Available tools — Billing

| Tool | Description | | --- | --- | | wave_get_subscription | Get current subscription plan and status | | wave_get_usage | Get current period usage and limits |

Resources

Access WAVE entities directly via the wave:// URI scheme:

  • wave://streams/{id} - Stream configuration and status
  • wave://productions/{id} - Studio production details

Environment variables

| Variable | Required | Default | Description | | --- | --- | --- | --- | | WAVE_API_KEY | Yes | - | Your WAVE API key | | WAVE_BASE_URL | No | https://wave.online | API base URL |

In-process (Claude Agent SDK) mode

For consumers already running inside a Claude Agent SDK session, the same tools are available in-process — skipping the stdio subprocess hop (~50 ms vs ~500 ms cold start). The tool list is shared with the stdio server (src/tools/index.ts), so the two transports never drift.

@anthropic-ai/claude-agent-sdk is an optional peer dependency: stdio users never need it. Install it only for this mode:

npm install @wave-av/mcp-server @anthropic-ai/claude-agent-sdk
import { query } from "@anthropic-ai/claude-agent-sdk";
import { createWaveSdkMcpServer } from "@wave-av/mcp-server/sdk-server";

const wave = await createWaveSdkMcpServer();
for await (const message of query({
  prompt: "List my active streams",
  options: { mcpServers: { wave }, env: { WAVE_API_KEY: process.env.WAVE_API_KEY } },
})) {
  // handle messages
}

Setup for other AI tools

Cursor

Add to .cursor/mcp.json:

{
  "mcpServers": {
    "wave": {
      "command": "npx",
      "args": ["-y", "@wave-av/mcp-server"],
      "env": { "WAVE_API_KEY": "wave_live_..." }
    }
  }
}

Windsurf

Add to Windsurf MCP settings with the same configuration.

Troubleshooting

Server not starting

Verify your API key is set:

echo $WAVE_API_KEY

Tools not appearing

Restart your AI tool after adding the MCP configuration. Most tools require a restart to detect new MCP servers.

Connection errors

The MCP server uses stdio transport (no network listener). If you see connection errors, check that npx can run successfully:

npx @wave-av/mcp-server --version

Testing the server

Send a JSON-RPC initialize request to verify:

echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0.0"}}}' | npx @wave-av/mcp-server

Related packages

Development

cd packages/mcp-server
pnpm install
pnpm run build
pnpm run dev       # Watch mode
pnpm run type-check

License

MIT

Capabilities

| Capability | Status | | --- | --- | | Control a PTZ camera (pan, tilt, zoom, focus, preset recall/store). | preview | | Create a clip from a recorded stream, optionally exporting to social platforms. | preview | | Create a new multi-camera studio production. | preview | | Create a new stream (protocol, recording, region options). | preview | | Get real-time stream health metrics (bitrate, frame rate, latency). | preview | | Get detailed stream performance metrics (bitrate, latency, quality, error rates). | preview | | Get current subscription plan, billing cycle, and feature entitlements. | preview | | Get current billing-period usage (streaming minutes, storage, bandwidth). | preview | | Get current viewer count and viewer demographics for a stream or account-wide. | preview | | List all studio productions in the WAVE account. | preview | | List all streams in the WAVE account with pagination and status filtering. | preview | | Mark a moment in a stream as a highlight for later clipping. | preview | | Moderate a chat message in a live stream (block, flag, or allow). | preview | | Show, hide, or update an HTML5 graphics overlay on a production. | preview | | Start real-time captions/transcription on a stream. | preview | | Start a stream by ID, transitioning it to the active state. | preview | | Stop an active stream by ID. | preview | | Switch the live program output to a different camera/source in a Cloud Switcher session. | preview |

For AI agents

Exposes the MCP tool wave-mcp-server over stdio.

The receipts

Every claim below is checked by npm run verify against the live repo or endpoint — a non-pass verdict fails the gate.

| Claim | How it's verified | | --- | --- | | Documentation surface is docs.wave.online/mcp | resolved by grepping package.json | | Published npm package name is @wave-av/mcp-server | resolved by grepping package.json | | wave_control_camera tool defined in src/tools/production.ts | resolved by grepping src/tools/production.ts | | Exposes 18 MCP tools | resolved by grepping capabilities.json | | wave_create_clip tool defined in src/tools/production.ts | resolved by grepping src/tools/production.ts | | wave_create_production tool defined in src/tools/studio.ts | resolved by grepping src/tools/studio.ts | | wave_create_stream tool defined in src/tools/streams.ts | resolved by grepping src/tools/streams.ts | | wave_get_viewers tool defined in src/tools/analytics.ts | resolved by grepping src/tools/analytics.ts | | wave_list_productions tool defined in src/tools/studio.ts | resolved by grepping src/tools/studio.ts | | wave_list_streams tool defined in src/tools/streams.ts | resolved by grepping src/tools/streams.ts | | wave_mark_highlight tool defined in src/tools/production.ts | resolved by grepping src/tools/production.ts | | wave_moderate_chat tool defined in src/tools/production.ts | resolved by grepping src/tools/production.ts | | wave_show_graphic tool defined in src/tools/production.ts | resolved by grepping src/tools/production.ts | | wave_start_captions tool defined in src/tools/production.ts | resolved by grepping src/tools/production.ts | | wave_start_stream tool defined in src/tools/streams.ts | resolved by grepping src/tools/streams.ts | | wave_stop_stream tool defined in src/tools/streams.ts | resolved by grepping src/tools/streams.ts | | wave_get_stream_health tool defined in src/tools/streams.ts | resolved by grepping src/tools/streams.ts | | wave_get_stream_metrics tool defined in src/tools/analytics.ts | resolved by grepping src/tools/analytics.ts | | wave_get_subscription tool defined in src/tools/billing.ts | resolved by grepping src/tools/billing.ts | | wave_switch_camera tool defined in src/tools/production.ts | resolved by grepping src/tools/production.ts | | wave_get_usage tool defined in src/tools/billing.ts | resolved by grepping src/tools/billing.ts | | Server connects via stdio transport (no network listener) | resolved by grepping src/server.ts |

Topics

wave · mcp · model-context-protocol · ai · streaming · tools


Built by WAVE Online, LLC · wave.online · Docs · LinkedIn