Lizard MCP
以下摘录自该仓库的 README(片段) · 在 GitHub 读完整 README →
An MCP server that lets ChatGPT, Claude and other MCP clients deploy and manage apps on Lizard (lizard.build).
Connect it once, then ask your assistant to ship a service, read logs, set secrets, scale replicas or attach a domain — in plain words.
Connect a client
The server speaks Streamable HTTP at POST /mcp, and stdio for clients that
spawn a local process instead (below). A hosted instance
runs at:
Every request carries a bearer token. A client that speaks OAuth gets one
itself — the server advertises where, so there is nothing to paste. Clients
that only send headers use a liz_ API key instead:
The dashboard creates the same thing under **Sandboxes → Get started → New API
key**. Either way the key is shown once.
Claude Code
Claude Code runs the OAuth flow on first use. To skip it and use a key:
Cursor and other clients configured by JSON
ChatGPT
ChatGPT connects to a URL and runs OAuth itself — no key to paste. It needs
developer mode and a registered connection; see
Publishing to Codex / ChatGPT below.
Against a local server
Run it as described in the next section, then use http://localhost:3000/mcp
in place of the hosted URL.
Check the connection
Without a token the same call returns 401 and a WWW-Authenticate header
pointing at the OAuth metadata. That is the server working, not failing.
Run it
For development with reload:
Run it over stdio
npm start serves HTTP. To have a client spawn the server instead, point it at
dist/stdio.js:
A spawned process has no browser to run OAuth in, so the token comes from the
environment and binds the process to one user. Without it the server still
starts and lists its tools — calling one then returns a message asking for a
key.
Configuration
| Variable | Default | What it does |
|---|---|---|
| PORT | 3000 | Port to listen on (HTTP only) |
| PUBLIC_URL | http://localhost:$PORT | The URL clients reach this server on. Sets the OAuth resource identifier, so it must match the real address in production. |
| PLATFORM_URL | https://lizard.build | The Lizard API this server talks to |
| LIZARD_TOKEN | — | API key for stdio mode, where there is no OAuth handshake. LIZARD_API_KEY works too. |
Tools
| Area | Tools |
|---|---|
| Account | whoami, workspace_list, project_list, project_create, project_pause, project_resume, workspace_pause, workspace_resume, region_list, billing_status, billing_summary |
| Services | service_list, service_show, service_create, service_set, service_rename, service_delete, service_pause, service_resume, service_sleep_status, service_sleep_set, service_scale, service_get_port, service_set_port, addon_create |
| Deploys | deploy_redeploy, deploy_restart, deploy_events |
| Logs and metrics | logs_tail, metrics_get |
| Secrets | secrets_list, secrets_set, secrets_delete, secrets_refs |
| Domains | domain_attach, domain_verify, domain_delete |
| Volumes | volume_list, volume_resize |
| Git | git_connect, git_checkout, git_status |
| Shell | ssh_exec |
| Config as code | config_apply |
Tool names use snake_case (not the MCP spec's permitted dots) to match OpenAI's function-name pattern ^[a-zA-Z0-9_-]{1,64}$, which some ChatGPT/Codex surfaces enforce directly.