obs-studio-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| OBS_MCP_HOST | No | Host for the OBS WebSocket server | 127.0.0.1 |
| OBS_MCP_PORT | No | Port for the OBS WebSocket server | 4455 |
| VAULTPROXY_URL | No | URL of the vaultproxy service (required if OBS_MCP_SECRETS=vaultproxy) | |
| OBS_MCP_SECRETS | No | Backend for secret storage: 'env', 'file', or 'vaultproxy' (default: 'env') | |
| OBS_MCP_PASSWORD | No | Password for the OBS WebSocket server (required if using env backend) |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_scenesA | List scenes and the current program/preview scene. |
| switch_sceneC | Switch the program output to a scene (immediate cut on program). |
| set_preview_sceneC | Set the preview scene (studio mode). |
| trigger_transitionC | Trigger the studio-mode transition (preview → program). |
| set_studio_modeC | Enable or disable studio mode. |
| list_scene_itemsB | List the items (sources) inside a scene with visibility state. |
| set_scene_item_visibilityC | Show or hide a scene item (item_id from list_scene_items). |
| list_inputsA | List all inputs (sources) with their kinds. |
| get_audio_levelsA | List audio inputs with mute state and volume (dB). |
| set_muteC | Mute or unmute an audio input. |
| set_volumeC | Set an audio input's volume in dB (0 = unity, negative = quieter). |
| update_text_sourceB | Set the text of a Text (GDI+/FreeType) source — e.g. an on-stream overlay line like a giveaway question or now-playing label. |
| screenshot_sourceC | Save a PNG screenshot of a source (or scene) to a local file. |
| media_controlC | Control a media source. action: play|pause|restart|stop|next|previous. |
| list_source_filtersC | List filters on a source with enabled state. |
| set_filter_enabledC | Enable or disable a named filter on a source. |
| get_scene_item_transformB | Get a scene item's position, scale, and crop. |
| set_scene_item_transformA | Move/scale a scene item (item_id from list_scene_items). Only supplied fields change — e.g. scale_x/scale_y 0.5 halves a facecam. |
| watch_healthA | Sample OBS stats for up to 60 seconds and report a stream-health verdict: dropped-frame %, GPU misses, CPU pressure. |
| stream_statusA | Streaming state: live, duration, bytes, dropped frames. |
| start_streamC | Go live: start streaming to the configured service. |
| stop_streamC | End the live stream. |
| record_statusB | Recording state: active, paused, duration, output path. |
| start_recordC | Start recording. |
| stop_recordC | Stop recording; returns the saved file path. |
| pause_recordC | Pause (true) or resume (false) the recording. |
| save_replayB | Save the replay buffer (must be running). Returns the clip path. |
| set_replay_bufferC | Start (true) or stop (false) the replay buffer. |
| set_virtual_camC | Start (true) or stop (false) the virtual camera. |
| get_statsA | OBS performance stats: CPU, memory, FPS, frame drops, disk space. |
| list_profilesA | List OBS profiles and the current one. |
| switch_profileC | Switch OBS profile (stream settings bundle). |
| list_scene_collectionsB | List scene collections and the current one. |
| switch_scene_collectionC | Switch scene collection (full scene layout bundle). |
| trigger_hotkeyB | Trigger an OBS hotkey by name (see get_hotkey_list in OBS docs). |
| health_checkA | Verify the OBS websocket connection and report versions. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 36 tools
Every tool has a clearly distinct purpose, targeting specific OBS functions such as scenes, sources, audio, streaming, recording, etc. There is no meaningful overlap that would cause an agent to misselect.
All tool names follow a consistent verb_noun pattern using snake_case, e.g., list_scenes, set_mute, start_stream. No mixing of conventions or irregular naming.
With 36 tools, the count is slightly higher than the typical well-scoped range, but each tool covers a distinct and essential aspect of OBS control, making the set feel comprehensive rather than bloated.
While the tool set covers many common workflows, it lacks creation and deletion actions for scenes and sources (e.g., create_scene, remove_input), leaving notable gaps in full lifecycle management.