obs-mcp-server
Allows for the remote control of OBS Studio via the obs-websocket plugin, providing capabilities to manage scenes, recording and streaming status, audio inputs, and source visibility.
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
Related MCP server: LMStudio-MCP
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 installCreate a .env file in the project root:
OBS_WS_URL=ws://localhost:4455
OBS_WS_PASSWORD=your_password_hereClaude 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 |
| Current scene, streaming state, recording state + timecodes |
| List all scenes in the active collection |
| Switch to a named scene |
Recording & Streaming
Tool | Description |
| Start recording |
| Stop recording (returns output file path) |
| Toggle recording on/off |
| Start streaming |
| Stop streaming |
Sources
Tool | Description |
| List all sources in a scene |
| Show or hide a source |
Audio
Tool | Description |
| List all audio inputs with mute/volume state |
| Mute or unmute an audio input |
| Toggle mute on an audio input |
| Set volume (0.0–1.0) on an audio input |
Canvas
Tool | Description |
| Set base/output resolution and FPS (global per collection) |
Scene Management
Tool | Description |
| Create a new empty scene |
| Delete a scene |
| Rename a scene |
Scene Collections
Tool | Description |
| List all collections, show active |
| Switch to a different collection |
| Create a new scene collection |
Profiles
Tool | Description |
| List all profiles, show active |
| Switch to a different profile |
| Create a new profile |
| Delete a profile |
Misc
Tool | Description |
| 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
Available Tools
26 toolscreate_profileB
Create a new OBS profile.
Inputs: profile_name (required).
create_sceneB
Create a new empty scene in OBS.
Inputs: scene_name (required).
create_scene_collectionB
Create a new scene collection (starts empty).
Inputs: collection_name (required).
get_statusA
Get current OBS status: active scene, streaming state, recording state.
Inputs: no named parameters.
list_audio_inputsA
List all audio input sources (mics, desktop audio, etc.).
Inputs: no named parameters.
list_profilesA
List all OBS profiles and show which one is active.
Inputs: no named parameters.
list_scene_collectionsA
List all scene collections and show which one is active.
Inputs: no named parameters.
list_scenesA
List all scenes in OBS.
Inputs: no named parameters.
list_sourcesA
List all sources (scene items) in a scene. Defaults to the current scene.
Inputs: scene_name.
remove_profileA
Delete an OBS profile. Cannot remove the currently active profile.
Inputs: profile_name (required).
remove_sceneA
Delete a scene from OBS. Cannot remove the currently active scene.
Inputs: scene_name (required).
rename_sceneC
Rename an existing scene.
Inputs: scene_name (required), new_name (required).
save_screenshotB
Save a screenshot of the current OBS output to a file.
Inputs: file_path (required), image_format.
set_canvas_resolutionA
Set the OBS canvas (base) and output resolution. Applies globally — affects all scenes in the current collection.
Inputs: width (required), height (required), fps.
set_muteC
Mute or unmute an audio input.
Inputs: input_name (required), muted (required).
set_profileA
Switch to a different OBS profile (stream settings, encoder config, etc.).
Inputs: profile_name (required).
set_sceneB
Switch OBS to a different scene.
Inputs: scene_name (required).
set_scene_collectionB
Switch to a different scene collection. OBS will reload its scenes.
Inputs: collection_name (required).
set_source_visibilityB
Show or hide a source in a scene.
Inputs: scene_item_id (required), visible (required), scene_name.
set_volumeA
Set the volume of an audio input (0.0 – 1.0, linear mul).
Inputs: input_name (required), volume (required).
start_recordingB
Start OBS recording.
Inputs: no named parameters.
start_streamingC
Start OBS streaming.
Inputs: no named parameters.
stop_recordingB
Stop OBS recording.
Inputs: no named parameters.
stop_streamingA
Stop OBS streaming.
Inputs: no named parameters.
toggle_muteB
Toggle mute on an audio input.
Inputs: input_name (required).
toggle_recordingB
Toggle OBS recording on/off.
Inputs: no named parameters.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 26 tools
Most tools have clear distinct purposes, but there is some overlap: 'set_mute' and 'toggle_mute' both handle audio muting, and 'start_recording'/'stop_recording' overlap with 'toggle_recording'. However, the descriptions help clarify the differences, and other tools like scene management and audio controls are well-separated.
All tool names follow a consistent verb_noun pattern using snake_case, such as 'create_profile', 'list_scenes', 'set_volume', and 'start_streaming'. This uniformity makes the tool set predictable and easy to navigate, with no deviations in naming conventions.
With 26 tools, the count is borderline high for an OBS control server, as it includes many specific operations like separate start/stop and toggle functions. While comprehensive, it might feel heavy compared to a more streamlined set, but it still covers the domain thoroughly without being extreme.
The tool set provides complete coverage for OBS management, including CRUD operations for profiles, scenes, and scene collections, audio control, streaming/recording lifecycle, and status monitoring. There are no obvious gaps, and agents can perform all core workflows without dead ends.
Maintenance
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
MCP server for Clipkit — gives AI agents a video toolbox via the Clipkit schema.
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to control Unreal E…
MCP server for OpenAI API (chat completions, image generation, embeddings) via AceDataCloud
Related MCP Servers
- AlicenseBqualityCmaintenanceA server that provides tools to control OBS Studio remotely via the OBS WebSocket protocol, enabling management of scenes, sources, streaming, and recording through an MCP client interface.100605 npm158GPL 2.0
- AlicenseNot gradedqualityDmaintenanceA Model Control Protocol (MCP) server that allows Claude to communicate with locally running LLM models via LM Studio.MIT
- AlicenseBqualityBmaintenanceAI-powered stream and recording control for OBS Studio through the Model Context Protocol10023Apache 2.0
- AlicenseBqualityDmaintenanceMCP server enabling LLMs to control OBS Studio through high-level show and effect APIs.187 npmMIT