Lizard MCP

io.github.lizard-build由 GitHub 帳號 lizard-build 發布v0.1.0更新於 Nov 6, 2026

Run isolated code and manage apps, databases and deployments on Lizard (lizard.build).

已驗證Streamable HTTP可網頁執行雲端與基礎設施開發者工具安全與監控

概覽

AI 產生的概覽

Lizard(lizard.build)的遠端 MCP 伺服器,讓助理部署與管理應用程式、在沙箱中執行程式碼,並操作 Lizard Git 儲存庫。

可以做什麼
  • 管理帳號與工作區:列出、建立、暫停、恢復和刪除工作區與專案,查看區域與帳務狀態
  • 維運服務與部署:建立、設定、擴縮、暫停和重啟服務,部署函式,使用範本,查看日誌與指標
  • 管理密鑰、網域與磁碟區:設定或刪除密鑰,綁定與驗證網域,修改 DNS 記錄,建立與擴充磁碟區
  • 在沙箱中執行程式碼:建立沙箱、執行指令、讀寫檔案、暫停、快照、分支、對外開放連接埠和刪除
  • 使用 Lizard Git:列出與建立儲存庫、讀取與提交檔案、建立與合併拉取請求、查看 CI 執行
  • 以設定即程式碼方式套用設定,並連接 GitHub 儲存庫
適用情境
適合想用自然語言請助理在 Lizard 上發布與維運服務的情況,例如部署、查看日誌、設定密鑰、擴縮、在沙箱執行臨時腳本,或提交程式碼與建立拉取請求,而不必切換到命令列或主控台。
執行需求
需要遠端 Streamable HTTP 端點(託管於 lizard.build/mcp),或以 Node.js 在本機啟動 stdio 程序。必須驗證:支援 OAuth 的用戶端可自行完成,否則使用 liz_ API 金鑰作為 Authorization bearer 標頭(stdio 模式下為 LIZARD_TOKEN 或 LIZARD_API_KEY)。需要 Lizard 帳號。
安裝前請注意
工具會建立、修改和刪除真實的雲端資源,刪除類工具需要明確的 confirm 參數;刪除專案會把服務放入回收筒,但會立即刪除沙箱、磁碟區與快照。沙箱與部署會使用計費資源,需要付費時錯誤會指向瀏覽器結帳。密鑰與憑證預設會被遮蔽,除非設定 reveal。沙箱指令以 root 執行,逾時或取消會銷毀沙箱及其檔案。API 金鑰無法變更已購買網域的 DNS,需要 OAuth。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Lizard MCP,將其新增到工作區。
  2. 連接 所需的 憑證。它們會被私密儲存,絕不會在公開頁面上展示。
  3. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/io.github.lizard-build%2Flizard-mcp/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。 客戶端會在首次連接時完成 OAuth 登入。

{
  "mcpServers": {
    "lizard": {
      "type": "http",
      "url": "https://employ-woman-g1q2.us-east-1.onlizard.com/mcp"
    }
  }
}

README

Lizard MCP

An MCP server that lets ChatGPT, Claude and other MCP clients deploy and manage apps, run code in Lizard Sandboxes and work with Lizard Git repositories on Lizard (lizard.build).

Connect it once, then ask your assistant to ship a service, read logs, set secrets, scale replicas, attach a domain, run a script in a sandbox or open a pull request — 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:

https://lizard.build/mcp

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:

bash
lizard keys create my-mcp-key

The dashboard creates the same thing under Sandboxes → Get started → New API key. Either way the key is shown once.

Claude Code

bash
claude mcp add --transport http lizard https://lizard.build/mcp

Claude Code runs the OAuth flow on first use. To skip it and use a key:

bash
claude mcp add --transport http lizard https://lizard.build/mcp \  --header "Authorization: Bearer liz_your_key"

Cline

Follow the Cline installation guide to connect the hosted server with a bearer token. Use Cline's streamableHttp transport, keep tool approval on, then check the connection with whoami. No local build is needed.

Cursor and other clients configured by JSON

json
{  "mcpServers": {    "lizard": {      "url": "https://lizard.build/mcp",      "headers": { "Authorization": "Bearer liz_your_key" }    }  }}

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

bash
curl -sS -X POST https://lizard.build/mcp \  -H "Authorization: Bearer liz_your_key" \  -H "Content-Type: application/json" \  -H "Accept: application/json, text/event-stream" \  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

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

bash
npm installnpm run buildnpm start

For development with reload:

bash
npm run dev

Run it over stdio

npm start serves HTTP. To have a client spawn the server instead, point it at dist/stdio.js:

json
{  "mcpServers": {    "lizard": {      "command": "node",      "args": ["/path/to/lizard-mcp/dist/stdio.js"],      "env": { "LIZARD_TOKEN": "liz_your_key" }    }  }}

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

VariableDefaultWhat it does
PORT3000Port to listen on (HTTP only)
PUBLIC_URLhttp://localhost:$PORTThe URL clients reach this server on. Sets the OAuth resource identifier, so it must match the real address in production.
PLATFORM_URLhttps://lizard.buildThe 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

