Skip to main content
Glama
Presentation Buddy MCP Server

Presentation Buddy MCP Server

by yshk-mrt

Presentation Buddy - AI-Powered Stream Production Assistant

Project Links:

Presentation Buddy is an OBS control system that uses Claude AI to automate streaming production, allowing solo creators to focus on content delivery rather than technical management.

Technical Overview

This implementation uses:

  • OBS Studio: Industry-standard streaming software

  • TypeScript-based MCP Server: A lightweight relay service connecting Claude AI to OBS

  • Claude AI: For natural language understanding and production decision making

  • OBS WebSocket API: For direct control of scene switching, overlays, and media elements

  • Local Processing: All functionality runs on the presenter's machine for minimal latency

Key Components

  • MCP Server: A middleware that translates Claude's decisions into OBS WebSocket commands

  • Scene Management: Automated switching based on content and verbal cues

  • Media Controls: Intelligent handling of overlays, captions, and picture-in-picture elements

  • Voice Response: Text-to-speech capabilities for AI responses during presentations

Implementation

The server establishes a WebSocket connection with OBS and exposes an API that Claude can access. When Claude identifies a production need from the presenter's speech or on-screen content, it sends commands through the MCP server to control OBS in real-time.

Related MCP server: HeyBeauty MCP Server

Inspiration

Going live alone is hard.
While talking, you're expected to change camera angles, show slides, add captions, and keep viewers engaged—all at once. We wanted a buddy who could handle the production booth, so every solo creator can focus on the story, not the buttons.

What it does

Presentation Buddy is an AI-powered sidekick for streamers and presenters.
It listens to what's happening on screen and behind the mic, then:

  • Switches scenes at the perfect moment

  • Pops up captions, graphics, or picture-in-picture window automatically

  • Even delivers short voice-overs when you need a break

Think of it as a tiny producer that never gets tired.

How we built it

  • Claude AI listens for cues.

  • A lightweight relay sends those cues to OBS Studio, the most popular live-stream tool.

  • OBS takes the commands—"change camera," "show caption," "start replay"—and makes the magic happen.

  • A sprinkle of text-to-speech gives the AI its own voice.

All of this runs locally, so there's no cloud delay or fancy hardware.

Challenges we ran into

  • Build a MCP server wrapping the native OBS APIs

  • Real-time speech response time

  • Good plot that Claude follows well

  • We could not make it providing screenshot to claude via MCP

Accomplishments that we're proud of

  • A live demo that goes from title slide to dynamic content with zero human clicks.

  • Turned a one-person setup into a stress-free broadcast.

What we learned

  • How to build and configure MCP on Claude and Cursor

What's next for Presentation Buddy

  1. Viewer interactivity – let chat votes trigger overlays and polls.

  2. One-click installer – so any streamer can meet their new Buddy in minutes.

From solo streamer to studio pro, instantly.

Installation & Setup

  1. Clone this repository

  2. Install dependencies with npm install

  3. Configure OBS WebSocket connection settings

  4. Start the MCP server with npm start

  5. Connect your Claude AI instance to the MCP server

  6. Start your OBS session and let Presentation Buddy take control

Claude MCP Configuration

To set up Claude with Presentation Buddy, you'll need to configure the MCP (Machine Control Protocol) settings in Cursor or another Claude interface. This allows Claude to control OBS through our server.

Claude MCP Config

Add the following configuration to your Claude settings:

{
  "mcpServers": {
    "obs-mcp-ts": {
      "type": "stdio",
      "command": "/path/to/your/node",
      "args": [
        "/path/to/obs-mcp-server-ts/build/index.js"
      ],
      "toolNamespaces": ["obs-mcp-ts"]
    },
    "tts-mcp": {
      "command": "npx",
      "args": [
        "-p", "tts-mcp",
        "tts-mcp-server",
        "--voice", "nova",
        "--model", "gpt-4o-mini-tts"
      ],
      "env": {
        "OPENAI_API_KEY": "Your-API-Key"
      }
    }
  },

  "toolPermissions": {
    "obs-mcp-ts": true,
    "tts-mcp": true
  }
}

Replace the paths with your actual Node.js and server paths:

  • /path/to/your/node - Path to your Node.js executable (e.g., /Users/username/.nvm/versions/node/v20.17.0/bin/node)

  • /path/to/obs-mcp-server-ts/build/index.js - Path to the built server JavaScript file

For the TTS-MCP configuration, be sure to:

  1. Insert your actual OpenAI API key

  2. Choose your preferred voice (default: nova)

  3. Select the appropriate model for text-to-speech (default: gpt-4o-mini-tts)

