OBS Controller MCP Server
MCP server for controlling OBS Studio via WebSocket API. Provides 100+ tools for complete OBS automation through Claude Code or any MCP-compatible client.
Features
- Full OBS Control - Manage scenes, sources, inputs, filters, and transitions
- Streaming & Recording - Start/stop streams and recordings, manage replay buffer
- Audio Management - Control volume, mute, audio tracks, and monitoring
- Media Playback - Play, pause, stop, and seek media sources
- Studio Mode - Full support for preview/program workflow
- Performance Monitoring - Access OBS stats and video settings
Tool Categories
| Category | Description | Tools |
|---|---|---|
| Scenes | Create, switch, and manage scenes | 12 |
| Inputs | Control sources, settings, and audio | 25 |
| Streaming | Stream control and service settings | 8 |
| Recording | Record, pause, chapters, and directory | 10 |
| Transitions | Manage scene transitions | 10 |
| Filters | Add/remove/configure source filters | 10 |
| Scene Items | Position, transform, visibility | 15 |
| Media | Playback control for media sources | 8 |
| Outputs | Virtual camera, replay buffer | 12 |
| General | Stats, hotkeys, profiles | 10+ |
Installation
From PyPI (Recommended)
pip install obs-controller
From Source
git clone https://github.com/ldraney/obs-controller
cd obs-controller
poetry install
Quick Start
- Enable OBS WebSocket - In OBS: Tools > WebSocket Server Settings > Enable
- Configure connection - Set environment variables (see Configuration below)
- Run the MCP server:
# If installed from PyPI obs-controller # If installed from source poetry run python -m obs_controller.server
Configuration
Set environment variables or create a .env file:
OBS_HOST=172.25.128.1 # Windows host IP from WSL
OBS_PORT=4455
OBS_PASSWORD= # If authentication enabled
OBS_TIMEOUT=10
Claude Code Integration
Using PyPI Installation
claude mcp add obs-controller -- obs-controller
Using Source Installation
claude mcp add obs-controller -- poetry --directory /path/to/obs-controller run python -m obs_controller.server
Example Usage
Once integrated with Claude Code, you can control OBS with natural language:
> Switch to the "Gaming" scene
> Start recording
> Mute the microphone
> Take a screenshot of the current scene
> What's the current stream status?
Troubleshooting (WSL Users)
Finding Windows Host IP
From WSL, get your Windows host IP:
cat /etc/resolv.conf | grep nameserver | awk '{print $2}'
OBS WebSocket Connection Refused
- Ensure OBS WebSocket Server is enabled (Tools > WebSocket Server Settings)
- Check Windows Firewall allows connections on port 4455
- Verify the host IP is correct in your
.envfile
Authentication Errors
If you've set a password in OBS WebSocket settings, add it to your .env:
OBS_PASSWORD=your_password_here
License
MIT License - see LICENSE for details.
Metadata
Release files for obs-controller 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| obs_controller-0.1.1.tar.gz | 16.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| obs_controller-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 39.7 kB
Release files / obs_controller-0.1.1.tar.gz
| Download URL | obs_controller-0.1.1.tar.gz |
|---|---|
| Size | 16.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
048d902cbf7bb2e4c470140e542474ceb71c79188e837826cffcca36239b3e4d
|
|
BLAKE2b-256 checksum How to use checksums |
52fffd83724becf5b441f2a81a1da00e2ad9623090070eaa02dee0f726f80188
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.3.1 CPython/3.12.3 Linux/5.15.167.4-microsoft-standard-WSL2
|
Release files / obs_controller-0.1.1-py3-none-any.whl
| Download URL | obs_controller-0.1.1-py3-none-any.whl |
|---|---|
| Size | 22.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f7ee8914e12d417f6efad7f1e07f6c450997f7d4584054e4f7ff44eb55707db3
|
|
BLAKE2b-256 checksum How to use checksums |
c3a64182a743d3e4dd102992dcf93e5f1a39a62619cea30ee9f9dc88a9fd9376
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.3.1 CPython/3.12.3 Linux/5.15.167.4-microsoft-standard-WSL2
|