Skip to main content

MCP server for controlling OBS Studio via WebSocket API

Project description

OBS Controller MCP Server

License: MIT Python 3.10+

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

poetry install

Quick Start

  1. Enable OBS WebSocket - In OBS: Tools > WebSocket Server Settings > Enable
  2. Configure connection - Create .env file (see Configuration below)
  3. Test connectivity:
    poetry run python scripts/hello_obs.py
    
  4. Run the MCP server:
    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

Add to ~/.claude.json via:

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

  1. Ensure OBS WebSocket Server is enabled (Tools > WebSocket Server Settings)
  2. Check Windows Firewall allows connections on port 4455
  3. Verify the host IP is correct in your .env file

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

obs_controller-0.1.0.tar.gz (16.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

obs_controller-0.1.0-py3-none-any.whl (22.7 kB view details)

Uploaded Python 3

File details

Details for the file obs_controller-0.1.0.tar.gz.

File metadata

  • Download URL: obs_controller-0.1.0.tar.gz
  • Upload date:
  • Size: 16.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.3.1 CPython/3.12.3 Linux/5.15.167.4-microsoft-standard-WSL2

File hashes

Hashes for obs_controller-0.1.0.tar.gz
Algorithm Hash digest
SHA256 cc86db26056f43a5e57597e9146854b5391a5e7a85ca81c1ef8ab417cf6a0f84
MD5 115770d387fb9afd2cbd5c1628f1929b
BLAKE2b-256 1fec809e804f79a1e30b88a71d515e93b50339ded48709b69df7fcdf41c0fc56

See more details on using hashes here.

File details

Details for the file obs_controller-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: obs_controller-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 22.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.3.1 CPython/3.12.3 Linux/5.15.167.4-microsoft-standard-WSL2

File hashes

Hashes for obs_controller-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c7b70a2ee2d9862153ca081ce3f65a44e697e8906487ca9667f7c5c533498f09
MD5 7c13c54f4db1b150dd313022ee13032c
BLAKE2b-256 44f0ed429b8af8e185ded893e3d7e99ebc1ef664358337fc38dbdcc1a884b1b0

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page