thomasbunch/vst-mcp-server
If you are the rightful owner of vst-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.
The VST MCP Server is an open-source Model Context Protocol server designed to facilitate AI-assisted VST plugin development, offering a comprehensive suite of tools and resources for audio processing and plugin creation.
🎛️ VST MCP Server
An open-source MCP (Model Context Protocol) server for AI-assisted VST plugin development. Provides DSP algorithms, audio formulas, JUCE templates, and code validation tools.
✨ Features
🎵 Core DSP & Audio
- 50+ DSP Algorithms: Filters, delays, reverbs, compressors, oscillators, vintage algorithms, and advanced processing
- Audio Math Formulas: dB conversions, MIDI/frequency, timing calculations
- JUCE Templates: Ready-to-use effect and synth plugin templates
- UI Components: Professional knobs, meters, waveform displays, spectrum analyzers
- Code Validation: Check for denormals, thread safety, memory issues
🧪 Testing & Development
- Unit Testing: Complete Catch2 test suite templates for audio processors
- Plugin Validation: pluginval integration and CI/CD workflows
- Performance Profiling: Real-time CPU monitoring and bottleneck detection
- Buffer Analysis: Detect clipping, DC offset, denormals, phase issues
🎹 MIDI Processing
- MIDI Note Handling: Polyphonic voice management with proper note on/off
- MPE Support: Full MPE implementation for expressive controllers
- Arpeggiator: Multi-mode arpeggiator with tempo sync and swing
- CC Mapping: Complete MIDI CC handling and automation
🏗️ Build & Deployment
- Modern CMake: Cross-platform build system with VST3/AU/AAX support
- CI/CD Templates: GitHub Actions workflows for automated building and testing
- Code Signing: macOS and Windows code signing configurations
🎨 Advanced Resources
- Sample Library Management: Multi-format sample loading with velocity layers
- Impulse Response: Convolution reverb with IR loading and management
- Wavetable Synthesis: Comprehensive wavetable collection and morphing
🔐 Security & Licensing
- License Validation: Hardware fingerprinting and online/offline activation
- Copy Protection: Code obfuscation and anti-debugging techniques
- Demo Modes: Trial periods, feature gating, and grace periods
- Preset Management: Complete preset save/load with A/B comparison
All C++ code is production-ready and copy-paste ready!
🚀 Quick Start
Option 1: Use Hosted Version (Easiest)
If you've deployed this to a cloud service, configure your MCP client:
{
"mcpServers": {
"vst": {
"url": "https://your-deployment-url.com/mcp"
}
}
}
Option 2: Run Locally with npx
npx vst-mcp-server
Option 3: Clone and Run
git clone https://github.com/YOUR_USERNAME/vst-mcp-server.git
cd vst-mcp-server
npm install
npm run build
npm start
🛠️ Available Tools
DSP & Audio Processing
| Tool | Description |
|---|---|
vst_get_algorithm | Get DSP algorithm implementations |
vst_calculate_coefficients | Calculate filter coefficients |
vst_get_formula | Get audio math formulas |
vst_calculate | Perform audio calculations |
vst_get_ui_component | Get UI components (knobs, meters, displays) |
Testing & Debugging
| Tool | Description |
|---|---|
vst_get_testing_tool | Get unit tests, validation, profiling tools |
vst_list_testing_tools | List all testing tools |
MIDI Processing
| Tool | Description |
|---|---|
vst_get_midi_processor | Get MIDI processing (MPE, arpeggiator, etc.) |
vst_list_midi_processors | List MIDI processors |
Build & Templates
| Tool | Description |
|---|---|
vst_get_template | Browse JUCE plugin templates |
vst_generate_template | Generate customized plugin code |
vst_get_cmake_template | Get modern CMake build system |
vst_list_build_templates | List build templates |
Advanced Resources
| Tool | Description |
|---|---|
vst_get_advanced_resource | Get sample libraries, IRs, wavetables |
vst_list_advanced_resources | List advanced resources |
vst_get_preset_manager | Get preset management system |
vst_list_preset_managers | List preset managers |
Security & Licensing
| Tool | Description |
|---|---|
vst_get_security_resource | Get licensing & copy protection |
vst_list_security_resources | List security tools |
General
| Tool | Description |
|---|---|
vst_validate_code | Check code for audio issues |
vst_list_categories | List available categories |
📚 DSP Algorithms
Filters
- Biquad: lowpass, highpass, bandpass, notch, peaking EQ, shelves
- One-pole lowpass
- State variable filter (multimode)
Dynamics
- Compressor with soft knee
- Lookahead limiter
- Noise gate with hysteresis
Effects
- Delay line with interpolation
- Allpass delay
- Schroeder reverb
- Soft clipper, tube saturation, bitcrusher
Modulation
- LFO (multiple waveforms)
- Envelope follower
- ADSR envelope
Oscillators
- PolyBLEP (alias-free)
- Wavetable with morphing
Utilities
- Parameter smoother
- DC blocker
- Peak meter
- Denormal prevention
💡 Example Usage
Get a Filter Algorithm
{
"tool": "vst_get_algorithm",
"arguments": {
"name": "biquad_lowpass"
}
}
Calculate dB to Gain
{
"tool": "vst_calculate",
"arguments": {
"name": "db_to_gain",
"parameters": { "dB": -6 }
}
}
Generate a Plugin
{
"tool": "vst_generate_template",
"arguments": {
"templateName": "basic_effect",
"parameters": {
"PLUGIN_NAME": "SuperGain",
"MANUFACTURER": "MyCompany"
}
}
}
Validate Code
{
"tool": "vst_validate_code",
"arguments": {
"code": "void process(float* buffer, int size) { ... }"
}
}
🌐 Hosting Guide
Free Hosting Options
1. Railway (Recommended - Free Tier)
Railway offers a free tier with 500 hours/month - perfect for personal use.
# Install Railway CLI
npm install -g @railway/cli
# Login
railway login
# Initialize and deploy
railway init
railway up
railway.json:
{
"build": {
"builder": "NIXPACKS"
},
"deploy": {
"startCommand": "npm start",
"healthcheckPath": "/health"
}
}
Environment Variables:
TRANSPORT=http
PORT=3000
2. Render (Free Tier)
Render offers free web services (spins down after inactivity).
- Connect your GitHub repo at render.com
- Create a new Web Service
- Configure:
- Build Command:
npm install && npm run build - Start Command:
npm start - Environment Variables:
TRANSPORT=http
- Build Command:
3. Fly.io (Free Tier)
Fly.io offers free allowance for small apps.
# Install flyctl
curl -L https://fly.io/install.sh | sh
# Login and launch
fly auth login
fly launch
fly deploy
fly.toml:
app = "vst-mcp-server"
primary_region = "iad"
[build]
builder = "heroku/buildpacks:20"
[env]
TRANSPORT = "http"
PORT = "8080"
[http_service]
internal_port = 8080
force_https = true
[[services]]
internal_port = 8080
protocol = "tcp"
[[services.ports]]
port = 80
handlers = ["http"]
[[services.ports]]
port = 443
handlers = ["tls", "http"]
4. Vercel (Serverless - Limited)
Note: Vercel's serverless functions have timeout limits. For full functionality, use Railway, Render, or Fly.io.
5. Self-Hosted (Docker)
docker build -t vst-mcp-server .
docker run -p 3000:3000 -e TRANSPORT=http vst-mcp-server
🔧 Client Configuration
Claude Desktop / Claude Code
Add to your MCP settings (~/.config/claude/settings.json or similar):
{
"mcpServers": {
"vst": {
"url": "https://your-deployment-url.com/mcp"
}
}
}
Cursor
In Cursor settings, add MCP server:
{
"mcp.servers": {
"vst": {
"url": "https://your-deployment-url.com/mcp"
}
}
}
Local Development (stdio)
For local use with stdio transport:
{
"mcpServers": {
"vst": {
"command": "node",
"args": ["/path/to/vst-mcp-server/dist/index.js"]
}
}
}
🤝 Contributing
Contributions are welcome! Here's how to add new content:
Adding DSP Algorithms
Edit src/resources/dsp-algorithms/algorithms.ts:
{
name: 'my_algorithm',
category: 'filter',
description: 'Description of the algorithm',
parameters: [
{ name: 'param1', type: 'float', description: '...', defaultValue: 0 }
],
code: `class MyAlgorithm { ... }`,
usage: `MyAlgorithm alg; alg.process(sample);`,
references: ['Source 1', 'Source 2']
}
Adding Formulas
Edit src/resources/formulas/formulas.ts:
{
name: 'my_formula',
category: 'conversion',
description: 'What it does',
formula: 'output = input * 2',
code: `inline float myFormula(float x) { return x * 2; }`,
parameters: [{ name: 'input', description: '...' }],
examples: [{ input: { x: 1 }, output: 2, description: 'Example' }]
}
Adding Templates
Edit src/resources/templates/templates.ts:
{
name: 'my_template',
category: 'effect',
description: 'Template description',
parameters: [
{ name: 'PLUGIN_NAME', description: '...', placeholder: '{{PLUGIN_NAME}}', defaultValue: 'MyPlugin' }
],
files: [
{ path: 'MyFile.h', content: '// {{PLUGIN_NAME}} header' }
]
}
📖 References
All algorithms and implementations are derived from authoritative academic and industry sources. See for complete citations.
Primary Sources
| Resource | Description | URL |
|---|---|---|
| JUCE Framework | Official C++ audio plugin framework | https://juce.com |
| Audio EQ Cookbook | Biquad filter coefficients (R. Bristow-Johnson) | https://www.w3.org/TR/audio-eq-cookbook/ |
| CCRMA Stanford | J.O. Smith DSP books & resources | https://ccrma.stanford.edu/~jos/ |
| DAFX Book | Digital Audio Effects (U. Zölzer, ed.) | https://www.dafx.de |
| Cytomic Papers | State Variable Filter (A. Simper) | https://cytomic.com/technical-papers/ |
Academic Papers
- Välimäki, V. et al. "Alias-Suppressed Oscillators Based on Differentiated Polynomial Waveforms" - IEEE Trans. Audio, Speech, Lang. Process. Vol. 18, No. 4, 2010
- Schroeder, M.R. "Natural Sounding Artificial Reverberation" - AES Convention Paper 203, 1961
- Giannoulis, D. et al. "Digital Dynamic Range Compressor Design" - J. Audio Eng. Soc., 2012
Books
- Pirkle, W.C. Designing Audio Effect Plugins in C++ (2nd ed.) - Routledge, 2019
- Zölzer, U. (ed.) DAFX: Digital Audio Effects (2nd ed.) - Wiley, 2011
- Smith, J.O. Physical Audio Signal Processing - Online: ccrma.stanford.edu/~jos/pasp/
Tools
- MCP Protocol - Model Context Protocol | https://modelcontextprotocol.io
📄 License
MIT License - See for details.
Made with ❤️ for the audio development community