OBS MCP Server

by royshil
Verified
{ "requests": [ { "description": "Gets data about the current plugin and RPC version.", "requestType": "GetVersion", "complexity": 1, "rpcVersion": "1", "deprecated": false, "initialVersion": "5.0.0", "category": "general", "requestFields": [], "responseFields": [ { "valueName": "obsVersion", "valueType": "String", "valueDescription": "Current OBS Studio version" }, { "valueName": "obsWebSocketVersion", "valueType": "String", "valueDescription": "Current obs-websocket version" }, { "valueName": "rpcVersion", "valueType": "Number", "valueDescription": "Current latest obs-websocket RPC version" }, { "valueName": "availableRequests", "valueType": "Array<String>", "valueDescription": "Array of available RPC requests for the currently negotiated RPC version" }, { "valueName": "supportedImageFormats", "valueType": "Array<String>", "valueDescription": "Image formats available in `GetSourceScreenshot` and `SaveSourceScreenshot` requests." }, { "valueName": "platform", "valueType": "String", "valueDescription": "Name of the platform. Usually `windows`, `macos`, or `ubuntu` (linux flavor). Not guaranteed to be any of those" }, { "valueName": "platformDescription", "valueType": "String", "valueDescription": "Description of the platform, like `Windows 10 (10.0)`" } ] }, { "description": "Gets statistics about OBS, obs-websocket, and the current session.", "requestType": "GetStats", "complexity": 2, "rpcVersion": "1", "deprecated": false, "initialVersion": "5.0.0", "category": "general", "requestFields": [], "responseFields": [ { "valueName": "cpuUsage", "valueType": "Number", "valueDescription": "Current CPU usage in percent" }, { "valueName": "memoryUsage", "valueType": "Number", "valueDescription": "Amount of memory in MB currently being used by OBS" }, { "valueName": "availableDiskSpace", "valueType": "Number", "valueDescription": "Available disk space on the device being used for recording storage" }, { "valueName": "activeFps", "valueType": "Number", "valueDescription": "Current FPS being rendered" }, { "valueName": "averageFrameRenderTime", "valueType": "Number", "valueDescription": "Average time in milliseconds that OBS is taking to render a frame" }, { "valueName": "renderSkippedFrames", "valueType": "Number", "valueDescription": "Number of frames skipped by OBS in the render thread" }, { "valueName": "renderTotalFrames", "valueType": "Number", "valueDescription": "Total number of frames outputted by the render thread" }, { "valueName": "outputSkippedFrames", "valueType": "Number", "valueDescription": "Number of frames skipped by OBS in the output thread" }, { "valueName": "outputTotalFrames", "valueType": "Number", "valueDescription": "Total number of frames outputted by the output thread" }, { "valueName": "webSocketSessionIncomingMessages", "valueType": "Number", "valueDescription": "Total number of messages received by obs-websocket from the client" }, { "valueName": "webSocketSessionOutgoingMessages", "valueType": "Number", "valueDescription": "Total number of messages sent by obs-websocket to the client" } ] }, { "description": "Broadcasts a `CustomEvent` to all WebSocket clients. Receivers are clients which are identified and subscribed.", "requestType": "BroadcastCustomEvent", "complexity": 1, "rpcVersion": "1", "deprecated": false, "initialVersion": "5.0.0", "category": "general", "requestFields": [ { "valueName": "eventData", "valueType": "Object", "valueDescription": "Data payload to emit to all receivers", "valueRestrictions": null, "valueOptional": false, "valueOptionalBehavior": null } ], "responseFields": [] }, { "description": "Call a request registered to a vendor.\n\nA vendor is a unique name registered by a third-party plugin or script, which allows for custom requests and events to be added to obs-websocket.\nIf a plugin or script implements vendor requests or events, documentation is expected to be provided with them.", "requestType": "CallVendorRequest", "complexity": 3, "rpcVersion": "1", "deprecated": false, "initialVersion": "5.0.0", "category": "general", "requestFields": [ { "valueName": "vendorName", "valueType": "String", "valueDescription": "Name of the vendor to use", "valueRestrictions": null, "valueOptional": false, "valueOptionalBehavior": null }, { "valueName": "requestType", "valueType": "String", "valueDescription": "The request type to call", "valueRestrictions": null, "valueOptional": false, "valueOptionalBehavior": null }, { "valueName": "requestData", "valueType": "Object", "valueDescription": "Object containing appropriate request data", "valueRestrictions": null, "valueOptional": true, "valueOptionalBehavior": "{}" } ], "responseFields": [ { "valueName": "vendorName", "valueType": "String", "valueDescription": "Echoed of `vendorName`" }, { "valueName": "requestType", "valueType": "String", "valueDescription": "Echoed of `requestType`" }, { "valueName": "responseData", "valueType": "Object", "valueDescription": "Object containing appropriate response data. {} if request does not provide any response data" } ] }, { "description": "Gets an array of all hotkey names in OBS.\n\nNote: Hotkey functionality in obs-websocket comes as-is, and we do not guarantee support if things are broken. In 9/10 usages of hotkey requests, there exists a better, more reliable method via other requests.", "requestType": "GetHotkeyList", "complexity": 4, "rpcVersion": "1", "deprecated": false, "initialVersion": "5.0.0", "category": "general", "requestFields": [], "responseFields": [ { "valueName": "hotkeys", "valueType": "Array<String>", "valueDescription": "Array of hotkey names" } ] }, { "description": "Triggers a hotkey using its name. See `GetHotkeyList`.\n\nNote: Hotkey functionality in obs-websocket comes as-is, and we do not guarantee support if things are broken. In 9/10 usages of hotkey requests, there exists a better, more reliable method via other requests.", "requestType": "TriggerHotkeyByName", "complexity": 4, "rpcVersion": "1", "deprecated": false, "initialVersion": "5.0.0", "category": "general", "requestFields": [ { "valueName": "hotkeyName", "valueType": "String", "valueDescription": "Name of the hotkey to trigger", "valueRestrictions": null, "valueOptional": false, "valueOptionalBehavior": null }, { "valueName": "contextName", "valueType": "String", "valueDescription": "Name of context of the hotkey to trigger", "valueRestrictions": null, "valueOptional": true, "valueOptionalBehavior": "Unknown" } ], "responseFields": [] }, { "description": "Triggers a hotkey using a sequence of keys.\n\nNote: Hotkey functionality in obs-websocket comes as-is, and we do not guarantee support if things are broken. In 9/10 usages of hotkey requests, there exists a better, more reliable method via other requests.", "requestType": "TriggerHotkeyByKeySequence", "complexity": 4, "rpcVersion": "1", "deprecated": false, "initialVersion": "5.0.0", "category": "general", "requestFields": [ { "valueName": "keyId", "valueType": "String", "valueDescription": "The OBS key ID to use. See https://github.com/obsproject/obs-studio/blob/master/libobs/obs-hotkeys.h", "valueRestrictions": null, "valueOptional": true, "valueOptionalBehavior": "Not pressed" }, { "valueName": "keyModifiers", "valueType": "Object", "valueDescription": "Object containing key modifiers to apply", "valueRestrictions": null, "valueOptional": true, "valueOptionalBehavior": "Ignored" }, { "valueName": "keyModifiers.shift", "valueType": "Boolean", "valueDescription": "Press Shift", "valueRestrictions": null, "valueOptional": true, "valueOptionalBehavior": "Not pressed" }, { "valueName": "keyModifiers.control", "valueType": "Boolean", "valueDescription": "Press CTRL", "valueRestrictions": null, "valueOptional": true, "valueOptionalBehavior": "Not pressed" }, { "valueName": "keyModifiers.alt", "valueType": "Boolean", "valueDescription": "Press ALT", "valueRestrictions": null, "valueOptional": true, "valueOptionalBehavior": "Not pressed" }, { "valueName": "keyModifiers.command", "valueType": "Boolean", "valueDescription": "Press CMD (Mac)", "valueRestrictions": null, "valueOptional": true, "valueOptionalBehavior": "Not pressed" } ], "responseFields": [] }, { "description": "Sleeps for a time duration or number of frames. Only available in request batches with types `SERIAL_REALTIME` or `SERIAL_FRAME`.", "requestType": "Sleep", "complexity": 2, "rpcVersion": "1", "deprecated": false, "initialVersion": "5.0.0", "category": "general", "requestFields": [ { "valueName": "sleepMillis", "valueType": "Number", "valueDescription": "Number of milliseconds to sleep for (if `SERIAL_REALTIME` mode)", "valueRestrictions": ">= 0, <= 50000", "valueOptional": true, "valueOptionalBehavior": "Unknown" }, { "valueName": "sleepFrames", "valueType": "Number", "valueDescription": "Number of frames to sleep for (if `SERIAL_FRAME` mode)", "valueRestrictions": ">= 0, <= 10000", "valueOptional": true, "valueOptionalBehavior": "Unknown" } ], "responseFields": [] } ] }