MCP Voice/Text-Controlled Q-SYS Demo

MCP Voice/Text-Controlled Q-SYS Demo

AI-powered system that enables voice and text control for Q-SYS audio systems using OpenAI Agents SDK and Model Context Protocol.

Category
Visit Server

README

MCP Voice/Text-Controlled Q-SYS Demo

✅ PHASE 1 COMPLETE - AI-powered voice and text control for Q-SYS audio systems using the official @q-sys/qrwc SDK and Model Context Protocol.

🎉 BREAKTHROUGH: Q-SYS Connection SUCCESS!

We've successfully connected to a live Q-SYS Core with 42 components and 3,074+ controls!

🏆 Phase 1 Achievements

  • Official @q-sys/qrwc SDK Integration - Using Q-SYS's official WebSocket library
  • Live Q-SYS Core Connection - Connected to professional AV system at 192.168.50.150:443
  • 42 Components Discovered - Full access to audio, video, and control systems
  • 3,074+ Controls Available - Real-time control and monitoring of all Q-SYS components
  • WSS Protocol Working - Secure WebSocket connection established
  • Real-time Events - Live update events from Q-SYS components verified
  • Professional Error Handling - Robust connection management and logging

🎛️ Connected Q-SYS System Overview

Your Q-SYS system includes:

  • Audio: 15 components (mixers, gain controls, mics, soundbar)
  • Video: 8 components (displays, video switching, cameras, HDMI routing)
  • Conference: 5 components (Zoom Room, Microsoft Teams integration)
  • Control: 9 components (touchpanels, UCI controllers, encoders)
  • Building: 9 components (HVAC, status monitoring, date/time)

🚀 Quick Start

Test the Q-SYS Connection

# Test basic connection
npm run test:connection

# Test component interaction  
node tests/integration/qsys/test-component-control.mjs

# Run main application
npm run dev

Setup Your Q-SYS Core

  1. Follow the setup guides:

  2. Configure your Core IP:

    • Edit qsys-core.config.json with your Q-SYS Core's IP address
    • The application will automatically load your configuration

Development

# Install dependencies
npm install

# Run development server (connects to Q-SYS)
npm run dev

# Run tests
npm test

# Run linting
npm run lint

# Type checking
npm run type-check

🔧 Configuration

Q-SYS Core Configuration

Edit qsys-core.config.json:

{
  "qsysCore": {
    "host": "YOUR_CORE_IP_ADDRESS",
    "port": 443,
    "username": "",
    "password": "",
    "connectionSettings": {
      "timeout": 10000,
      "reconnectInterval": 5000,
      "enableAutoReconnect": true
    }
  }
}

Configuration Setup (No Duplication!)

We use separate files for different configuration:

# Q-SYS Core settings (IP, port, credentials):
# → Edit qsys-core.config.json

# OpenAI API key and environment settings:  
# → Edit .env file

# Setup both files:
./setup-env.sh
File Purpose
qsys-core.config.json Q-SYS Core connection settings
.env OpenAI API key, environment variables

See OPENAI_SETUP.md for complete setup instructions.

📊 Project Status

✅ Phase 1: Q-SYS Remote WebSocket Control (QRWC) - COMPLETE

  • 1.1: Project Setup & Infrastructure
  • 1.2: Official @q-sys/qrwc SDK Integration
  • 1.3: WebSocket Connection (WSS on port 443)
  • 1.4: Component Discovery & Access (42 components found)
  • 1.5: Real-time Event Handling
  • 1.6: Error Handling & Reconnection Logic
  • 1.7: Configuration System (JSON + Environment)
  • 1.8: Testing & Verification

🔄 Phase 2: MCP Server Implementation - READY

  • ⏳ MCP tools for Q-SYS component control
  • ⏳ Real-time component monitoring
  • ⏳ Voice command processing integration

🔄 Phase 3: AI Integration - READY

  • ⏳ OpenAI integration for voice processing
  • ⏳ Natural language Q-SYS control
  • ⏳ Conversational AV system management

🛠️ Technology Stack

Core Technologies

  • TypeScript 5.8.4 - Strict typing and modern JavaScript
  • @q-sys/qrwc 0.4.1-beta - Official Q-SYS Remote WebSocket Control SDK
  • WebSocket (WSS) - Secure WebSocket connection to Q-SYS Core
  • Winston - Structured logging with metadata
  • Jest - Testing framework with async support

Q-SYS Integration

  • Official Q-SYS SDK - Using @q-sys/qrwc for WebSocket communication
  • Real-time Events - Component state updates and control changes
  • Professional Audio/Video Control - Full access to Q-SYS design components
  • SSL/HTTPS Support - Secure connections with self-signed certificate support

📁 Project Structure

src/
├── qrwc/                   # Q-SYS Remote WebSocket Control
│   └── officialClient.ts   # Official @q-sys/qrwc SDK wrapper (350 lines)
├── shared/                 # Shared utilities and types
│   ├── types/              # TypeScript definitions
│   └── utils/              # Logging, error handling, configuration
├── index.ts                # Main application entry point
tests/                      # Test suites
├── unit/                   # Unit tests for components
└── integration/            # Integration tests
docs/                       # Additional documentation
scripts/                    # Build and utility scripts

# Configuration & Testing
qsys-core.config.json      # Q-SYS Core connection configuration
tests/integration/qsys/test-connection.mjs        # Basic connection test script
tests/integration/qsys/test-component-control.mjs  # Component interaction test script

🧪 Testing & Verification

Connection Tests

# Test Q-SYS Core connection
npm run test:connection
# Expected: ✅ 42 components discovered

# Test component control  
node tests/integration/qsys/test-component-control.mjs
# Expected: ✅ Real-time component interaction working

Application Tests

# Run all tests
npm test

# Run with coverage
npm run test:coverage

# Type checking
npm run type-check

📖 Documentation

Setup & Configuration

Technical Documentation

Project Management

🎯 Key Discovery: WSS Protocol

Critical Technical Breakthrough: Q-SYS Cores require Secure WebSocket (WSS) connections, not standard WebSocket (WS).

// ❌ This doesn't work:
const socket = new WebSocket('ws://core-ip:443/qrc-public-api/v0');

// ✅ This works:
const socket = new WebSocket('wss://core-ip:443/qrc-public-api/v0', {
  rejectUnauthorized: false  // For self-signed certificates
});

🏆 Live System Results

Connected to professional Q-SYS installation:

📦 Components found: 42
🎛️ Total controls: 3,074+

Categories discovered:
├── Audio: 15 components (mixers, mics, gain controls)
├── Video: 8 components (displays, switchers, cameras) 
├── Conference: 5 components (Zoom Room, Teams integration)
├── Control: 9 components (touchpanels, encoders)
└── System: 9 components (HVAC, monitoring, time sync)

📄 License

MIT License - see LICENSE file for details.


🎉 Phase 1 Complete! The Q-SYS QRWC integration is fully functional and ready for MCP Server development in Phase 2.

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured