Stream DeckCAUTION
MCP server for Elgato Stream Deck control — set buttons, manage pages, wire actions
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
Stream Deck MCP
Stream Deck MCP lets agents build and reconfigure real Elgato Stream Deck profiles.
Quick Start · Demo · Features · Tools · Development
Tell your AI what Stream Deck you want. Get back a polished profile with buttons, icons, colors, dials, touch-strip art, and the shell scripts behind it. Stream Deck MCP writes the same profile format the Elgato desktop app already uses, so agents can author real local decks without making you build a Stream Deck plugin first.
It works with Claude Desktop, Claude Code, Cursor, Codex, and any MCP client that can launch a stdio server.
Quick Start
Claude Code:
claude mcp add streamdeck -- uvx streamdeck-mcp
Claude Desktop, Cursor, Codex, and other MCP clients can use the same command:
{
"mcpServers": {
"streamdeck": {
"command": "uvx",
"args": ["streamdeck-mcp"]
}
}
}Then ask your agent for a deck:
Make me a Slack control board for my Stream Deck + XL.
For Claude Code, install the bundled designer skill for better layout, palette, hardware, and plugin-action guidance:
uvx --from streamdeck-mcp streamdeck-mcp-install-skill
Demo
Product trailer generated with Remotion, showing hardware inventory, plugin discovery, configured action reuse, and a final Stream Deck + XL reveal.
Features
- Profile-native authoring - reads and writes Elgato
ProfilesV3files directl
e74975bb939dOBSERVED · 2026-10-08Connect
Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control.
claude mcp add streamdeck-mcp -- None streamdeck-mcp==0.3.0
Exposed tools (11)
4 read · 3 write · 4 destructive. Blast radius: 4 tools can delete or overwrite — an agent that can be talked into calling a tool can be talked into calling this one.
| Tool | Risk | Description |
|---|---|---|
streamdeck_clear_all | destructive | Clear all buttons on the current page |
streamdeck_clear_button | destructive | Clear a button (remove image and text) |
streamdeck_create_page | write | Create a new button page/profile |
streamdeck_delete_page | destructive | Delete a page (cannot delete |
streamdeck_disconnect | destructive | Disconnect from Stream Deck and reset it |
streamdeck_get_button | read | Get the current configuration of a button |
streamdeck_list_devices | read | List attached Stream Deck devices without requiring an active connection |
streamdeck_list_pages | read | List all available pages |
streamdeck_restart_app | write | Restart the macOS Stream Deck desktop app after profile changes. |
streamdeck_set_brightness | write | Set the Stream Deck screen brightness |
streamdeck_switch_page | read | Switch to a different button page |
Trust audit
CAUTIONgrade B · trust 85/100 Install with care. The audit found things worth knowing before you trust its output.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | WARN |
| L1 | Static analysis of the code | PASS |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | WARN |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- declared (3 observation(s))
- Network
- declared (1 observation(s))
- Shell
- none-observed
- Dependencies
- not all pinned
- Secrets in source
- none-found
Findings (15)
deep-hit.wav
final-impact.wav
switch-hit.wav
ui-click.wav
whoosh.wav
streamdeck_clear_all, streamdeck_clear_button, streamdeck_delete_page, streamdeck_disconnect
.release-please-manifest.json
vitest
**If not**: user provides the URL + a long-lived access token (Profile → Security → Long-Lived Access Tokens).
- For production-level secrecy, suggest the macOS Keychain (`security find-generic-password`) or 1Password CLI (`op read`) as alternatives to `.env`.
- Key 23: Open `.env` or config file.
docs/screenshots/slack-control-board.jpg
streamdeck_assets/materialdesignicons-webfont.ttf
trailer/public/audio/synth-bed.wav
trailer/public/images/slack-control-board.jpg
Gates applied: no_behavioural_pass.
e74975bb939dfull audit observations/trust-audit/mcp-server/verygoodplugins__stream-deck.json · Report an issue / request a re-scanAudit history
Every audit this server has had. A grade with a past is a grade somebody is still checking.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-08 | e74975bb939d | CAUTION | B | 85 | first audit |
Questions
What is the Stream Deck MCP server?
MCP server for Elgato Stream Deck control — set buttons, manage pages, wire actions
What tools does Stream Deck expose?
11 in total: 4 read-only, 3 that write, and 4 that can delete or overwrite (streamdeck_clear_all, streamdeck_clear_button, streamdeck_delete_page, streamdeck_disconnect). Every one is listed on this page with its risk.
Is Stream Deck safe to connect to an agent?
With care. The audit graded it B (85/100) and found 15 things worth knowing before you trust this server, listed below with the exact line each was found on. Separately from the audit: 4 of its tools can destroy data, so scope the token you give it to what you actually need.
What credentials does Stream Deck need?
No credential environment variables were found in its source, so it appears to need none.
How does Stream Deck run?
It speaks stdio, so it runs as a local process your client starts. It is published on npm as trailer at 1.0.0.
How current is this page?
The grade is for one exact copy of the source (e74975bb939d), read on 2026-10-08. The repository is watched and re-audited when it changes.