Skip to content
Agentmart
Submit a tool

Streamdeck MCP

MCP server for Elgato Stream Deck control — set buttons, manage pages, wire actions

Connector by verygoodplugins · GitHub account verified by the MCP Registry

IndexedMITLocal (stdio)★ 53
Write a review

Install

Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.

npx agentmarket install connector/verygoodplugins-streamdeck-mcp

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

MCP server for Elgato Stream Deck control — set buttons, manage pages, wire actions

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this server can do and what it asks for, from its tool list and install config. Checked Oct 25, 2026.

Tools
8 read · 9 write · 3 delete · 3 not yet classified
Secrets
None asked for
Install scripts
Not scanned yet
Runs as
Python package

Tools by what they do 23

Read from the source code; the running server may list different tools.

Read 8 · Look things up without changing anything.

  • streamdeck_find_actions
  • streamdeck_get_button
  • streamdeck_info
  • streamdeck_list_devices
  • streamdeck_list_pages
  • streamdeck_read_page
  • streamdeck_read_plugins
  • streamdeck_read_profiles

Write 9 · Create, change, send or run things.

  • streamdeck_create_action
  • streamdeck_create_icon
  • streamdeck_create_page
  • streamdeck_install_mcp_plugin
  • streamdeck_restart_app
  • streamdeck_set_brightness
  • streamdeck_set_button
  • streamdeck_set_buttons
  • streamdeck_write_page

Delete 3 · Delete, drop, revoke or wipe things.

  • streamdeck_clear_all
  • streamdeck_clear_button
  • streamdeck_delete_page

Not yet classified 3 · We could not tell from the name and description.

  • streamdeck_connect
  • streamdeck_disconnect
  • streamdeck_switch_page

Files it touches

  • Any path the agent passes to its tools

Tools (23)

Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].

  • streamdeck_clear_all

    Clear all buttons on the current page

  • streamdeck_clear_button

    Clear a button (remove image and text)

  • streamdeck_connect

    Connect to a Stream Deck device. Call this first before other operations. Use serial to choose a specific deck when multiple are attached.

  • streamdeck_create_action

    Create an executable shell script in ~/StreamDeckScripts and return a native Open action block for it.

  • streamdeck_create_icon

    Generate one or many PNG icons. Button icons are 72x72 px; touchstrip segment icons are 200x100 px (use shape='touchstrip'). For a single icon: pass 'icon' (a Material Design Icons name like 'mdi:cpu-64-bit') OR 'text' (mutually exclusive with 'icon' — titles go on streamdeck_write_page's 'title' field since Elgato overlays them on images). For a full deck (often 30+ icons): pass 'icons' as a list of spec dicts to generate them all in one call and avoid the round-trip timeouts serial calls hit. ~7400 MDI icons bundled offline; unknown names return close-match suggestions. Returns either a sing…

  • streamdeck_create_page

    Create a new button page/profile

  • streamdeck_delete_page

    Delete a page (cannot delete 'main')

  • streamdeck_disconnect

    Disconnect from Stream Deck and reset it

  • streamdeck_find_actions

    Search configured buttons and dials across Stream Deck profiles/pages and return paste-ready native action objects for streamdeck_write_page. Prefer this FIRST when building layouts that reuse installed plugins (Home Assistant, Hue, OBS, Spotify, Wave Link, etc.): each hit includes a 'button' object ready for write_page (controller + key + action) so encoder/dial hits stay on the Encoder grid. You can also pass hit.action with controller=hit.controller yourself. Filters: query (substring), plugin_uuid, action_uuid, plugin_name, controller (keypad|encoder), optional profile scope. Returns a fre…

  • streamdeck_get_button

    Get the current configuration of a button

  • streamdeck_info

    Get info about the connected Stream Deck, including model, key count, and current page.

  • streamdeck_install_mcp_plugin

    Install the bundled streamdeck-mcp Stream Deck plugin into the user's Elgato Plugins directory. The plugin is a minimal shell that declares encoder support so that per-instance touchstrip icons and backgrounds written by streamdeck_write_page survive an Elgato app restart. Idempotent — returns installed=false when already present unless force=true. streamdeck_write_page also auto-installs this plugin when an encoder button targets it, so most callers do not need to invoke this directly.

  • streamdeck_list_devices

    List attached Stream Deck devices without requiring an active connection

  • streamdeck_list_pages

    List all available pages

  • streamdeck_read_page

    Read a profile page by profile name or ID and page index or directory ID. Each button/dial includes a 'raw' native action object — copy it into streamdeck_write_page's button 'action' field to reuse configured plugin settings without guessing. For searching across many pages, prefer streamdeck_find_actions.

Show 8 more tools
  • streamdeck_read_plugins

    List installed Stream Deck plugins and their declared actions from the user's Elgato Plugins directory, including each action's UUID, Name, States, and — best-effort — the Settings fields its Property Inspector expects (parsed from the action's PI HTML/JS). Use this to synthesize a NEW third-party action when streamdeck_find_actions finds no configured instance. Prefer find_actions (or read_page.raw) when the user already configured the button/dial in the Stream Deck app — especially for first-party Elgato plugins (OBS, Hue, Spotify, Zoom, …) that ship ELGATO-protected/binary manifests and are…

  • streamdeck_read_profiles

    List Stream Deck desktop profiles from the active ProfilesV3 or ProfilesV2 directory.

  • streamdeck_restart_app

    Restart the macOS Stream Deck desktop app after profile changes.

  • streamdeck_set_brightness

    Set the Stream Deck screen brightness

  • streamdeck_set_button

    Set a button's appearance and optional action. Use text for labels or image_path for icons.

  • streamdeck_set_buttons

    Set multiple buttons at once. This is faster than individual button calls.

  • streamdeck_switch_page

    Switch to a different button page

  • streamdeck_write_page

    Create a new page or replace/update an existing Stream Deck desktop page manifest. Authoring preference order: (1) paste a native 'action' from streamdeck_find_actions or streamdeck_read_page's button.raw — best for installed plugins with private Settings; (2) synthesize via plugin_uuid + action_uuid + settings from streamdeck_read_plugins when no configured instance exists; (3) script-backed Open actions via path / streamdeck_create_action for custom automation; also supports page-nav (action_type) and the bundled MCP dial. Validation: unknown plugin_uuid/action_uuid raises a clear error list…

Signals

Stars
53
Forks
13
Open issues
4
Contributors
4
Weekly downloads
189
Last commit
Jul 19, 2026 (3 months ago)
Last release
Apr 28, 2026 (6 months ago)
Last package publish
Apr 28, 2026 (6 months ago)

From GitHub (fetched Oct 24, 2026) and the package registry.

Details

Registry name
io.github.verygoodplugins/streamdeck-mcp
Version
0.1.2
Auth
No auth
Packages
pypi streamdeck-mcp
License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from verygoodplugins

Cite this page

Streamdeck MCP. Agent Mart. https://agentmart.dev/connectors/verygoodplugins-streamdeck-mcp (last updated 2026-10-24)