obs-mcp-server
An MCP (Model Context Protocol) server for controlling OBS Studio via the built-in obs-websocket plugin. Lets Claude control your scenes, recording, streaming, audio, and more.
Requirements
- OBS Studio 28 or later (obs-websocket is built in)
- Node.js 18 or later
OBS Setup
- Open OBS Studio
- Go to Tools → WebSocket Server Settings
- Check Enable WebSocket server
- Set a password (recommended)
- Note the port (default:
4455)
Installation
npm install
Create a .env file in the project root:
OBS_WS_URL=ws://localhost:4455
OBS_WS_PASSWORD=your_password_here
Claude Desktop Config
Add the following to your claude_desktop_config.json:
{
"mcpServers": {
"obs": {
"command": "node",
"args": ["C:\\path\\to\\obs-mcp-server\\obs-mcp-server.js"]
}
}
}
Or use npx (no cloning required):
{
"mcpServers": {
"obs": {
"command": "npx",
"args": ["-y", "obs-mcp-server"],
"env": {
"OBS_WS_PASSWORD": "your_password_here"
}
}
}
}
Available Tools
Status & Scenes
| Tool | Description |
|---|---|
get_status | Current scene, streaming state, recording state + timecodes |
list_scenes | List all scenes in the active collection |
set_scene | Switch to a named scene |
Recording & Streaming
| Tool | Description |
|---|---|
start_recording | Start recording |
stop_recording | Stop recording (returns output file path) |
toggle_recording | Toggle recording on/off |
start_streaming | Start streaming |
stop_streaming | Stop streaming |
Sources
| Tool | Description |
|---|---|
list_sources | List all sources in a scene |
set_source_visibility | Show or hide a source |
Audio
| Tool | Description |
|---|---|
list_audio_inputs | List all audio inputs with mute/volume state |
set_mute | Mute or unmute an audio input |
toggle_mute | Toggle mute on an audio input |
set_volume | Set volume (0.0–1.0) on an audio input |
Canvas
| Tool | Description |
|---|---|
set_canvas_resolution | Set base/output resolution and FPS (global per collection) |
Scene Management
| Tool | Description |
|---|---|
create_scene | Create a new empty scene |
remove_scene | Delete a scene |
rename_scene | Rename a scene |
Scene Collections
| Tool | Description |
|---|---|
list_scene_collections | List all collections, show active |
set_scene_collection | Switch to a different collection |
create_scene_collection | Create a new scene collection |
Profiles
| Tool | Description |
|---|---|
list_profiles | List all profiles, show active |
set_profile | Switch to a different profile |
create_profile | Create a new profile |
remove_profile | Delete a profile |
Misc
| Tool | Description |
|---|---|
save_screenshot | Save a screenshot of the current output to disk |
Notes
- Canvas resolution is a global OBS setting — it applies to all scenes in the current collection. Use separate scene collections for different aspect ratios (e.g. 16:9 vs 9:16 for YouTube Shorts).
- Audio input kinds default to Windows (
wasapi_*). On macOS, update thelist_audio_inputshandler to usecoreaudio_input_capture/coreaudio_output_capture.
License
MIT