Skip to main content
Glama
yshk-mrt

Presentation Buddy MCP Server

by yshk-mrt

SetSourcePosition

Adjust the position of visual elements in streaming scenes by specifying X and Y coordinates to control layout and presentation flow.

Instructions

Sets the position of a source in a scene.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
paramsYes

Implementation Reference

  • The handler logic for the 'SetSourcePosition' MCP tool. It extracts scene name, source name, x and y positions from input parameters. It first retrieves the sceneItemId using OBS 'GetSceneItemId' request, then applies the new position using 'SetSceneItemTransform' with positionX and positionY in the sceneItemTransform object.
    case "SetSourcePosition":
        console.log("SetSourcePosition params:", JSON.stringify(params, null, 2));
        // Extract parameters
        const posSceneName = params.scene || (params.params && params.params.scene);
        const posSourceName = params.source || (params.params && params.params.source);
        const xPos = params.x !== undefined ? params.x : 
                   (params.params && params.params.x !== undefined ? params.params.x : null);
        const yPos = params.y !== undefined ? params.y : 
                   (params.params && params.params.y !== undefined ? params.params.y : null);
        
        if (!posSceneName || !posSourceName || xPos === null || yPos === null) {
            throw new Error("Missing required parameters: scene, source, x, or y");
        }
        
        console.log(`Setting position for source "${posSourceName}" in scene "${posSceneName}" to: x=${xPos}, y=${yPos}`);
        
        try {
            // First get the scene item ID
            const posItemIdResponse = await sendToObs<{ sceneItemId: number }>(
                "GetSceneItemId",
                { sceneName: posSceneName, sourceName: posSourceName },
                context,
                action.name
            );
            
            // Then set the position
            obsResponseData = await sendToObs(
                "SetSceneItemTransform",
                { 
                    sceneName: posSceneName, 
                    sceneItemId: posItemIdResponse.sceneItemId,
                    sceneItemTransform: {
                        positionX: xPos,
                        positionY: yPos
                    }
                },
                context,
                action.name
            );
            console.log("SetSourcePosition response:", JSON.stringify(obsResponseData, null, 2));
        } catch (error) {
            console.error("Error setting source position:", error);
            throw error;
        }
        break;

Latest Blog Posts

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/yshk-mrt/obs-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server