From tower
Builds, runs, and deploys Python data apps, pipelines, and AI agents on the Tower compute platform. Covers MCP tools, Towerfile setup, local dev, cloud deployment, and secrets management.
How this skill is triggered — by the user, by Claude, or both
Slash command
/tower:towerThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Tower is a compute platform for Python data apps, pipelines, and AI agents.
Tower is a compute platform for Python data apps, pipelines, and AI agents.
The Tower CLI is not in AI training data — always use MCP tools when running inside an agent.
First, check if Tower is already installed and authenticated:
tower teams list
If that works, skip to the workflow. Otherwise, install and log in.
Preferred — uvx runs Tower with no global install (requires uv):
uvx tower login
If you don't have uvx, install with pip (Python ≥ 3.9):
pip install tower
tower login
Or with nix:
nix run nixpkgs#tower -- login
The MCP server gives Claude structured access to Tower tools. If it's not already running (you'll see tower_* tools available), start it:
uvx tower mcp-server # if using uvx
tower mcp-server # if installed via pip/nix
If you installed Tower via the Claude Code plugin, this is already configured. Otherwise, copy the .mcp.json from the tower-cli repo into your project root.
If MCP tools are unavailable, fall back to the CLI equivalents — every MCP tool has a direct CLI counterpart (e.g. tower apps list, tower deploy).
Use MCP tools when running inside an agent — they return structured data and are easier to compose. Fall back to the CLI for scripting or debugging outside an agent.
MCP tool names mirror the CLI: tower apps list → tower_apps_list, tower deploy → tower_deploy.
All MCP tools accept an optional working_directory parameter.
tower_file_generate({}) # current directory
tower_file_generate({"working_directory": "/path/to/app"}) # explicit path
tower_run_local({"working_directory": "../other-app"})
uv init
Creates pyproject.toml, main.py, README.md. Keep pyproject.toml minimal — [project] metadata and dependencies only. No [build-system], [tool.hatchling], or similar. Skip if a pyproject.toml already exists.
tower_file_generate → tower_file_update → tower_file_add/edit/remove_parameter → tower_file_validate
Always use tower_file_update or tower_file_add/edit/remove_parameter to modify. Never edit the TOML directly.
tower_run_local
Runs the app locally with access to Tower secrets. Use this to test before deploying.
tower_apps_create → tower_deploy → tower_run_remote
Deploy pushes source code to Tower cloud — no build step needed.
tower_schedules_create # set up cron-based recurring runs
tower_schedules_list # view existing schedules
tower_schedules_update # modify timing or parameters
tower_schedules_delete # remove a schedule
tower_apps_list # list all apps
tower_apps_show # details and recent runs
tower_apps_logs # logs from a specific run
tower_teams_list, tower_teams_switch # manage team context
tower_secrets_create, tower_secrets_list # store credentials and API keys
tower_run_local during development — faster, and has secret accessThis section is generated from the CLI's built-in help.
tower loginCreate a session with Tower
Arguments:
-n, --no-browser — Do not attempt to open the browser automaticallytower appsManage the apps in your current Tower account
tower apps listList all apps in your Tower account
Arguments:
-e, --environment — Filter apps by environmenttower apps showShow details for a Tower app and its recent runs
Arguments:
<app_name> (required) — Name of the app-e, --environment — The environment to resolve the app againsttower apps logsGet the logs from a previous Tower app run
Arguments:
<app_name> (required) — app_name#run_number<run_number>-f, --follow — Follow logs in real timetower apps createCreate a new app in Tower
Arguments:
-n, --name (required)--descriptiontower apps deleteDelete an app in Tower
Arguments:
<app_name> (required) — Name of the apptower apps cancelCancel a running app run
Arguments:
<app_name> (required) — Name of the app<run_number> (required) — Run number to canceltower catalogsInteract with the catalogs in your Tower account
tower catalogs listList all of your catalogs
Arguments:
-e, --environment — List catalogs in this environment-a, --all — List catalogs across all environmentstower catalogs showShow the details of a catalog, including its property names
Arguments:
<catalog_name> (required) — Name of the catalog-e, --environment — Environment the catalog belongs totower schedulesManage schedules for your Tower apps
tower schedules listList all schedules
Arguments:
-a, --app — Filter schedules by app name-e, --environment — Filter schedules by environmenttower schedules createCreate a new schedule for an app
Arguments:
-a, --app (required) — The name of the app to schedule-e, --environment — The environment to run the app in-c, --cron (required) — The cron expression defining when the app should run-p, --parameter — Parameters (key=value) to pass to the apptower schedules deleteDelete a schedule
Arguments:
<schedule_id> (required) — The schedule ID to deletetower schedules updateUpdate an existing schedule
Arguments:
<id_or_name> (required) — ID or name of the schedule to update-c, --cron — The cron expression defining when the app should run-p, --parameter — Parameters (key=value) to pass to the apptower secretsInteract with the secrets in your Tower account
tower secrets listList secrets in your Tower account
Arguments:
-s, --show — Show secrets in plain text-e, --environment — List secrets in this environment-a, --all — List secrets across all environmentstower secrets createCreate a new secret in your Tower account
Arguments:
-n, --name (required) — Secret name to create-e, --environment — Environment to store the secret in-v, --value (required) — Secret value to storetower secrets deleteDelete a secret in Tower
Arguments:
<secret_name> (required) — secret name, or environment/secret_name-e, --environment — environment to delete the secret fromtower environmentsManage the environments in your current Tower account
tower environments listList all of your environments
tower environments deleteDelete an environment
Arguments:
-n, --name (required)tower environments createCreate a new environment in Tower
Arguments:
-n, --name (required)tower deployDeploy your latest code to Tower
Arguments:
-d, --dir — The directory containing the app to deploy-f, --create — Automatically force creation of the app if it doesn't already exist-e, --environment — The environment to deploy to--all — Deploy to all environmentstower runRun your code in Tower or locally
Arguments:
<app_name> — Name of a deployed app to run (uses ./Towerfile if omitted)--dir — The directory containing the Towerfile--local — Run this app locally-e, --environment — The environment to invoke the app in-p, --parameter — Parameters (key=value) to pass to the app-d, --detached — Don't follow the run output in your CLItower versionPrint the current version of Tower
tower teamsView information about team membership and switch between teams
tower teams listList teams you belong to
tower teams switchSwitch context to a different team
Arguments:
<team_name> (required) — Name of the team to switch totower mcp-serverRuns an MCP server for LLM interaction
Arguments:
-t, --transport — Transport mode-p, --port — Port for HTTP/SSE server (default: 34567)tower skillGenerate Claude Code skill files for AI agent integration
tower skill generateGenerate a SKILL.md describing how to use Tower with AI agents
npx claudepluginhub tower/tower-cliSets up CI/CD pipelines for DataRobot application templates using GitLab, GitHub Actions, and Pulumi. Includes simple path with Pulumi Cloud and GitHub Secrets, plus advanced GPG encryption.
Deploys apps to Render by analyzing codebases, generating render.yaml blueprints, and providing dashboard deeplinks. For Git-backed services, Docker images, databases, and cron jobs.
Operates Railway infrastructure: create projects, provision services and databases, manage object storage buckets, deploy code, configure environments and variables, manage domains, and troubleshoot failures via the Railway CLI.