AreaTools
Accountwhoami, workspace_list, workspace_create, workspace_delete, project_list, project_create, project_delete, project_pause, project_resume, workspace_pause, workspace_resume, region_list, billing_status, billing_summary
Workspace limitsworkspace_limits_get, workspace_limits_set, workspace_resale_pricing_get, workspace_resale_pricing_set
Servicesservice_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
Deploysdeploy_redeploy, deploy_restart, deploy_events
Functionsfunctions_deploy, functions_invoke, functions_logs, functions_list
Templatestemplate_list, template_show, template_deploy
Logs and metricslogs_tail, metrics_get
Secretssecrets_list, secrets_set, secrets_delete, secrets_refs
Domainsdomain_attach, domain_verify, domain_delete, domain_owned_list, domain_dns_list, domain_dns_update
Volumesvolume_list, volume_create, volume_resize, volume_delete
GitHub connectiongit_connect, git_checkout, git_status
Lizard Gitrepo_list, repo_create, repo_show, repo_delete, repo_files, repo_read_file, repo_commit, repo_commits, pr_list, pr_create, pr_show, pr_merge, ci_run_list, ci_run_show
Sandboxessandbox_list, sandbox_show, sandbox_create, sandbox_exec, sandbox_read_file, sandbox_write_file, sandbox_list_files, sandbox_delete, sandbox_set_timeout, sandbox_pause, sandbox_resume, sandbox_snapshot, sandbox_snapshot_list, sandbox_snapshot_delete, sandbox_fork, sandbox_expose_port, sandbox_unexpose_port
Config as codeconfig_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.

Every tool includes a title in both title and annotations.title. Read tools set readOnlyHint: true; all write tools set destructiveHint: true so clients can ask before changing resources. Shell access to app services is unavailable, so the server exposes no service-shell tool. Use sandbox_exec to run commands in Lizard Sandboxes.

Destructive tools — project_delete, workspace_delete, service_delete, secrets_delete, domain_delete, volume_delete, sandbox_delete, sandbox_snapshot_delete, repo_delete, and domain_dns_update with remove — require an explicit confirmation argument, so a client cannot delete anything or run arbitrary commands by accident.

project_delete puts the project's services and databases in trash for 3 days, but deletes its sandboxes, their volumes and snapshots at once.

billing_status is read-only: it shows the plan (Pro at $19/month with $19 of usage included each month, Pro 5x at $99 with $99, Pro 20x at $499 with $499, the trial, prepaid credits until November 1, 2026, or enterprise), the tier and the Billing link. Starting, changing tier, paying for and cancelling Pro happen in the browser. When the account has to pay before it can create something, the tool error gives the platform's sentence with the page to open on its last line, and structuredContent.error carries the code (PAYMENT_REQUIRED), paymentStatus and the links.

What the Lizard CLI has and this server does not

test/parity/cli-coverage.json maps every Lizard CLI command to the tools that cover it, or says why none does. The main gaps, on purpose:

  • lizard up and other commands that read local files: a remote server never sees them. Deploy from a GitHub or Lizard Git repo instead, or commit files with repo_commit.
  • API keys (lizard keys), payments (lizard billing changes), agent credentials (lizard agents): they handle secrets or money and belong in the browser or a terminal.
  • Lizard Git admin (webhooks, branch rules, collaborators, CI secrets and environments, releases, labels, issues): the Lizard CLI and Lizard SDK cover them.
  • Interactive tools: sandbox shell, VNC and desktop streams, live log streams.

Bought domains: an API key can read their DNS records but not change them. Changes (domain_dns_update, domain_attach on a bought domain) need a client connected with OAuth.

Lizard Git

repo_*, pr_* and ci_* reach Lizard Git (lizard.build/git) with the caller's own token, as Authorization: Bearer. Lizard Git refuses API keys with scopes. Every commit is made on the server with repo_commit; there is no clone. To deploy a repository, call service_create with repoUrl set to lizard:owner/name. LIZARD_GIT_URL points the server at another Lizard Git (default <PLATFORM_URL>/git).

Sandbox workflow

Lizard (lizard.build) provides Lizard Sandboxes for short-lived code execution. These resources are separate from app services. Start with project_list, then call sandbox_create with the chosen project and confirm: true. Keep the returned sandboxId for later calls.

json
{"name":"sandbox_create","arguments":{"project":"YOUR_PROJECT_ID","lifetimeMs":300000,"confirm":true}}

Use sandbox_write_file to write a script, sandbox_exec to run it, and sandbox_read_file to read its results. Finish with sandbox_delete. Create, execute, write, and delete need the user's approval before the client sets confirm: true. The MCP server does not open a confirmation dialog.

Sandboxes use the interpreter template and size small unless template and size say otherwise, with /workspace as the default path. They expire after five minutes by default; lifetimeMs accepts 60,000–86,400,000 milliseconds (a day), and sandbox_set_timeout changes it later. Expiry or deletion loses all files except those on an attached volume. Creation uses billed cloud resources. Host files, environment variables, and access tokens stay out of the sandbox.

