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": []
}
]
}