streamdeck-mcp
Provides integration to control Elgato Stream Deck devices, including profile management, button creation with high-quality icons (SVG rendered at 144×144), and live dashboard daemon for monitoring.
Provides integration to extract Figma file links for task context aggregation, enabling retrieval of design files associated with tasks.
Provides integration to extract GitHub pull request links for task context aggregation, enabling retrieval of PR details associated with tasks.
Provides integration to search Notion and extract document links for task context aggregation, allowing retrieval of relevant Notion pages.
Provides integration to read Slack threads and extract URLs for task context aggregation, enabling retrieval of Slack conversations linked to tasks.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@streamdeck-mcp List my Stream Deck profiles"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
streamdeck-mcp
The Stream Deck MCP server that finally treats your developer workflow seriously.
Control your Elgato Stream Deck from Claude Code with high-quality icons, full profile management, and task context aggregation from Slack, Notion, and GitHub.
Why this over other Stream Deck MCPs?
Icons that don't look like programmer art — SVG rendered at 144×144 retina with Lucide icons, macOS app icon extraction, gradients, and badges. No more Pillow text on solid colors.
Task context aggregation — One command pulls your current task's Slack thread, Notion doc, GitHub PR, and Figma files into a single folder on your Stream Deck. No more hunting across five tools.
Folder-based navigation — Sub-pages you can actually create programmatically, with a working
/taskskill that handles the whole flow.Claude Code native — Built as a first-class MCP server, not a port of someone's USB control library.
Related MCP server: ClickUp MCP Server
Install
npm install -g streamdeck-mcpOr clone and build:
git clone https://github.com/jxxh204/streamdeck-mcp.git
cd streamdeck-mcp
npm install
npm run buildConfigure
Add to your project's .mcp.json (or Claude Code settings):
{
"mcpServers": {
"streamdeck": {
"command": "streamdeck-mcp"
}
}
}If you installed from source, point to the built file instead:
{
"mcpServers": {
"streamdeck": {
"command": "node",
"args": ["/path/to/streamdeck-mcp/dist/index.js"]
}
}
}Quick start
After restarting Claude Code, try these in a conversation:
List my Stream Deck profilesCreate a 144x144 icon with the git-branch Lucide icon on a purple gradient,
text "main", and save it as branch-iconExtract the Cursor app icon and make it a Stream Deck buttonMCP tools
Tool | Description |
| List all profiles with pages and metadata |
| Read page details with button layout |
| Create or update pages with buttons |
| Generate 144×144 PNG icons (Lucide, app icons, gradients, badges, emoji) |
| Create shell script actions for buttons |
| Restart Stream Deck to apply changes |
| List built-in Lucide icon names |
| Create, rename, delete, or duplicate profiles |
| Delete a page from a profile |
| Start/stop a live dashboard daemon |
Icon examples
// Lucide icon with gradient background
{ lucide: "terminal", text: "Claude",
bg_color: "linear-gradient(#D97706, #B45309)" }
// macOS app icon extraction (uses sips under the hood)
{ app_icon: "Docker", subtitle: "Docker",
bg_color: "linear-gradient(#2496ED, #1D7AC4)" }
// Notification badge
{ lucide: "eye", text: "Reviews",
badge: "5", badge_color: "#9333EA" }
// Text with custom font size
{ text: "Push", bg_color: "#F05032", font_size: 24 }
// Emoji
{ emoji: "🚀", text: "Deploy",
bg_color: "linear-gradient(#16A34A, #15803D)" }/task skill — the killer feature
Claude Code slash command that aggregates your current task's context and sets up a Stream Deck folder.
Install
mkdir -p ~/.claude/commands
cp node_modules/streamdeck-mcp/commands/task.md ~/.claude/commands/Or if installed from source:
cp commands/task.md ~/.claude/commands/Usage
# Search Notion → extract PR/Slack/Figma links automatically
/task PROJ-123
# Read Slack thread → extract all URLs (Notion, GitHub, Figma, Sheets)
/task https://slack.com/archives/...
# Create a plain task folder
/task PR review cleanup
# Auto-detect from current Git branch
/task
# Clear slot 3
/task clear 3The skill supports up to 7 task folders (Row 1 + Row 2) and row-based issue layout for folders containing multiple related issues.
Requirements
Node.js 18 or newer
macOS — the ProfilesV3 path, app icon extraction (
sips), andElgato Stream Deck.appcontrol are all macOS-specificElgato Stream Deck with the desktop app installed
Windows and Linux support is planned but not yet implemented.
Architecture
src/
├── index.ts # MCP server entry
├── core/
│ ├── profile-manager.ts # ProfilesV3 manifest read/write
│ └── icon-renderer.ts # SVG → PNG pipeline (@resvg/resvg-js)
└── live/ # Optional background daemon
├── standalone.ts
└── sources/ # Claude Monitor, Git, processes, GitHub PRsKnown limitations
Folder creation — Stream Deck folders (child profiles) cannot be created purely from manifest files. The Elgato app validates folder references against its internal state. Workaround: create empty folders in the app UI once, then use
/taskto fill them.Live dashboard restart flicker — Applying live updates requires restarting the Stream Deck app, which causes a brief blackout. A native Elgato SDK plugin (Phase 5) would eliminate this.
License
MIT © jxxh204
Available Tools
10 toolsstreamdeck_create_actionA
Create an executable shell script in ~/StreamDeckScripts and return a native Open action block.
Inputs: name (required), command (required), filename, working_directory.
streamdeck_create_iconA
Generate a high-quality 144x144 PNG icon. Supports: text, Lucide icons, app icons, emoji, gradients, badges. Returns the file path.
Inputs: svg, text, badge, emoji, +10 more.
streamdeck_delete_pageC
Delete a page from a Stream Deck profile.
Inputs: page_index, profile_id, directory_id, profile_name.
streamdeck_list_iconsA
List all available built-in Lucide icon names for use with streamdeck_create_icon.
Inputs: no named parameters.
streamdeck_live_dashboardB
Start/stop a live dashboard that auto-updates Stream Deck buttons based on active Claude sessions, Git status, and running processes.
Inputs: action (required), profile_name (required), sources, git_repos, +2 more.
streamdeck_manage_profileB
Manage Stream Deck profiles: create, rename, delete, or duplicate.
Inputs: action (required), new_name, profile_id, device_model, +1 more.
streamdeck_read_pageB
Read a profile page by profile name/ID and page index or directory ID. Returns buttons, layout, and raw manifest.
Inputs: page_index, profile_id, directory_id, profile_name.
streamdeck_read_profilesA
List all Stream Deck desktop profiles with pages, device info, and metadata.
Inputs: no named parameters.
streamdeck_restart_appA
Restart the macOS Stream Deck desktop app to apply profile changes.
Inputs: no named parameters.
streamdeck_write_pageC
Create a new page or replace/update an existing Stream Deck page.
Inputs: buttons, page_name, create_new, page_index, +5 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 10 tools
Each tool targets a clearly distinct resource or action: profiles, pages, icons, actions, app restart, and live dashboard are fully separated. Even related tools like streamdeck_read_profiles and streamdeck_read_page are unambiguous because one lists profiles while the other reads page content.
All tools share the streamdeck_ prefix and mostly follow a verb_noun pattern. Minor deviations exist: streamdeck_manage_profile uses the generic verb 'manage', and streamdeck_live_dashboard omits a verb entirely, but the overall pattern remains predictable.
Ten tools is well-scoped for a Stream Deck customization server. Each tool covers a meaningful part of the profile, page, icon, action, and app-management workflow without feeling bloated or redundant.
The tool set covers the core lifecycle: read/write/delete pages, manage profiles, create icons and actions, and restart the app. Some minor gaps exist, such as no listing/updating/deleting generated actions or icons, but these are not critical to the primary workflow.
Maintenance
Related MCP Connectors
Persistent context for Claude. Your AI always knows your projects and next actions across sessions.
A profile you control: gives your AI your role, projects and preferences, across ChatGPT and Claude.
WHOOP recovery, strain, sleep and workouts in Claude via official WHOOP OAuth. Free, open source.
Connect Claude to your Platform7n workspaces: chat, links, work and decks. One-click OAuth.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables AI to generate fully authored Elgato Stream Deck profiles with buttons, icons, colors, dials, and shell scripts from natural language prompts.7140 PyPI55MIT
- AlicenseAqualityDmaintenanceEnables natural language management of ClickUp workspaces, including task CRUD operations, task listing, and user profile retrieval via Claude Desktop.61MIT
- FlicenseNot gradedqualityDmaintenanceTurns Claude Desktop into a Cursor-like assistant for code browsing, editing, searching, linting, formatting, and version control.-
- FlicenseNot gradedqualityDmaintenanceEnables AI-powered GitHub automation by connecting Claude AI with GitHub APIs for managing issues and pull requests.-