OBS Setup

  1. Install OBS Studio (version 28+ recommended)

  2. Enable the WebSocket server in OBS:

    • Go to Tools → WebSocket Server Settings

    • Enable the WebSocket server

    • Set a port (default: 4455)

    • Configure authentication if needed

  3. Create your scenes in OBS:

    • Main Camera

    • Presentation/Slides

    • Picture-in-Picture

    • Any additional scenes you want Claude to control

Testing the Connection

Once configured:

  1. Start OBS Studio

  2. Run the MCP server (npm start)

  3. Open Claude with MCP configured

  4. Test a simple command like switching scenes

License

This project is available under the MIT License.

Available Tools

23 tools
CreateSourceC

Creates a new source in a specified scene. 用途: リプレイ映像用の新しいメディアソースを生成

Inputs: params (required).

GetSceneItemListC

Gets the list of scene items (sources) in a specified scene.

Inputs: params (required).

GetSceneListB

Gets the list of available OBS scenes.

Inputs: no named parameters.

PlayPauseMediaC

Controls playback of a media source (play, pause, stop, restart). 用途: 動画クリップやオーディオの再生制御

Inputs: params (required).

SaveReplayBufferC

Saves the content of the replay buffer. 用途: ゲームのハイライト瞬間を即座に保存

Inputs: params (required).

SaveReplayBufferAndAddC

Saves the replay buffer and adds it as a media source to a scene. 用途: リプレイをすぐにシーンに表示

Inputs: params (required).

SetAudioMuteB

Mutes or unmutes an audio source.

Inputs: params (required).

SetAudioVolumeC

Sets the volume of an audio source.

Inputs: params (required).

SetLutFilterC

Sets parameters for a LUT filter on a source. 用途: LUTフィルターの適用量やファイルパスをリアルタイムで変更する

Inputs: params (required).

SetMediaTimeC

Sets the current playback time of a media source. 用途: 特定シーンへのジャンプ、リプレイの開始位置設定

Inputs: params (required).

SetShaderFilterC

Sets parameters for a shader filter on a source. 用途: シェーダーエフェクトをリアルタイムで変更する

Inputs: params (required).

SetSourcePositionC

Sets the position of a source in a scene.

Inputs: params (required).

SetSourceScaleC

Sets the scale of a source in a scene.

Inputs: params (required).

SetSourceVisibilityB

Sets the visibility of a source in a specific scene.

Inputs: params (required).

SetTextContentC

Sets the text content of a text source.

Inputs: params (required).

SetTransitionSettingsC

Sets the current scene transition type and duration. 用途: シーン切り替え時のエフェクトをカスタマイズ

Inputs: params (required).

StartRecordingB

Starts the OBS recording.

Inputs: no named parameters.

StartStreamB

Starts the OBS stream.

Inputs: no named parameters.

StopRecordingB

Stops the OBS recording.

Inputs: no named parameters.

StopStreamA

Stops the OBS stream.

Inputs: no named parameters.

SwitchSceneC

Switches the current OBS program scene.

Inputs: params (required).

TakeSourceScreenshotC

Takes a screenshot of the specified source.

Inputs: params (required).

TriggerStudioModeTransitionC

Triggers the transition from Preview to Program in Studio Mode. 用途: シーンの準備と切り替えをスムーズに行う

Inputs: params (required).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.1/5.0

    Scored across 23 tools

    Disambiguation4/5

    Most tools have distinct purposes targeting specific OBS functions like scene management, source control, media playback, and streaming. However, some overlap exists between SetSourcePosition/SetSourceScale/SetSourceVisibility (all modifying source properties) and between Start/StopRecording and Start/StopStream (similar start/stop patterns), though their descriptions clarify the specific resources they affect.

    Naming Consistency5/5

    Tool names follow a highly consistent verb_noun pattern throughout, using clear action verbs like Get, Set, Create, Start, Stop, Switch, Take, Trigger followed by specific nouns. All names use PascalCase consistently without any mixing of conventions, making them predictable and readable.

    Tool Count3/5

    With 23 tools, the count feels heavy for an OBS control server, though not extreme. While OBS has many features, some tools could potentially be consolidated (e.g., SetSourcePosition/Scale/Visibility into a single SetSourceProperties tool). The number is borderline but manageable given the domain complexity.

    Completeness4/5

    The toolset provides comprehensive coverage for core OBS workflows including scene/source management, media control, audio/video adjustments, streaming/recording, and transitions. Minor gaps include missing tools for listing/creating filters or managing profiles, but agents can perform most essential operations without dead ends.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers