Decky Plugin Studio
MCP server for Decky Loader plugin development, providing tools to build, deploy, debug, and capture screenshots/recordings on a Steam Deck via commands like deck.deploy and deck.captureScreenshot.
README
Decky Plugin Studio
VS Code / Cursor extension for Decky Loader plugin development: live in-IDE QAM preview, MCP tools for build/deploy/debug on a real Steam Deck, composited screenshots and screen recordings, and an agent pack for your plugin repo.
Live preview is very much beta. It is great for fast UI and RPC iteration, but focus, layout, Steam Input, and gamescope compositing still need on-device QA. See Preview limitations.
What you get
| Feature | What it does |
|---|---|
| Live preview | QAM-sized webview with HMR, virtual gamepad, hardware simulator, Python sidecar for real main.py RPC |
| MCP tools | Agents and commands for deck.deploy, deck.captureScreenshot, deck.record, preview suite, tunnel/ingest |
| Composited capture | Screenshots and recordings that include QAM + your plugin UI (not raw game-only kmsgrab) |
| Init Pack | Drops AGENTS.md, Cursor/VS Code MCP config, skills, and optional scripts/ into your plugin repo |
| Create New Plugin | Clones decky-plugin-template, renames boilerplate, runs Init Pack |
Install
- Download the latest
.vsixfrom GitHub Releases - Extensions → … → Install from VSIX…
- Reload the editor
The status bar (bottom-right) shows the installed version, preview/tunnel state, and ingest count.
Quick start
1. Open a plugin workspace
Any folder with plugin.json and main.py. This repo includes example-plugin/ for smoke testing.
2. Configure your Deck (remote dev)
Use MCP deck.configure or create .env in your plugin repo:
DECK_IP=192.168.x.x
DECK_USER=deck
Deck credentials are also stored under ~/.config/decky-plugin-studio/deck.env when using MCP configure.
3. Init Pack
Command Palette → Decky: Init Pack
Copies agent guidance, MCP config, skills, and optional scripts (record-deck, screenshot-deck, preview suite).
4. Open preview (beta)
Command Palette → Decky: Open Preview
- Edit
src/→ Vite HMR in the QAM frame - Edit
main.py→ Python sidecar restarts with preserved state
Do not ship based on preview alone — deploy to a Deck for focus and layout bugs.
5. Day-to-day loop
preview (fast UI) → plugin.build → deck.deploy → on-device QA
| Task | How |
|---|---|
| Build plugin zip | MCP plugin.build or your pnpm run build |
| Deploy to Deck | MCP deck.deploy or Decky: Deploy to Deck |
| Screenshot (QAM + plugin) | MCP deck.captureScreenshot — open QAM + plugin first |
| Screen recording | MCP deck.record — open QAM + plugin before/during capture |
| Debug logs from Deck | deck.startTunnel → deck.probeIngest / deck.tailIngest |
| Agent automation | See MCP tools |
Artifacts land in your plugin workspace: screenshots/, recordings/.
6. MCP in Cursor / VS Code
After Init Pack, your plugin repo’s mcp.json points at the extension’s MCP server. Tools are documented in docs/MCP_TOOLS.md.
Example agent flows:
deck.configure→plugin.build→deck.deploy→deck.captureScreenshotpreview.start→preview.runSequencefor smoke testsdeck.recordwith{ seconds: 15, mode: "game", quality: "compressed" }
Capture prerequisites
For game mode screenshots and recordings:
- Deploy your plugin (
deck.deploy) - Open QAM on the Deck
- Open your plugin panel and keep it visible during capture
Recordings use composited pipewire-gamescope (game) or wf-recorder (desktop). They fail closed if only game-plane capture would succeed — unless you pass allowNonPluginUi: true.
Optional: deck.installCaptureHelper installs studio-record / studio-capture to ~/.local/bin on the Deck.
Developing this extension
- Branch model: feature work on
develop→ merge tomainwith a version bump inextension/package.json→ CI publishes a GitHub Release + VSIX - Build locally: docs/DEVELOPMENT.md
More documentation
- MCP tools reference
- Preview limitations — beta preview vs on-device QA
- Consumer sync (bonsAI & other plugins)
- Device QA runbook
License
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.