Skip to content

App Builder MCP Tools Reference

The Komodo MCP server registers 26 App Builder tools (15 app development + 6 secrets + 5 sharing) and appends detailed workflow instructions to its prompt. AI assistants connected to the MCP server can scaffold, build, deploy, manage, and share Komodo Apps with minimal user input. Tools operate against production.

The MCP server’s built-in instructions guide AI assistants through this workflow:

  1. get_available_templates — Always call first. Returns available templates (FastAPI, Streamlit, React, multi-container, react-advanced, restate-agent) so the assistant can recommend the right one. For Restate devfile fields, callback paths, and registration behavior, see Durable workflows (Restate).

  2. scaffold_app — Generate the project from the selected template: source code, Dockerfile, devfile.yaml, and README.

  3. validate_devfile — Always validate before building. Catches schema errors, missing fields, port mismatches, and invalid app names early.

  4. register_app — Pre-register the app (name, display name, project_path so a .app file is written). Required before build_app when the app uses Komodo secrets (app-scoped or otherwise): RBAC/FGA needs the app Custom Resource before secret operations behave reliably. If the app does not use secrets, pre-registration is still recommended; build_app can create the app inline if you skip it (legacy flow).

  5. build_app — By default, package the project and build via the remote Build API (platform worker, ECR, signing); only Komodo OAuth is required. Set build_mode to local to run BuildKit on the client (buildctl → docker image tar), then upload via the Build API prebuilt path (Trivy, ECR, and signing still run on the platform). No AWS_ROLE_ARN or client-side registry push. Then create or update the app in Komodo (or update the app pre-registered in step 4 when .app is present).

  6. After build_app — Print the app_id and every entry in service_urls (one URL per service). Then ask whether the user wants you to poll deployment.

  7. get_app_status — Only if the user asks you to check deployment: poll every 10-15 seconds until the app reaches RUNNING or FAILED. If failed, call get_app_logs to diagnose.

After build_app, the assistant should:

  • Verify success: true and a valid app_id in the response
  • Retry up to 2 times on transient errors (timeouts, network issues)
  • On remote Build API or local BuildKit / prebuilt-upload failure, inform the user and retry
  • On app create failure, inspect the error message

For multi-container and react-advanced templates, all services are managed as a single app with one root devfile.yaml and one app_id. When build_app runs from the project root:

  • All service images are built in parallel (shared build context)
  • Images are registered in dependency order (from dependsOn)
  • The response includes build_ids, image_uris, deploy_order, and service_urls

To rebuild a single service, pass service_name to build_app. The assistant should print every entry in service_urls (one URL per service) after a successful build.

See the App Builder guide for devfile structure, service URL templating, and cross-service communication rules.


Create a new Komodo application from a template. Generates all project files including application source code, Dockerfile, devfile.yaml, and README.md.

Parameters:

NameTypeRequiredDescription
app_namestringyesApplication name (lowercase, alphanumeric + hyphens, 1-63 chars, starts with letter)
app_typestringyesTemplate: fastapi, streamlit, react, multi-container, react-advanced, restate-agent
output_directorystringyesDirectory to scaffold into
descriptionstringnoApp description for devfile metadata
display_namestringnoHuman-readable display name
portintegernoOverride the template’s default port
fabricslist[string]noKomodo fabrics for the app
permissionslist[string]noKomodo permissions for the app
overwritebooleannoOverwrite existing files (default: false)
restatebooleannoWhen true, applies the Restate overlay after scaffolding (devfile restate block, restate-sdk, ASGI router / example workflow for Python). Also applied automatically when app_type is restate-agent. See Durable workflows (Restate).

Returns: Project path and list of files created.

List all available application templates with metadata.

Returns: Array of templates, each with name, description, language, and default_port.

TemplateLanguageDefault Port
fastapiPython8002
streamlitPython8501
reactJavaScript80
multi-containerPython8000
react-advancedJavaScript3000
restate-agentPython9080

Validate a devfile against the Komodo schema. Checks:

  • YAML syntax
  • Required fields (schemaVersion, metadata.name, metadata.displayName)
  • Component structure and endpoint configuration
  • Komodo-specific fields (fabrics, permissions)
  • App name validity (lowercase, 1-63 chars, starts with letter, no consecutive hyphens)

Parameters:

NameTypeRequiredDescription
devfile_contentstringnoRaw YAML string (provide either this or devfile_path)
devfile_pathstringnoPath to a devfile.yaml file

Returns: { valid: boolean, errors: string[], warnings: string[] }

