MCP build_app

Description

Build a Roku app at a given project root. Streams progress via SSE and returns a summary.

Required parameters:

  • root (string): ABSOLUTE filesystem path to the Roku app root directory.
    A valid Roku app root contains package.json, src/, pkg/, and a Roku config file (default: roku-config.ts).

Optional parameters:

  • config (string): Path to config file relative to root (default: roku-config.ts).
    Use variant naming like roku-config-<variant>.ts when multiple app variants share one root.
  • disableTypeChecking (boolean): Disable TypeScript semantic type checking before build.
  • lowerArrayDestructuring (boolean): rewrite const [a, b] = createSignal() and similar Solid calls to indexed reads for smaller bytecode (maps to --lower-destructuring / --no-lower-destructuring). Omit to use the default: on for release builds, off for debug builds.
  • perfettoPaths (string[]): Folder path prefixes for Perfetto auto-instrumentation during build.
  • perfettoExclude (string[]): Babel visitor shapes to skip during Perfetto auto-instrumentation.
  • perfettoFilter (string[]): Trace name substrings to include during Perfetto auto-instrumentation.

IMPORTANT: Before calling this tool, search the workspace to find the app's location. Common app locations:

  • Example apps: /path/to/workspace/rsg-sdk/external/examples/[app-name]
  • Workspace apps: /path/to/workspace/apps/[app-name]

Use file_search or semantic_search to locate the app directory, then pass its absolute path.

Example: { "root": "/home/user/projects/button-row" }

See also

Parameters

additionalProperties: false

NameTypeRequiredValues
rootstringYes
configstringNo
buildTypestringNo
pkgbooleanNo
outDirstringNo
outputstringNo
bumpMinorbooleanNo
bumpBuildbooleanNo
metafilestringNo
devbooleanNo
showCopiedFilesbooleanNo
disableTypeCheckingbooleanNo
lowerArrayDestructuringbooleanNo
perfettoPathsarray<string>No
perfettoExcludearray<"FunctionDeclaration" | "VariableDeclarator" | "FunctionExpression" | "ObjectMethod">No
perfettoFilterarray<string>No

root

Absolute path to the Roku app root

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)

buildType

Free-form label returned by getBuildType() in roku-config.ts (equivalent to --build-type; default: production)

pkg

Whether to produce a .bin package file in addition to the standard build output (equivalent to --archive flag; --package is a deprecated alias)

outDir

Build output directory (equivalent to --out-dir / -od)

output

Package file name (equivalent to --output / -o)

bumpMinor

Not documented in the source.

bumpBuild

Not documented in the source.

metafile

Path to write build metafile

dev

Build with development artifacts (no minify, source maps)

showCopiedFiles

Show individual file copy operations (verbose mode)

disableTypeChecking

Disable TypeScript semantic type checking before build

lowerArrayDestructuring

Lower array destructuring of Solid calls (createSignal etc.) to indexed reads (--lower-destructuring / --no-lower-destructuring). Default: on for release builds, off for debug builds

perfettoPaths

Folder path prefixes for Perfetto auto-instrumentation during build

perfettoExclude

Babel visitor shapes to skip during Perfetto auto-instrumentation

perfettoExclude fields

NameTypeRequiredValuesDescription
perfettoExclude[]"FunctionDeclaration" | "VariableDeclarator" | "FunctionExpression" | "ObjectMethod"Noenum: "FunctionDeclaration", "VariableDeclarator", "FunctionExpression", "ObjectMethod"Not documented in the source.

perfettoFilter

Trace name substrings to include during Perfetto auto-instrumentation


Did this page help you?