MCP package

Description

Manage Roku package operations (sign, rekey, delete, squashfs, ls).

Action "sign":

  • Builds and cryptographically signs your Roku channel as a .pkg file using the provided signing password, on the specified device.
  • The resulting signed .pkg can be uploaded to the Channel Store or used for manual deployment.
  • You must provide signingPassword.
  • Optionally, you can specify app root (root), device (device), output directory (outDir), output filename (outFile), and config variant file (config).
  • When root/config are provided, config defaults are resolved from that root (for example package.outDir).

Action "rekey":

  • Rekeys the target Roku device using a signed .pkg key package.
  • This updates the device signing-key context and can optionally assert the resulting developer ID.
  • You must provide the package path (pkgPath) and signing password (signingPassword).
  • Optionally, you can specify the device (device), expected developer ID assertion (devId), and app root (root) for config context.

Action "delete":

  • Deletes the currently installed dev channel on the target device.
  • Uses POST /plugin_install with mysubmit=Delete.
  • Optional: device.

Action "squashfs":

  • Converts the installed dev channel package to squashfs format for faster launch times.
  • Uses POST /plugin_install with mysubmit=Convert to squashfs.
  • Optional: device.

Action "ls":

  • Lists installed package entries (channels and DCLs) using GET /plugin_install?dcl_enabled=1.
  • Returns a JSON array where each item contains exactly: type, archiveFileName, fileType, size.
  • Optional: device.

If you want to sign a package, always use action: "sign" or a prompt like "sign package".

If you want to rekey, always use action: "rekey" or a prompt like "rekey package".

You can describe your request in natural language or provide a JSON payload — both are accepted. For example:

Human-friendly:
"Sign package for /home/user/projects/my-app with password 1234"
"Sign package for root '/home/user/projects/my-app', device 'Work', password '1234', output dir './release', filename 'my-channel'"
"Rekey package with /home/user/keys/my-signing-key.pkg using password 1234"
"Rekey package /home/user/keys/my-signing-key.pkg on device 'Work' with password '1234' and expected dev id 'a1b2c3'"

Or JSON:
{
"action": "sign",
"root": "/home/user/projects/my-app",
"signingPassword": "1234",
"device": "Work",
"outDir": "./release",
"outFile": "my-channel"
}
{
"action": "rekey",
"pkgPath": "/home/user/keys/my-signing-key.pkg",
"signingPassword": "1234",
"device": "Work",
"devId": "a1b2c3"
}

Required for signing:

  • action: "sign"
  • signingPassword: Signing password

Required for rekey:

  • action: "rekey"
  • pkgPath: Path to signed .pkg key package
  • signingPassword: Signing password

Optional:

  • host: Direct target host/IP (bypasses device store selection for target resolution)
  • password: Device password override (applies to host mode and can override stored device password)
  • device: Device ID, IP, or name
  • outDir: Output directory for signed package
  • outFile: Output filename base
  • config: Path to config file relative to root (default: roku-config.ts). Use variant naming like roku-config-<variant>.ts.
  • devId: Expected developer ID for post-rekey assertion
  • root: App root directory for config search context and cwd when applicable

Strict! Only these fields are allowed. Do not add extra or aliased fields.

See also

Parameters

additionalProperties: false

NameTypeRequiredValues
action"sign" | "rekey" | "delete" | "squashfs" | "ls"Yesenum: "sign", "rekey", "delete", "squashfs", "ls"
rootstringNo
configstringNo
hoststringNo
passwordstringNo
devicestringNo
signingPasswordstringNo
pkgPathstringNo
devIdstringNo
outDirstringNo
outFilestringNo

action

Not documented in the source.

root

App root directory to use as cwd for package operations

config

Path to config file relative to root (default: roku-config.ts). Use --config flag; -c is not available (reserved for --console in rk dev)

host

Direct target host/IP (bypasses device store selection for target resolution)

password

Device password override (applies to host mode and can override stored device password)

device

Device ID, IP, or exact name

signingPassword

Signing password override for sign/rekey

pkgPath

Package path for rekey

devId

Expected developer ID for rekey assertion

outDir

Output directory for signed package

outFile

Output filename base for signed package


Did this page help you?