OBS MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| OBS_HOST | No | OBS WebSocket host. | localhost |
| OBS_PORT | No | OBS WebSocket port (must match Tools -> WebSocket Server Settings). | 4455 |
| OBS_PASSWORD | No | WebSocket auth password — required when OBS requires authentication. | |
| OBS_LOG_LEVEL | No | Logging verbosity: DEBUG, INFO, WARNING, ERROR. | INFO |
| OBS_STREAM_SCENE | No | Scene used by prepare_stream (empty = current scene). | |
| OBS_CONNECT_TIMEOUT | No | Seconds to wait for a connection attempt. | 5 |
| OBS_RECORDING_SCENE | No | Scene used by prepare_recording / start_recording_session (empty = current scene). | |
| OBS_REQUIRE_CONFIRMATION_HIGH | No | Gate high-risk ops (stream start/stop, deletes) behind confirm=True. | true |
| OBS_REQUIRE_CONFIRMATION_MEDIUM | No | Gate medium-risk ops (audio, recording) behind confirm=True. | false |
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 |
|---|---|
| get_obs_statusA | Overall OBS status: connection, OBS version, current scene, recording/streaming state and key stats. Example: 'Is OBS connected?' |
| get_obs_statsA | Raw OBS statistics: CPU, memory, FPS, render/output drops. |
| obs_helpA | List every available OBS MCP tool with a short description. |
| list_scenesA | List every scene in OBS with its index. |
| get_current_sceneA | Return the currently active program scene. |
| switch_sceneA | Switch to another scene. Example: 'Switch to my Gaming scene.' |
| create_sceneB | Create a new empty scene. |
| delete_sceneA | Permanently remove a scene. High-impact: requires confirmation. |
| rename_sceneC | Rename an existing scene. |
| get_scene_sourcesA | List sources (scene items) inside a scene, with visibility. |
| set_scene_transitionB | Set the transition used when switching scenes. |
| get_transitionsA | List available scene transitions and the active one. |
| get_source_transformB | Get the position, scale, rotation and crop of a source in a scene. |
| set_source_transformA | Move, scale, rotate or crop a source in a scene. Pass any subset of position_x/position_y, scale_x/scale_y, rotation, width/height, bounds_type/bounds_width/bounds_height, crop_left/right/top/bottom, alignment. Example: 'Put my webcam in the bottom right corner, 320x180.' |
| set_source_indexA | Change the stacking order (z-order) of a source in a scene. Index 0 is at the back; higher indexes are drawn on top. Example: 'Send my webcam to the front in the Coding scene.' |
| duplicate_sceneA | Duplicate a scene and all of its sources into a new scene (optionally with a custom name). |
| get_studio_mode_statusA | Return whether studio mode is enabled, plus the current preview and program scenes. |
| set_studio_modeA | Enable or disable studio mode (preview/program layout). |
| set_preview_sceneB | Set the preview scene while studio mode is enabled. |
| trigger_transitionB | Execute a manual studio-mode transition (preview becomes program). |
| add_source_to_sceneB | Add an existing source to a scene (as a new scene item). |
| remove_source_from_sceneA | Remove a source from a scene without deleting the source itself. High-impact: requires confirmation. |
| list_sourcesA | List all sources (inputs) in OBS with their kind. |
| get_sourceC | Get the settings and visibility state of one source. |
| show_sourceA | Make a source visible in a scene. Example: 'Show my webcam in the Coding scene.' |
| hide_sourceB | Hide a source in a scene. Example: 'Turn off my webcam.' |
| update_sourceC | Modify source properties (e.g. capture settings). Medium risk. |
| create_sourceC | Create a new source (input) and add it to a scene. |
| delete_sourceA | Permanently remove a source. High-impact: requires confirmation. |
| get_source_available_kindsA | List all source types (input kinds) that OBS supports. |
| duplicate_sourceB | Duplicate a source with its settings (optionally into a scene, optionally under a new name). |
| set_source_visibility_in_all_scenesA | Make a source visible or hidden in every scene that contains it. Example: 'Turn off my webcam everywhere.' |
| list_audio_sourcesA | List all audio sources with their mute and volume state. |
| get_volumeA | Get the current volume of an audio source (multiplier and dB). |
| set_volumeA | Set the volume of an audio source. Provide volume_percent (0-100) or volume_db directly. Example: 'set my microphone to 70%'. |
| mute_sourceC | Mute an audio source. |
| unmute_sourceC | Unmute an audio source. |
| get_audio_statusA | Overall audio status: mute/volume of all audio-capable sources. |
| set_audio_monitorA | Set how a source's audio is monitored: NONE (off), MONITOR_ONLY (hear only), or MONITOR_AND_OUTPUT (hear and broadcast). |
| set_audio_sync_offsetA | Set an audio sync offset in milliseconds for a source. Positive delays audio, negative advances it. |
| set_audio_trackA | Enable or disable audio tracks 1-6 for a source. Pass a dict like {'1': True, '2': False}. |
| media_controlB | Play, pause, stop, restart, or skip a media/VLC source. Actions: PLAY, PAUSE, STOP, RESTART, NEXT, PREVIOUS. |
| get_media_timeA | Get the current playback position and duration of a media source. |
| set_media_timeC | Seek a media source to a specific time in milliseconds. |
| set_transition_durationB | Set the duration (ms) of the active scene transition. |
| list_filtersA | List all filters attached to a source with their state. |
| add_filterB | Add a filter to a source, e.g. chroma_key_v3, noise_suppress_v2, gain_filter, color_filter. Optionally pass settings. |
| remove_filterB | Remove a filter from a source. High-impact: requires confirmation. |
| get_filter_settingsA | Get the settings and state of one filter on a source. |
| set_filter_settingsB | Modify the settings of a filter on a source. |
| toggle_filterB | Enable or disable a filter on a source. |
| reorder_filtersB | Set the processing order (index) of a filter on a source. |
| get_hotkey_listA | List all hotkeys defined in OBS. |
| trigger_hotkeyB | Trigger a hotkey by its name (e.g. 'Start Recording'). |
| get_video_settingsC | Canvas resolution, output resolution and FPS. |
| set_video_settingsB | Change canvas/output resolution or FPS. Pass any subset of base_width/base_height, output_width/output_height, fps_numerator/fps_denominator. Medium risk. |
| list_profilesA | List all OBS profiles and the active one. |
| set_current_profileB | Switch to another OBS profile. Medium risk. |
| create_profileB | Create a new OBS profile. Medium risk. |
| list_scene_collectionsA | List all OBS scene collections and the active one. |
| set_current_scene_collectionB | Switch to another OBS scene collection. High impact. |
| create_scene_collectionB | Create a new OBS scene collection. Medium risk. |
| get_recording_statusA | Get whether OBS is recording, paused, and for how long. |
| start_recordingA | Start recording. Medium impact: may require confirmation. |
| stop_recordingC | Stop the current recording and return the saved file path. |
| pause_recordingA | Pause the active recording. |
| resume_recordingA | Resume the paused recording. |
| get_record_directoryA | Get the folder where recordings are saved. |
| set_record_directoryB | Change the folder where recordings are saved. |
| get_replay_buffer_statusA | Get whether the replay buffer is active or saving. |
| start_replay_bufferA | Start the replay buffer (requires it to be enabled in OBS). |
| stop_replay_bufferB | Stop the replay buffer. |
| save_replay_bufferA | Save the current replay buffer to disk (the buffer keeps recording afterwards). |
| get_stream_statusA | Get whether OBS is live, reconnecting, and stream duration. |
| start_streamA | Start the live stream. HIGH IMPACT: going live is visible to viewers, so explicit user confirmation is required. |
| stop_streamA | Stop the live stream. HIGH IMPACT: ends the broadcast for all viewers, so explicit user confirmation is required. |
| get_stream_healthA | Check stream health: dropped frames, congestion, reconnects. |
| get_stream_service_settingsA | Inspect the stream service type and configured settings. |
| set_stream_settingsA | Set the stream service and its settings (server URL, stream key, service name, etc.). Example: 'Set my stream key to X on rtmp://ingest.example.com/live'. |
| get_output_settingsA | Get the settings of an OBS output (e.g. adv_stream, adv_file_output). |
| set_output_settingsC | Modify settings of an OBS output (bitrate, encoder, etc.). Medium risk. |
| diagnose_obsA | Full OBS health check: connection, scene, recording, streaming, FPS, CPU, memory, dropped frames, audio. Returns a structured report. |
| diagnose_streamA | Diagnose streaming problems: drops, congestion, encoder. |
| diagnose_recordingA | Diagnose recording problems: output state, disk, FPS. |
| diagnose_audioA | Diagnose audio problems: muted sources, missing devices. |
| prepare_recordingA | Prepare OBS for recording: switch to the recording scene, verify sources, check audio and readiness, then report a setup summary. Does NOT start recording. |
| prepare_streamA | Prepare OBS for streaming: switch to the stream scene, verify sources and audio, check output configuration, then report readiness. Does NOT go live. |
| start_recording_sessionA | Full recording workflow: prepare the scene, verify sources and audio, check health, then start recording. High impact: requires explicit confirmation. |
| end_sessionA | Stop recording and/or streaming after confirmation and return a final session summary with duration and statistics. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/KshamayBharadwaj/obs-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server