sandbox_pause saves memory, processes and files and stops the sandbox; sandbox_resume continues it. sandbox_snapshot saves a running sandbox to start new ones from (sandbox_create with snapshotId), and sandbox_fork starts live copies. sandbox_expose_port gives a port an HTTPS URL that carries its access token (other clients send it as X-Lizard-Access-Token). Pause, resume and snapshot wait up to two minutes for the platform to finish.

Commands run as root within the sandbox, default to a 60-second timeout, and accept up to 120 seconds. Cancellation, timeout, or an uncertain command request destroys the whole sandbox to stop remote work. The confirm field covers this loss of files. Use a sandbox created for the task; keep needed files elsewhere first. A normal nonzero exit code preserves the sandbox. Access or input rejection does not delete it. The server never retries commands automatically.

Text reads and writes accept up to 64 KiB of UTF-8. Each output stream is capped at 64 KiB and includes a truncation flag. All paths refer to the sandbox. sandbox_show and sandbox_list help check an uncertain result before retrying. sandbox_delete treats a sandbox that is already gone as a successful no-op.

Service and sandbox metadata responses mask connection credentials, environment values and build-log snippets, including create, update, pause and resume responses. Credential query parameters in URLs are masked too. Values inside environment and connection maps become strings (***), including numeric and boolean values; explicit reveal returns the original values and types. For credentials, call service_show or sandbox_show with reveal: true only when the user asks for them. secrets_list also masks values unless reveal: true is set. Port tools return access credentials when the user asks to expose a sandbox port.

The HTTP server handles each call with its caller's Bearer token, including OAuth tokens and API keys. It keeps no shared sandbox handles or global SDK credentials. A disconnected client must reconnect to delete its sandbox; its finite lifetime remains the cleanup backstop.

Auth

The server speaks OAuth 2.1 as an MCP protected resource (RFC 9728). It holds no secrets of its own: every request carries a bearer token, and Lizard decides whether that token is valid. Both OAuth-issued tokens and liz_ API keys work.

Each request builds a fresh server bound to the caller's token, so one process serves many users without sharing state.

Over stdio there is no OAuth and no per-request token — the key comes from the environment and the process serves one user, as described above.

Tests

bash
npm test        # unit and MCP transport tests, docs and CLI parity checksnpm run typechecknpm run buildnpm run audit:cli   # every Lizard CLI command mapped? (needs the CLI on PATH)

npm run audit:live calls every tool against the real platform: it creates a workspace named mcp-audit-<time>, works only inside it, deletes it at the end and writes a report to audit-report.json. It needs LIZARD_TOKEN (an API key with no scopes) and uses billed resources for about half an hour. Pass --only sandbox,volume to run some groups.

To test real sandbox resources, set LIZARD_API_KEY, LIZARD_PROJECT_ID, and LIZARD_LIVE_TESTS=1, then run npm exec -- vitest run test/live/sandboxes.test.ts. The test uses stdio MCP to create a sandbox, run shell and file tools, check timeout cleanup, and delete it. It uses billed resources; it does not deploy the MCP server.

test/manual/mcp-inspector.md covers end-to-end checks against a stub platform and a live one.

Use it as a package

Every new version in package.json is released on main as @lizard-build/mcp (a GitHub release with the npm pack file attached, see .github/workflows/release.yml). The package exports getServer(token), which builds the MCP server for one caller, and setPlatformUrl(url) for a host that runs it in-process. dragonlabs-platform installs it to serve the tools at https://lizard.build/mcp: to ship a tool change there, bump the version here, then point the platform's server/package.json at the new release.

Deployed instance

Since 2026-11 the hosted server is part of the Lizard platform, at https://lizard.build/mcp: dragonlabs-platform installs this package (see above) and serves it from server/src/routes/mcp.ts. There is no separate service to deploy.

The first address, https://employ-woman-g1q2.us-east-1.onlizard.com/mcp, still works: the platform answers on it with that address as the resource, so connectors added with it keep their sign-in.

Publishing to Codex / ChatGPT

.codex-plugin/plugin.json is in place. This is a hosted remote MCP server (not a bundled stdio one), so it's wired via .app.json + a registered connection, not .mcp.json. That last step needs a human in a real ChatGPT session — it isn't scriptable:

  1. In ChatGPT: Settings → Security and login → Developer mode (turn it on).
  2. Go to ChatGPT Plugins → + → enter the MCP server URL above → complete the connection.
  3. Copy the resulting plugin_asdk_app_... ID from the browser URL.
  4. Add .app.json at the repo root:
    json
    { "app": { "id": "plugin_asdk_app_..." } }
  5. Add "apps": "./.app.json" to .codex-plugin/plugin.json.
  6. Test locally via a marketplace entry (@plugin-creator, or hand-write ~/.agents/plugins/marketplace.json), then submit through the plugin submission portal for public review.

License

MIT

來源:README.md,提交 76b8fc0

工具

0
該伺服器需要登入,因此 SourceWeft 無法在沒有帳號的情況下讀取其工具,也未收錄。已連接帳號所能看到的內容可能因帳號及其權限而異。

版本歷史

1
  1. v0.1.0最新Oct 16, 2026

評分

已滿足適用檢查項的 85%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分