Generate a devfile.yaml for an existing project without scaffolding full application code.

Parameters:

NameTypeRequiredDescription
app_namestringyesApplication name
display_namestringyesHuman-readable name
descriptionstringyesApp description
portintegernoContainer port (default: 8002)
languagestringnoLanguage hint (default: python)
dockerfile_pathstringnoPath to Dockerfile (default: Dockerfile)
build_contextstringnoDocker build context (default: .)
fabricslist[string]noKomodo fabrics
permissionslist[string]noKomodo permissions
output_pathstringnoWrite the generated file to this path

Returns: Generated devfile content and output path (if written).


Pre-register a Komodo application before the first build_app. Reserves the name, creates the service principal, and registers RBAC so identity exists before image build. When project_path is set, writes a .app file with app_id so build_app updates that app instead of creating a new one.

Parameters:

NameTypeRequiredDescription
namestringyesMachine-readable app name (lowercase, alphanumeric + hyphens)
display_namestringyesHuman-readable display name
project_pathstringnoDirectory for the .app file; omit if you will pass app_id to build_app manually
descriptionstringnoApp description

Build and deploy a Komodo application. This is the primary deployment tool.

Default (build_mode omitted or remote): packages the project directory, uploads context through the Build API, runs the image build on Komodo infrastructure (worker, ECR push, signing). Only Komodo OAuth is required — no user AWS credentials.

Optional build_mode: local: runs BuildKit / buildctl on the client to produce a docker image tarball, uploads it through the Build API as prebuilt, then the worker scans, pushes to ECR, and signs — same OAuth as remote. Requires buildctl on PATH and a reachable BuildKit at BUILDKIT_HOST. No user AWS credentials or ECR push from the client.

BUILDKIT_HOST (local builds): Default docker-container://buildkitd when unset. Use tcp://127.0.0.1:1234 if you start BuildKit with docker run ... -p 1234:1234 (see App Builder — BUILDKIT_HOST). For MCP, set this on the MCP server environment (Cursor MCP config), not only in the user’s shell — otherwise build_app may report BuildKit unreachable while komodo build --local works in a terminal with export BUILDKIT_HOST=....

After a successful image build, updates devfile.yaml with imageUri and creates or updates the app (tracked via .app file).

Parameters:

NameTypeRequiredDescription
project_pathstringyesPath to the project directory (must contain Dockerfile and devfile.yaml)
environmentstringnoproduction (default, from session)
verbosebooleannoShow detailed build output (default: false)
architecturestringnoTarget arch for local builds: amd64 or arm64 (default: amd64)
build_modestringnoremote (default) or local
service_namestringnoFor multi-container projects: rebuild only this service. Omit to build all services.

Returns (single-service): { success, app_id, app_url, build_id, image_uri, ... }

Returns (multi-service): { success, app_id, app_url, build_ids, image_uris, deploy_order, service_urls, rollout_waited: false, ... }

FieldDescription
build_idsList of build job IDs (one per service)
image_urisMap of service name → ECR image URI
deploy_orderServices in dependency order
service_urlsMap of service name → public HTTPS URL

Use get_app_status with app_id for deployment state (RUNNING, FAILED, etc.). The response may include build_id / build_ids for image build jobs; use cancel_build or get_build_scan_report with those IDs, not get_app_status.

Fetch the Trivy vulnerability scan JSON for an image build job.

Parameters: build_id (from build_app), optional environment.

Returns: { success, build_id, report?, error? }

Cancel a queued or in-progress image build job (Build API). Does not stop a running deployed app.

Parameters: build_id, optional environment.


List all Komodo applications for the current account.

Parameters:

NameTypeRequiredDescription
environmentstringnoTarget environment
page_sizeintegernoResults per page (default: 20)
next_page_tokenstringnoPagination token from previous response

Returns: Array of apps with name, status, URL, and timestamps. Includes pagination token if more results are available.

Get full details of a specific app including its devfile configuration.

Parameters:

NameTypeRequiredDescription
app_idstringyesApp UUID
environmentstringnoTarget environment

Returns: App details including name, description, status, URL, devfile, enabled state, and timestamps.

Check whether an app is running, deploying, suspended, or failed. Use this to poll deployment progress after build_app.

Parameters:

NameTypeRequiredDescription
app_idstringyesApp UUID
environmentstringnoTarget environment

Returns: { status: string, app_url: string }

Retrieve logs for debugging deployment failures or runtime errors. Returns presigned S3 URLs for log content. For multi-service apps, pass service_name to get logs for a specific service.

Parameters:

NameTypeRequiredDescription
app_idstringyesApp UUID
environmentstringnoTarget environment
latest_onlybooleannoOnly return the most recent logs (default: true)
service_namestringnoFilter logs to a specific service (multi-container apps)

Returns: Array of log entries with presigned URLs.


Resume a previously suspended app. After calling, poll get_app_status until the app is RUNNING.

Parameters:

NameTypeRequiredDescription
app_idstringyesApp UUID
environmentstringnoTarget environment

Suspend a running app without deleting it. The app can be re-enabled later. Useful for pausing apps that are not actively needed to save resources.

Parameters:

NameTypeRequiredDescription
app_idstringyesApp UUID
environmentstringnoTarget environment

Permanently delete an app. This cannot be undone. After deleting, also delete the .app file from the project directory to avoid 404 errors on subsequent builds.

Parameters:

NameTypeRequiredDescription
app_idstringyesApp UUID
environmentstringnoTarget environment

Store and manage secrets via the Komodo Secrets Service. Secrets are stored server-side in a hardened vault and can be scoped to a user, an application, or shared across the organization.

Scopesecret_type valueDescription
PersonaluserPrivate to the authenticated user
ApplicationappTied to a specific app (requires app_id)
OrganizationsharedAccessible by all account members

Store a new secret at the given path.

Parameters:

NameTypeRequiredDescription
secret_typestringyesuser, app, or shared
secret_pathstringyesPath for the secret (e.g. my-api-key or db/password). Must not start with / or contain ..
datastringyesJSON string of key-value pairs to store (e.g. '{"password": "s3cret"}')
app_idstringwhen appApp UUID (required for application secrets)
metadatastringnoJSON string of metadata key-value pairs

Read a secret’s value and metadata.

Parameters:

NameTypeRequiredDescription
secret_typestringyesuser, app, or shared
secret_pathstringyesPath of the secret to read
app_idstringwhen appApp UUID

List secret paths within a scope, with optional prefix filtering and pagination.

Parameters:

NameTypeRequiredDescription
secret_typestringyesuser, app, or shared
prefixstringnoFilter results to paths starting with this prefix (e.g. db/)
app_idstringwhen appApp UUID
next_tokenstringnoPagination token from a previous response

Replace a secret’s data and optionally its metadata. Creates a new version.

Parameters:

NameTypeRequiredDescription
secret_typestringyesuser, app, or shared
secret_pathstringyesPath of the secret to update
datastringyesJSON string of new key-value pairs
app_idstringwhen appApp UUID
metadatastringnoJSON string of new metadata

Permanently remove a secret. This cannot be undone.

Parameters:

NameTypeRequiredDescription
secret_typestringyesuser, app, or shared
secret_pathstringyesPath of the secret to delete
app_idstringwhen appApp UUID

Copy a secret into the shared (organization-wide) namespace so any account member can access it. The original secret is not modified.

Parameters:

NameTypeRequiredDescription
from_secret_typestringyesSource scope: user, app, or shared
from_secret_pathstringyesPath of the source secret
to_shared_pathstringyesDestination path under the shared namespace (e.g. team-api/credentials)
app_idstringwhen appApp UUID (if source is an app secret)
copy_metadatabooleannoCopy source metadata to the shared copy (default: true)

View and manage who has access to your Komodo apps via Platform RBAC custom resource roles. Each app is backed by a custom resource whose ID is the app UUID. The assistant uses these tools only when you explicitly ask to view, grant, or revoke app access.

Return the roles the current user is allowed to grant on an app. The result depends on the caller’s own role (e.g. an owner can grant owner, editor, and viewer; an editor can grant editor and viewer).

Parameters:

NameTypeRequiredDescription
app_idstringyesApp UUID

Returns: { success, roles: ["owner", "editor", "viewer"] }

List all users who currently have access to an app and their roles.

Parameters:

NameTypeRequiredDescription
app_idstringyesApp UUID

Returns: { success, users: [{ user_id, email, name, role }] }

Grant a role on an app to another user.

Parameters:

NameTypeRequiredDescription
app_idstringyesApp UUID
rolestringyesRole to grant: owner, editor, or viewer
user_idstringyesTarget user UUID or email

Returns: { success, message }

Revoke a role on an app from a user.

Parameters:

NameTypeRequiredDescription
app_idstringyesApp UUID
rolestringyesRole to revoke
user_idstringyesTarget user UUID or email

Returns: { success, message }

List all users in the current account. Useful for discovering user IDs and emails before granting roles.

Returns: { success, users: [{ id, email, name }] }