Integrations

Lannzo MCP server

Confirmation on writesNode.js 22+STDIO

@lannzo/mcp runs on your own machine and gives an AI assistant exactly the access to Lannzo that you have — no more.

It reads projects, deployments and logs, and it can also create projects, deploy, manage environment variables, connect repositories and configure domains. Everything that changes something requires an explicit confirmation, so nothing is modified because an assistant guessed.

Requirements

  • Node.js 22 or newer.
  • A Lannzo account belonging to at least one organization.
  • An MCP-capable client: the ChatGPT desktop app, the Codex extension or CLI, Claude Desktop, or any other client that speaks MCP over STDIO.

Sign in once

npx lannzo login

The MCP server has no login of its own. It reuses the credential the Lannzo CLI writes to ~/.config/lannzo/config.json, saved with owner-only permissions and refused if those permissions are ever loosened.

Your browser opens, you approve the device code, and the token is stored. In automated environments you can skip the file entirely and set LANNZO_TOKEN, which takes precedence over it.

Connect a client

Pick the client you use and register the MCP server.

ChatGPT desktop app or Codex extension

  1. Open Settings.
  2. Go to MCP servers.
  3. Click Add server.
  4. Use these values:
FieldValue
Namelannzo
TypeSTDIO
Commandnpx
Arguments-y @lannzo/mcp
  1. Save, and restart the client if it was already open.

Codex CLI

If you already have the codex command installed:

codex mcp add lannzo -- npx -y @lannzo/mcp
codex mcp list

If you do not have it installed, run it through npx instead:

npx -y @openai/codex@latest mcp add lannzo -- npx -y @lannzo/mcp
npx -y @openai/codex@latest mcp list

Both routes register the same server. codex mcp list should show lannzo once it is connected.

How to use it

Once the server is connected, you can ask your assistant things like:

  • List my Lannzo organizations and their projects.
  • Show the latest deployments for web-panel.
  • Show me the error logs for deployment dpl_....
  • Deploy this directory to preview.
  • Set DATABASE_URL in production as a secret.
  • Add the domain app.example.com and show me the DNS records.

The assistant resolves the organization, project and deployment identifiers itself by listing them first, so you can refer to a project by name.

Reading is free, writing is not

Tools that only read run as soon as the assistant asks for them. Tools that change something require confirm: true in the call, and the reference below marks every one of them.

Two tools gate conditionally: set_environment_variable asks for confirmation only when the value is secret, and batch_environment_variables only when it replaces the existing set or writes a secret. Without it the call returns CONFIRMATION_REQUIRED and nothing changes.

Secret values are never returned. A secret variable is reported as configured, never with its contents, so a transcript or a model's context can never end up holding one.

Deploying from the assistant

deploy_upload deploys the authorized local directory by running the fixed npx lannzo deploy command. It only ever reads inside the workspace the server was authorized for, which defaults to the directory the server started in and can be set explicitly:

LANNZO_MCP_WORKSPACE=/path/to/your/project
npx lannzo deploy --organization <id> --project <id> --json
npx lannzo deploy --organization <id> --project <id> --prod --json

The MCP passes the explicit organization and project, adds --prod for production, and waits for the CLI's JSON result. The CLI uploads only missing files and applies .gitignore, .lannzoignore and its mandatory exclusions, including .env files, .git, dependencies, build output and .DS_Store. The MCP rejects symbolic links and paths outside the authorized workspace before the command starts; it never provides arbitrary command execution.

Tool reference

Grouped by what they touch. The last column says whether the tool needs a confirmation before it will run.

Platform and organizations

ToolWhat it doesConfirmation
get_platform_statusPublic platform status.Not required
list_organizationsOrganizations authorized by your credential.Not required

Projects

ToolWhat it doesConfirmation
list_projectsProjects in an organization.Not required
get_projectDetail for one project.Not required
create_projectCreate a project. The slug is generated from the name if omitted.Not required
update_projectChange the project's root directory, or reset it to the source root.Not required

Deployments and logs

ToolWhat it doesConfirmation
list_environmentsProduction and preview environments for a project.Not required
list_deploymentsDeployments for a project, newest first.Not required
get_deploymentDetail for one deployment.Not required
get_deployment_logsDeployment logs, up to 200 entries, filterable by source and level.Not required
deploy_repositoryDeploy the head commit of the connected repository to production.Required
create_github_deploymentDeploy an already synchronized GitHub commit to production.Required
deploy_uploadDeploy the authorized local workspace through `npx lannzo deploy`.Required
retry_deploymentRetry a deployment, which creates a new one.Required
cancel_deploymentCancel a deployment that is still running.Required

Environment variables

ToolWhat it doesConfirmation
list_environment_variablesList an environment's variables. Secret values are never returned.Not required
set_environment_variableCreate or replace one variable, for build, runtime, or both.For secret values
delete_environment_variableDelete a variable.Required
batch_environment_variablesCreate or update up to 250 variables atomically.To replace or write secrets
copy_environment_variablesCopy variables from one environment to another.Required

GitHub repositories

ToolWhat it doesConfirmation
list_repositoriesGitHub repositories the organization's installations can reach.Not required
list_repository_branchesBranches of a repository, with the head commit of each one.Not required
get_repository_connectionThe repository currently connected to a project, if any.Not required
connect_repositoryConnect a repository and branch, optionally deploying on each push.Required
update_repository_connectionEnable or disable auto-deploy without replacing the connection.To enable auto-deploy
disconnect_repositoryDisconnect the repository. Deployment history is preserved.Required

Runtime

ToolWhat it doesConfirmation
start_runtimeStart the runtime of an environment whose release is stopped.Required
restart_runtimeRestart the runtime, keeping the same artifact.Required
stop_runtimeStop the runtime and withdraw its traffic.Required

Domains

ToolWhat it doesConfirmation
list_domainsPlatform and custom domains for a project.Not required
add_domainAdd a custom domain and return the DNS records to create.Not required
verify_domainCheck DNS ownership and queue the certificate.Not required
check_domain_routingCheck that a verified domain's DNS points to Lannzo.Not required
remove_domainRemove a custom domain. The platform domain cannot be removed.Required

Log queries return at most 200 entries. Batch variable writes are capped at 250 variables and applied atomically: either all of them land or none do.

Credentials and scope

The server runs locally and talks to api.lannzo.com over HTTPS. Your credential never leaves your machine, and it is never passed to the model — the assistant sees tool results, not the token.

The scope of what the assistant can do is the scope of the credential you signed in with. It can never exceed your own permissions, and every call is attributed to you in the organization's audit record.

For local development against another environment, three variables change where the server points and which credential it uses:

LANNZO_API_URL=https://api.example.test
LANNZO_CONFIG_PATH=/path/to/config.json
LANNZO_TOKEN=lnz_...

Common issues

“Not authenticated” or “Authentication is required”

Sign in again, then restart the MCP client so it picks up the credential:

npx lannzo login

“codex” isn't recognized as a command

Use the npx form above instead of installing the client, or install it globally first.

The server doesn't show up or won't start

Check that Node.js 22 or newer is on the PATH the client uses, and that the command is npx with -y @lannzo/mcp as its arguments. Restart the client after any change.

“Path is outside the authorized MCP workspace”

deploy_upload refuses any directory outside the workspace the server was started in. Set LANNZO_MCP_WORKSPACE to the project you want to deploy and restart the client.

Updates

npx -y @lannzo/mcp resolves the latest version on every start. Pin the arguments to a specific version if you would rather control when it changes:

-y @lannzo/mcp@0.4.0