Skip to content

MCP Overview

MZAP includes a built-in Model Context Protocol (MCP) server that enables AI assistants to control audio playback, routing, and system configuration via natural language.

MCP is an open protocol that allows AI models to interact with external tools and data sources. MZAP implements an MCP server with a Streamable HTTP transport, accessible at the /mcp endpoint.

The MCP server exposes 11 tool groups:

Tool GroupDescription
PlaybackPlay, pause, stop, seek, load tracks
VolumeAdjust player and zone volumes
RoutingAttach/detach players to zones
SystemInitialize devices, health check
Player ManagementCreate/remove players
PlaylistsList, create, modify playlists
DSPAdjust EQ and compressor settings
WorkspacesSave, load, list workspaces
JinglesPlay jingles with ducking
LibrarySearch media library
RadioLoad internet radio streams

MCP access is gated by a license feature flag.

Connect any MCP-compatible AI client to:

http://localhost:5000/mcp

The server uses Streamable HTTP transport and supports session tracking for concurrent connections.

Settings → MCP server (AI integration) shows the URL to use, whether the feature is licensed, how many clients are connected, and ready-to-copy setup for each supported client. See Settings → MCP server.

With authentication enabled, MCP clients must send a valid API key in an X-API-Key header. The key belongs to a user, and that user's role decides which tools the client can see and call:

RoleTools available
ViewerRead-only: get_system_status, get_workspace_info, search_library, list_tts_voices, search_radio_stations
OperatorThe above, plus playback, volume/mute, jingle playback, playback mode, and EQ/compressor
AdminEverything, including creating players and playlists, routing, TTS jingle creation, and saving/loading workspaces

Tools outside a client's role are hidden from its tool list rather than failing when called. Non-admin clients also only see the players and zones assigned to their user in the workspace, and cannot act on the ones they cannot see.

A connection with a missing or invalid key is rejected with 401.

With authentication disabled, nothing changes: no key is required and every tool is available, matching how the desktop app and browser UI behave.

To give an AI client limited access, create a dedicated user with the role you want in Users, then use that user's API key in the client's configuration.