The LacyLights MCP Server provides AI-powered theatrical lighting design and control through natural language interactions.
Project Management: Create, list, retrieve details, and delete lighting projects, including QLC+ file imports.
Fixture Management: Add, update, and remove fixtures; analyze capabilities; manage DMX channel assignments and universes with optimal configuration suggestions.
Scene Creation & Optimization: Generate scenes from natural language descriptions or script analysis; optimize for energy efficiency, color accuracy, dramatic impact, or technical simplicity; update existing scenes with new fixture settings.
Cue Sequence Management: Build cue sequences from scenes; generate cue suggestions from script analysis; optimize timing with smooth transitions or dramatic strategies; analyze cue structure; add, remove, update, and reorder cues.
Live Performance Control: Start, stop, navigate, and jump to cues during performances; make real-time adjustments and updates.
Advanced Features: Script analysis for lighting extraction, collaborative workflows, partial scene updates, fixture merging, and comprehensive project analytics.
Supports running ChromaDB via Docker for persistent vector storage and advanced RAG capabilities when analyzing theatrical scripts
Connects to a GraphQL endpoint to access the LacyLights backend for fixture and scene management
Uses OpenAI's API for AI-powered lighting generation, script analysis, and intelligent scene creation based on artistic intent and lighting design principles
LacyLights MCP Server
An MCP (Model Context Protocol) server that provides AI-powered theatrical lighting design capabilities for the LacyLights system. This server enables AI assistants to create, manage, and control professional theatrical lighting designs through natural language interactions.
What is LacyLights MCP?
LacyLights MCP is an intelligent lighting control interface that bridges the gap between creative vision and technical execution. It allows lighting designers, directors, and technicians to:
Design lighting scenes using natural language descriptions
Analyze theatrical scripts to automatically generate lighting cues
Manage DMX fixtures from various manufacturers
Create and run cue sequences for theatrical performances
Optimize lighting designs for dramatic impact or energy efficiency
The system uses AI to understand artistic intent and translate it into precise DMX values for real-world lighting fixtures.
Related MCP server: Lightning Tools MCP Server
Complete Function Reference
Project Management
list_projects- List all available lighting projects with optional fixture/scene countscreate_project- Create a new lighting project for a productionget_project_details- Get comprehensive details about a specific projectdelete_project- Delete a project and all associated data (requires confirmation)qlc_import_guidance- Get information about importing QLC+ (.qxw) files
Fixture Management
get_fixture_inventory- Query available fixtures and their capabilitiesanalyze_fixture_capabilities- Deep analysis of fixture capabilities (color mixing, positioning, effects)create_fixture_instance- Add a new fixture to a project with manufacturer/model detailsget_channel_map- View DMX channel usage map for a projectsuggest_channel_assignment- Get optimal channel assignments for multiple fixturesupdate_fixture_instance- Modify existing fixture propertiesdelete_fixture_instance- Remove a fixture from a project (requires confirmation)
Scene Creation & Management
generate_scene- AI-powered scene generation based on descriptions and contextanalyze_script- Extract lighting cues and suggestions from theatrical scriptsoptimize_scene- Optimize scenes for various goals (energy, impact, simplicity)update_scene- Update scene properties and fixture valuesactivate_scene- Activate a scene by name or IDfade_to_black- Fade all lights to black with customizable timingget_current_active_scene- Get information about the currently active scene
Advanced Scene Operations
add_fixtures_to_scene- Add fixtures to existing scenesremove_fixtures_from_scene- Remove specific fixtures from scenesget_scene_fixture_values- Read current fixture values in a sceneensure_fixtures_in_scene- Ensure fixtures exist with specific valuesupdate_scene_partial- Partial scene updates with fixture merging
Cue Sequence Management
create_cue_sequence- Build cue sequences from existing scenesgenerate_act_cues- Generate complete cue lists for theatrical actsoptimize_cue_timing- Optimize cue timing for various strategiesanalyze_cue_structure- Analyze cue lists with recommendations
Cue List Operations
update_cue_list- Update cue list metadataadd_cue_to_list- Add new cues to existing listsremove_cue_from_list- Remove cues from listsupdate_cue- Modify individual cue propertiesbulk_update_cues- Update multiple cues simultaneouslyreorder_cues- Reorder cues with new numberingget_cue_list_details- Query cues with filtering and sortingdelete_cue_list- Delete entire cue lists (requires confirmation)
Cue Playback Control
start_cue_list- Begin playing a cue list from any pointnext_cue- Advance to the next cueprevious_cue- Go back to the previous cuego_to_cue- Jump to a specific cue by number or namestop_cue_list- Stop the currently playing cue listget_cue_list_status- Get playback status and navigation options
Scene Board Management
Scene Boards provide a visual layout system for organizing and triggering scenes with customizable button positions on a 2D canvas (default 2000x2000 pixels).
Scene Board CRUD
list_scene_boards- List all scene boards in a project with button countsget_scene_board- Get a specific scene board with all buttons and layoutcreate_scene_board- Create a new scene board with custom canvas and grid settingsupdate_scene_board- Update scene board metadata and settingsdelete_scene_board- Delete a scene board and all its buttons (requires confirmation)bulk_create_scene_boards- Create multiple scene boards in a single operationbulk_update_scene_boards- Update multiple scene boards in a single operationbulk_delete_scene_boards- Delete multiple scene boards in a single operation
Scene Board Button Management
add_scene_to_board- Add a scene as a button at a specific canvas positionupdate_scene_board_button- Update button properties (position, size, color, label)remove_scene_from_board- Remove a button from a scene boardupdate_scene_board_button_positions- Batch update button positions (drag-and-drop)bulk_create_scene_board_buttons- Create multiple buttons in a single operationbulk_update_scene_board_buttons- Update multiple buttons in a single operationbulk_delete_scene_board_buttons- Delete multiple buttons in a single operation
Scene Board Playback
activate_scene_from_board- Activate a scene from a board (uses board's default fade time)create_scene_board_with_buttons- Create a complete scene board with buttons in one command
Installation
Install dependencies:
Set up environment variables:
Build the project:
Configuration
Required Environment Variables
OPENAI_API_KEY- OpenAI API key for AI-powered lighting generationLACYLIGHTS_GRAPHQL_ENDPOINT- GraphQL endpoint for your lacylights-go backend (default: http://localhost:4000/graphql)
Optional Environment Variables
CHROMA_HOST- ChromaDB host for enhanced RAG functionality (default: localhost)CHROMA_PORT- ChromaDB port (default: 8000)
Running the Server
Make sure your lacylights-go backend is running first, then:
You should see:
Integration with Claude
Add this server to your Claude configuration:
Important:
Use the absolute path to
run-mcp.jsin your configurationIf the above doesn't work, find your Node.js path with:
which nodeThe wrapper script ensures proper CommonJS module loading
Releases & Versioning
Release Channels
LacyLights MCP supports two release channels:
Stable Releases (e.g.,
1.4.0,1.5.0)Production-ready versions
Fully tested and validated
Listed as "Latest" on GitHub
Updates
latest.jsonfor automatic discovery
Beta Releases (e.g.,
1.4.1b1,1.5.0b2)Pre-release versions for testing
New features and experimental changes
Marked as "Pre-release" on GitHub
Does not affect stable
latest.json
Version Format
Stable:
X.Y.Z(semantic versioning)X= Major version (breaking changes)Y= Minor version (new features)Z= Patch version (bug fixes)
Beta:
X.Y.Zb[N](beta with iteration)b= Beta identifier[N]= Beta iteration number (1, 2, 3, ...)
Installing Specific Versions
Install Latest Stable (Recommended)
Install Specific Version
Install Beta for Testing
Release Distribution
All releases are distributed through multiple channels:
GitHub Releases: https://github.com/bbernstein/lacylights-mcp/releases
Source code
Pre-built archives
Release notes
S3 Distribution: https://dist.lacylights.com/releases/mcp/
Direct archive downloads
SHA256 checksums
latest.jsonmetadata
DynamoDB Registry:
Version tracking
Release metadata
Prerelease flags
Beta Testing Program
Want to help test new features? Install beta releases:
Check for betas: Visit GitHub Releases
Look for releases marked "Pre-release"
Version format:
X.Y.Zb[N]
Install beta:
# See "Install Beta for Testing" aboveReport issues:
Open issues on GitHub
Include version number
Provide reproduction steps
Release Process
For maintainers: See RELEASE_PROCESS.md for complete release documentation including:
Beta release workflows
Stable release procedures
Version management
Distribution verification
Troubleshooting and rollback
Complete Example: Lighting Design for Macbeth
Here's a comprehensive example showing how a lighting designer would use LacyLights MCP to create a complete lighting design for Shakespeare's Macbeth:
Step 1: Create the Project
Step 2: Set Up Fixtures
Step 3: Analyze the Script
Step 4: Generate Key Scenes
Step 5: Create Cue Sequences
Step 6: Generate Act Cues with Script Analysis
Step 7: Optimize for Performance
Step 8: Create Special Effect Sequences
Step 9: Run the Show
During performance, the stage manager can use:
Step 10: Make Live Adjustments
Advanced Usage Examples
Script-Driven Design Workflow
Multi-Universe Setup
Collaborative Design Process
AI-Powered Features
Intelligent Script Analysis
Extracts explicit lighting cues from stage directions
Identifies implicit lighting needs from dialogue and action
Suggests atmospheric lighting based on dramatic context
Recognizes standard theatrical conventions (sunrise, sunset, storms)
Context-Aware Scene Generation
Understands theatrical lighting principles
Applies color theory for emotional impact
Considers fixture capabilities and positions
Generates DMX values that respect real-world constraints
Adaptive Optimization
Energy Efficiency: Reduces power consumption while maintaining artistic intent
Dramatic Impact: Enhances contrast and focus for maximum effect
Technical Simplicity: Simplifies programming for easier operation
Color Accuracy: Optimizes for true color rendering
Troubleshooting
Common Issues
Module import errors
Ensure Node.js version is 18+ as specified in package.json
Use the
run-mcp.jswrapper script, notdist/index.jsdirectly
GraphQL connection errors
Verify your
lacylights-gobackend is running on port 4000Check the
LACYLIGHTS_GRAPHQL_ENDPOINTenvironment variable
OpenAI API errors
Ensure your
OPENAI_API_KEYis set in the.envfileVerify the API key has access to GPT-4
MCP connection errors in Claude
Use the full absolute path in your Claude configuration
Restart Claude after updating the MCP configuration
Check Claude's logs for detailed error messages
"Unexpected token ?" error
Update your config to use the full path to Node.js 14+
On macOS with Homebrew:
"command": "/opt/homebrew/bin/node"On other systems, find your node path with:
which node
ChromaDB Setup (Optional - For Enhanced RAG)
The MCP server works out of the box with in-memory pattern storage. For persistent vector storage and more sophisticated pattern matching:
Option 1: Docker (Recommended)
Option 2: Local Installation
Then update your .env file:
Integration with LacyLights Ecosystem
This MCP server is part of the complete LacyLights system:
lacylights-go - Backend GraphQL API for fixture and scene management
lacylights-fe - Web frontend for manual control and visualization
lacylights-mcp - AI interface for intelligent automation
The MCP server enhances the existing system with:
Natural language control
Intelligent scene generation
Script analysis capabilities
Automated cue creation
Performance optimization
Development
Project Structure
Adding New Tools
Create tool implementation in appropriate file under
src/tools/Add tool definition to
src/index.tsin theListToolsRequestSchemahandlerAdd tool handler in the
CallToolRequestSchemahandlerUpdate this README with tool documentation
Testing
MCP Directory
License
MIT