MCP server for controlling OBS Studio over obs-websocket v5: scenes, sources, audio, streaming, recording, replay buffer, stats, and text overlays.
Project description
obs-studio-mcp
An MCP (Model Context Protocol) server for controlling OBS Studio over obs-websocket v5: scenes, sources, audio, text overlays, streaming, recording, replay buffer, virtual camera, and performance stats.
- Talks to the obs-websocket server built into OBS 28+ (Tools → WebSocket Server Settings).
- Every mutating tool accepts
dry_run=trueand returns a preview instead of acting — useful guard rails when an agent drives your live stream. - No secrets in this repo or in your MCP client config.
Quick start
- In OBS: Tools → WebSocket Server Settings → enable, note the port (default 4455) and password.
- Provide connection settings via environment:
export OBS_MCP_HOST=127.0.0.1 # default
export OBS_MCP_PORT=4455 # default
export OBS_MCP_PASSWORD=yourpass # via the default env backend
- Add to your MCP client:
# Claude Code
claude mcp add obs -s user -- uvx obs-studio-mcp
Tools
| Area | Tools |
|---|---|
| Scenes | list_scenes, switch_scene, set_preview_scene, trigger_transition, set_studio_mode, list_scene_items, set_scene_item_visibility |
| Sources | list_inputs, get_audio_levels, set_mute, set_volume, update_text_source, screenshot_source, media_control |
| Output | stream_status, start_stream, stop_stream, record_status, start_record, stop_record, pause_record, save_replay, set_replay_buffer, set_virtual_cam |
| System | get_stats, list_profiles, switch_profile, list_scene_collections, switch_scene_collection, trigger_hotkey, health_check |
update_text_source is handy for driving on-stream overlays from an agent —
question-of-the-day, now-playing, countdowns — anything rendered by a Text
source.
Secret storage
The only secret is the websocket password.
| Backend | Select with | Reads |
|---|---|---|
env (default) |
— | OBS_MCP_PASSWORD |
file |
OBS_MCP_SECRETS=file |
~/.config/obs-studio-mcp/credentials.json (0600) |
vaultproxy |
OBS_MCP_SECRETS=vaultproxy (+ VAULTPROXY_URL) |
a Vaultwarden vault via a local vaultproxy HTTP API |
Development
pip install -e '.[dev]'
ruff check src tests && pytest
Tests are fully offline (fake obs-websocket client).
License
MIT
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file obs_studio_mcp-0.4.0.tar.gz.
File metadata
- Download URL: obs_studio_mcp-0.4.0.tar.gz
- Upload date:
- Size: 13.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9e6426061291853aa931f0e9db012267d8530ebbbb44c3a1ae13a6ca0a555f12
|
|
| MD5 |
d2435eb62d9394086546040def3d91cc
|
|
| BLAKE2b-256 |
53251bf0ce822ba70ee5fcfacc312df67f896a899fc28794f5b65387588d6dde
|
Provenance
The following attestation bundles were made for obs_studio_mcp-0.4.0.tar.gz:
Publisher:
publish.yml on aaronckj/obs-studio-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
obs_studio_mcp-0.4.0.tar.gz -
Subject digest:
9e6426061291853aa931f0e9db012267d8530ebbbb44c3a1ae13a6ca0a555f12 - Sigstore transparency entry: 2276225860
- Sigstore integration time:
-
Permalink:
aaronckj/obs-studio-mcp@cf0da91d56599dd728934d63ca14941ddfb7ed65 -
Branch / Tag:
refs/tags/v0.4.0 - Owner: https://github.com/aaronckj
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@cf0da91d56599dd728934d63ca14941ddfb7ed65 -
Trigger Event:
push
-
Statement type:
File details
Details for the file obs_studio_mcp-0.4.0-py3-none-any.whl.
File metadata
- Download URL: obs_studio_mcp-0.4.0-py3-none-any.whl
- Upload date:
- Size: 16.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b38ac6559d7c71f1c78ae32c78e9e57858af40be9869ca94197edd5bb9e563b4
|
|
| MD5 |
3af733830d94283aeefc4cacadbdd187
|
|
| BLAKE2b-256 |
b0777e653bec49a1010c1f72d11da7acf490b0b0c8ef4cac74d862cf3673ea8e
|
Provenance
The following attestation bundles were made for obs_studio_mcp-0.4.0-py3-none-any.whl:
Publisher:
publish.yml on aaronckj/obs-studio-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
obs_studio_mcp-0.4.0-py3-none-any.whl -
Subject digest:
b38ac6559d7c71f1c78ae32c78e9e57858af40be9869ca94197edd5bb9e563b4 - Sigstore transparency entry: 2276226037
- Sigstore integration time:
-
Permalink:
aaronckj/obs-studio-mcp@cf0da91d56599dd728934d63ca14941ddfb7ed65 -
Branch / Tag:
refs/tags/v0.4.0 - Owner: https://github.com/aaronckj
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@cf0da91d56599dd728934d63ca14941ddfb7ed65 -
Trigger Event:
push
-
Statement type: