Skip to main content
Glama
qd313
by qd313

Decky Plugin Studio

VS Code / Cursor extension for Decky Loader plugin development: MCP tools that build, deploy and test your plugin on a real Steam Deck, composited screenshots and screen recordings, and an agent pack for your plugin repo.

The in-IDE preview was retired on 2026-10-24. UI checks run on the Deck, or on a stand-in.

What you get

Feature

What it does

MCP tools

44 tools for agents: build, deploy, logs, capture, and driving the Deck (see the list below)

Composited capture

Screenshots and recordings that include QAM + your plugin UI (not raw game-only kmsgrab)

Init Pack

Drops AGENTS.md, MCP config, agents/skills/hooks for Cursor and/or Claude Code, and optional scripts/ into your plugin repo

Create New Plugin

Clones decky-plugin-template, renames boilerplate, runs Init Pack

What the tools cover:

  • Bridge and focus tools. An ESP32 board plugged into the Deck acts as a real gamepad. Agents press buttons (the triggers LT and RT too), walk the D-pad, run sequences and sweeps, and read where the focus ring is and whether a person could see it.

  • Killswitch. deck.stopAutomation stops every press at once. Only a human re-arms it.

  • Launch and exit a game by pressing buttons, with a read before every A. deck.listGames lists what can be started.

  • Run hygiene. Check the Deck is ready before a run, keep it awake, snapshot and restore the plugin's settings, and replay saved checks after a deploy.

  • Stand-in machines. Drive a Bazzite VM or a Windows PC running Big Picture as well as the Deck. Every result names the machine, and only one session drives a machine at a time.

  • Focus lint. plugin.lintFocus checks D-pad wiring from source.

  • Doctor. studio.doctor (and Decky: Doctor) checks DPS's own setup.

Related MCP server: DevServer MCP

Install

  1. Download the latest .vsix from GitHub Releases

  2. Extensions → … → Install from VSIX…

  3. Reload the editor

The status bar (bottom-right) shows the installed version, tunnel state, ingest count, and whether Deck automation is armed.

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 copy .env.example → .env in your plugin repo:

cp .env.example .env   # Linux / macOS
Copy-Item .env.example .env   # Windows
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.

Run scripts/setup-dev.ps1 (Windows) or scripts/setup-dev.sh (Linux) once per Deck to install SSH keys and passwordless sudo for deploy (dev-only — use revert-dev when finished).

3. Init Pack

Command Palette → Decky: Init Pack

Copies agent guidance, MCP config, skills, .env.example, and the full scripts/ toolkit (build, setup-dev, capture, tunnel, watch-deploy).

4. Day-to-day loop

build/deploy → on-device QA

If setup looks wrong, run Decky: Doctor first.

Task

MCP (agents)

Shell (human fallback)

First-time Deck SSH/sudo

—

scripts/setup-dev.ps1 / scripts/setup-dev.sh

Build + deploy

plugin.build → deck.deploy

scripts/build.ps1 / scripts/build.sh

Deploy on same SteamOS machine

deck.deploy { mode: "local" }

scripts/build.sh local

Watch + auto-deploy

—

scripts/watch-deploy.ps1 / scripts/watch-deploy.sh

Screenshot (QAM + plugin)

deck.captureScreenshot

scripts/screenshot-deck.ps1 / scripts/screenshot-deck.sh

Screen recording

deck.record

scripts/record-deck.ps1 / scripts/record-deck.sh

Debug logs from Deck

deck.startTunnel → deck.tailIngest

scripts/reverse-tunnel-deck-ingest.ps1 / .sh

Undo dev setup

—

scripts/revert-dev.ps1 / scripts/revert-dev.sh

Release zip

plugin.verifyZip

scripts/build.sh release

Artifacts: screenshots/, recordings/.

5. Shell scripts reference

After Init Pack (or in example-plugin/), scripts live under scripts/ in your plugin repo. Source templates: templates/scripts/ in this repo.

Purpose

Windows

Linux / macOS

Environment template

.env.example (repo root)

.env.example

Dev SSH + sudo setup

scripts/setup-dev.ps1

scripts/setup-dev.sh

Build + deploy

scripts/build.ps1

scripts/build.sh

Watch + deploy

scripts/watch-deploy.ps1

scripts/watch-deploy.sh

Screenshot Deck → PC

scripts/screenshot-deck.ps1

scripts/screenshot-deck.sh

Record Deck → PC

scripts/record-deck.ps1

scripts/record-deck.sh

Reverse tunnel (ingest)

scripts/reverse-tunnel-deck-ingest.ps1

scripts/reverse-tunnel-deck-ingest.sh

Revert dev setup

scripts/revert-dev.ps1

scripts/revert-dev.sh

Verify release zip

—

scripts/verify-decky-plugin-zip.sh

Security: setup-dev grants broad passwordless sudo on the Deck (dev-only). Run revert-dev before handing the Deck back. Re-run setup-dev after SteamOS/client updates.

Init Pack skips existing script files — delete old scripts/build.* or choose Overwrite all to pick up template updates.

6. MCP in Cursor / VS Code / Claude Code

After Init Pack, your plugin repo’s MCP config points at the extension’s MCP server — mcp.json and .vscode/mcp.json for Cursor/VS Code, .mcp.json for Claude Code. The server speaks the standard MCP protocol, so all 44 tools appear in any MCP client’s tool list. Tools are documented in docs/MCP_TOOLS.md.

MCP tool names use underscores (deck_deploy, deck_runSequence); the dotted forms in prose refer to the same tools.

Example agent flows:

  • deck.configure → plugin.build → deck.deploy → deck.captureScreenshot

  • deck.checkReady → deck.openPlugin → deck.sweep for a focus check on the Deck

  • deck.record with { seconds: 15, mode: "game", quality: "compressed" }

Capture prerequisites

For game mode screenshots and recordings:

  1. Deploy your plugin (deck.deploy)

  2. Open QAM on the Deck

  3. 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 a branch → merge to main with a version bump in extension/package.json → CI publishes a GitHub Release + VSIX

  • Build locally: docs/DEVELOPMENT.md

More documentation

License

Apache-2.0 — see LICENSE and NOTICE.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A Vencord plugin that provides MCP server capabilities for inspecting Discord's internal state, executing JavaScript code, accessing Flux stores, discovering webpack modules, and inspecting DOM elements within Discord's context.
    3,386 npm
    MIT
  • A
    license
    Not graded
    quality
    F
    maintenance
    An MCP server that enables programmatic management and monitoring of development servers through a unified interface and interactive TUI. It provides tools for process control, log streaming, and experimental browser automation via Playwright.
    1
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    MCP server for Deckrun — generate presentation PDFs, narrated videos, and audio from Markdown. Built for AI agents and IDEs. Free tier: no API key required — generate PDFs instantly. Paid tier: set DECKRUN_API_KEY to unlock video, audio, and account tools.
    2
    18 PyPI
    2
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    This MCP server drives Defold games through an in-game debug bridge, allowing MCP clients to build, launch, playtest, and interact with real game builds via tools for input, screen reading, state, and logs.
    9
    1
    MIT