npm webcake-landing-mcpstreamable-httpMITupdated 14d ago
Describe a landing page in plain words β your AI builds it, checks it, and ships it straight to WebCake.
What can you do with Webcake Landing?
WebCake Landing MCP
English Β· TiαΊΏng Viα»t
Describe a landing page in plain words β your AI builds it, checks it, and ships it straight to WebCake.
β If this saves you an afternoon of dragging boxes, give it a star β it's a one-dev project and every star keeps it alive.
"Build a landing page for my coffee shop β a hero with a sign-up button, a 3-feature section, and a lead form. Save it to my workspace."
β¦and a real, editable WebCake page appears in your account. No dragging boxes, no learning the schema, no hand-writing JSON.
π§© How it works
This server is the bridge between your AI assistant and WebCake. The AI never guesses what a WebCake page looks like β it asks this MCP, which knows the entire element model, validates the result, and saves it for you.
You AI assistant webcake-landing MCP WebCake
ββββββββ prompt ββββββββββββββ tools ββββββββββββββββββββββββ API ββββββββββββ
β idea β ββββββββΊ β Claude / β βββββββΊ β β’ knows the element β βββββΊ β a real β
β β β Cursor / β β model + AI hints β β editable β
β β ββββββββ β Windsurf β βββββββ β β’ builds + validates β βββββ β page in β
ββββββββ page URL ββββββββββββββ result β β’ saves to your acct β β WebCake β
ββββββββββββββββββββββββ ββββββββββββ
- You ask in plain language β goal, brand, sections, CTA, form fields.
- The AI learns the model from the MCP: the element catalog, the absolute-positioning canvas, the event vocabulary β so it builds a real WebCake page, not a guess.
- It assembles + validates the full
{ page, popup, settings, options }JSON.validate_pagecatches off-canvas boxes, dangling CTAs, and missing form fields before anything is saved. - It persists to your WebCake account β dry-run preview first, then for real.
- You get an editor link β open it, tweak, publish. The AI did the heavy lifting.
Why it's reliable
| π Knows the real model | Serves WebCake's actual element catalog (40+ types β hero, form, countdown, gallery, product listβ¦), each with its exact specials and AI hints, drawn straight from the editor's renderers. |
| β Validates before saving | Structural + semantic checks (unique ids, on-canvas layout, working CTAs, unique form fields) so the page isn't broken when it lands. |
| π‘οΈ Safe by default | Every write is dry-run first (preview the request, token masked) β nothing touches your account until you confirm. |
| βοΈ Edits surgically | Ask for one change ("make the CTA green") and it edits only that element β every other id, coordinate, and block stays exactly as it was. |
π‘ Lead-gen, events, invitations, app promos β or selling COD/online? It speaks WebCake's commerce model too (product lists, variations, cart).
β¨ What you can build
One sentence to your AI β a finished, editable WebCake page. A taste of what people ship with it:
| Just say⦠| |
|---|---|
| π§² Lead-gen landing | "A SaaS waitlist page β hero, 3 benefits, an email-capture form." |
| π COD / online store | "A one-product page for my skincare serum β gallery, price, variations, an order form with cart." |
| ποΈ Event / webinar | "A registration page for Saturday's webinar β countdown, agenda, sign-up form." |
| π Invitation | "A wedding invite β names, date, a map, an RSVP form." |
| π± App promo | "A page for my fitness app β phone mockups, feature list, App Store + Google Play buttons." |
| β‘ Flash sale | "A flash-sale page β big countdown, discounted product grid, a sticky Buy button." |
| π Link-in-bio | "A link-in-bio for my creator profile β avatar, short bio, 5 link buttons, socials." |
| π Product launch | "A launch page for v2 β hero, what's-new list, an early-access form." |
β¦then "make the CTA green" or "add a 4th feature" and it edits only that block β every other id and coordinate stays exactly where it was.
π€ Works in Claude Desktop, Claude Code, Cursor, Windsurf, Augment, Codex, Antigravity, Gemini CLI, Cline, Kiro, OpenCode, or any MCP-capable client β and the reference + generation tools need zero setup, so you can try it before ever pasting a token.
Under the hood
MCP (Model Context Protocol) server that teaches AI agents how to build a complete WebCake landing-page source JSON from a requirement β and persist it to a WebCake backend.
It exposes the element catalog, per-element usage hints + specials, the full page JSON Schema,
valid element/page skeletons, a page validator, and tools to create or edit pages on the backend.
The AI agent produces the full { page, popup, settings, options, cartConfigs } JSON; create_page
persists it and auto-publishes (build + publish_html) so the preview renders immediately (the edit
tools save source-only β re-publish via publish_page after edits).
| Method | Best for | Auth |
|---|---|---|
| npx (local) β runs on your machine | Personal daily use, full control | browser login, a JWT, or none (reference tools) |
| Hosted URL β use our live server, nothing to install | No Node.js, teams, the claude.ai dialog | your personal ?jwt= link / x-webcake-jwt header |
The reference + generation tools (get_generation_guide, list_elements, validate_page, β¦) and the ingest tools (ingest_html, ingest_url β turn an existing HTML or URL into a layout anchor so the AI can recreate or adapt it) work with zero config; only the persistence tools (create_page, update_page, add_section, patch_page, publish_page, list_pages, find_pages, get_page, list_organizations) need a token. Credentials resolve in order: per-request header β env var β saved auth.json (login).
π Get connected β the 2 main ways
Pick one. Both hand your AI tool (Claude, Cursor, β¦) the full Webcake landing toolkit. No coding.
β npx β runs on your machine (recommended for personal use)
Zero install, always the latest version, needs Node.js 18+. One line grabs your token and writes the IDE config:
# Interactive β pick environment, log in via browser (or paste a JWT), pick IDE(s)
npx -y webcake-landing-mcp install
# Non-interactive β configure every supported IDE at once (env + token via flags)
npx -y webcake-landing-mcp install --ide all --env prod --jwt <your-jwt>
# Remove the server from every IDE config
npx -y webcake-landing-mcp uninstall
It writes a webcake-landing entry into the right config file for each target: claude-desktop,
claude-code, cursor, windsurf, augment (VS Code), codex, antigravity, gemini (Gemini CLI),
cline, kiro, opencode, or all. Flags: --ide, --env, --jwt, --org-id,
--api-base/--app-base, --npx/--local, -y β see install --help.
Just want to run the server (configure by hand later)? npx -y webcake-landing-mcp
π οΈ Hand-written per-IDE config, shell-script installers (
install.sh/install.ps1), or a cloned local build β docs/manual-install.md.
β‘ Remote URL β¦/mcp?jwt= β hosted, nothing to install
The server is already live at https://mcp.toolvn.io.vn/mcp β no Node.js, no machine to keep awake.
Grab your personal link (your token is baked in) and paste it into your client's Add custom connector / config:
https://mcp.toolvn.io.vn/mcp?jwt=<YOUR_TOKEN>
Two ways to get the link:
- Easiest β open https://webcake.io/mcp-remote in your Webcake dashboard β it builds & copies the link for you.
- By hand β see the step-by-step guide: docs/connect-mcp.md.
Optional extras: &env=prod, &org_id=β¦, &api_base=β¦. Hand each teammate a link with their own jwt β
per-user, no OAuth. Clients that support headers should send the token as x-webcake-jwt instead of
putting it in the URL β the full header β env mapping is in docs/configuration.md.
β Best for: no Node.js, team/shared use, the claude.ai connector dialog (URL-only, no headers). β οΈ The link contains your personal token β treat it like a password, always use HTTPS.
βοΈ Configuration
The quick version β only the persistence tools need any of this:
npx -y webcake-landing-mcp login # opens the browser once, saves the token to ~/.webcake-landing-mcp/auth.json
β¦or set WEBCAKE_ENV (local | staging | prod β fills in all base URLs) + WEBCAKE_JWT.
For publish_page to actually put a page live, a build host is needed (it renders the
app/app_css that the live publish_html route requires):
prodpreset auto-configureshttps://build.webcake.ioβ no extra setup (the preset applies when the env resolves toprod:WEBCAKE_ENV=prod,--env prod, orx-webcake-env: prod).- For staging/local, set
WEBCAKE_BUILD_BASE=<url>or send thex-webcake-build-baseheader per request. - Without it,
publish_pagefalls back to a legacy source-only save withrendered:false, live:false+ a warning β nothing goes live. - A page is only permanently live with a
custom_domain; without one the returned/preview/<page_id>link expires ~10 minutes after the publish.
Everything else β the full env-var table, environment presets, per-request headers for the hosted
server, the login browser flow (+ backend contract), and how to grab a JWT by hand β lives in
docs/configuration.md.
π Docs
| Guide | What's inside |
|---|---|
| Connect your IDE / claude.ai | Step-by-step connection for every client (npx & hosted URL), troubleshooting table. |
| Configuration | Env vars, --env presets, browser login, per-request headers, getting a JWT. |
| Tools reference | All 23 tools in detail + the step-by-step workflow + model notes. |
| Usage examples | Three end-to-end walkthroughs: build from a brief, surgical edit, inspect a type. |
| Manual / advanced install | Shell installers, cloned builds, hand-written per-IDE config. |
| Page-element schema | The full element-model reference (+ every special/event). |
π§° The tools at a glance
23 tools in five groups β full descriptions in docs/tools.md:
| Group | Tools | Needs |
|---|---|---|
| Reference | get_generation_guide Β· list_elements Β· get_element Β· get_page_schema |
nothing |
| Generation | new_element Β· new_page_skeleton Β· validate_page Β· layout (exact centering/row/grid/stack coordinates, both breakpoints) |
nothing |
| Media | search_images (real Pexels stock photos) Β· get_icon_svg (Material Symbols / Font Awesome icon names β inline SVG via Iconify) Β· upload_images (re-host external images, data: URIs, or local file paths from the user's machine β files into your media collection when Webcake creds and an org are available; the org is required and must match the page's, so settle it up front β 1 org auto-selects, 2+ with none chosen returns organization_required + the list; no JWT β the public CDN) Β· render_preview (screenshot a page/URL so the model can see + compare it) |
nothing |
| Ingest | ingest_html Β· ingest_url (recreate an existing page) |
nothing |
| Persistence | list_organizations Β· create_page Β· list_pages Β· find_pages Β· get_page Β· update_page Β· add_section Β· patch_page Β· publish_page |
WEBCAKE_API_BASE + WEBCAKE_JWT |
Every write defaults to dry_run=true β it previews the exact request (token masked) and only
touches your account when you re-run with dry_run=false.
Suggested prompt
Build me a WebCake landing page for <brand/offer>. Use the webcake-landing MCP: call
get_generation_guide,new_page_skeleton, thenget_elementfor each element type you use, assemble the{ page, popup, settings, options }JSON,validate_pageuntil zero errors, thencreate_page(dry-run first).
β Like the idea? Drop a star
This is a solo, open-source project β every β genuinely keeps it moving and helps other builders discover it.
- β Star the repo β 2 seconds, huge motivation.
- π Open an issue β a bug, a missing element type, or just an idea.
- π Share it with anyone still building landing pages box by box.
Built with β€οΈ for the WebCake community. Thanks for being here.
Install
Add Webcake Landing to your client. Pick the one you use.
{
"servers": {
"webcake-landing-mcp": {
"type": "http",
"url": "https://mcp.toolvn.io.vn/mcp"
}
}
}Add to `.vscode/mcp.json` in your workspace.
claude mcp add webcake-landing-mcp -- npx -y webcake-landing-mcpcodex mcp add webcake-landing-mcp -- npx -y webcake-landing-mcpamp mcp add webcake-landing-mcp -- npx -y webcake-landing-mcp{
"mcpServers": {
"webcake-landing-mcp": {
"command": "npx",
"args": [
"-y",
"webcake-landing-mcp"
]
}
}
}Add to `claude_desktop_config.json`, then restart Claude Desktop.
{
"mcpServers": {
"webcake-landing-mcp": {
"command": "npx",
"args": [
"-y",
"webcake-landing-mcp"
]
}
}
}Add to `~/.cursor/mcp.json`, or `.cursor/mcp.json` for a single project.
{
"mcpServers": {
"webcake-landing-mcp": {
"command": "npx",
"args": [
"-y",
"webcake-landing-mcp"
]
}
}
}Add to `~/.codeium/windsurf/mcp_config.json`.
{
"mcpServers": {
"webcake-landing-mcp": {
"command": "npx",
"args": [
"-y",
"webcake-landing-mcp"
]
}
}
}Add to `cline_mcp_settings.json` via the MCP Servers panel.
{
"mcpServers": {
"webcake-landing-mcp": {
"command": "npx",
"args": [
"-y",
"webcake-landing-mcp"
]
}
}
}Add to `~/.gemini/settings.json`.
{
"mcpServers": {
"webcake-landing-mcp": {
"type": "local",
"command": "npx",
"args": [
"-y",
"webcake-landing-mcp"
],
"tools": [
"*"
]
}
}
}Add to `~/.copilot/mcp-config.json`, or run `/mcp add` inside the CLI.
{
"context_servers": {
"webcake-landing-mcp": {
"command": {
"path": "npx",
"args": [
"-y",
"webcake-landing-mcp"
]
}
}
}
}Add to your Zed `settings.json`.
npx -y webcake-landing-mcpRun `goose configure`, choose **Add Extension β Command-line Extension**, and paste this command.
Score
39 / 100
Incomplete
- Documentation25/25
- Maintenance25/25
- Trust13/20
- Capability0/15
- Install experience15/15
- Documents what it does and how to connect
- Has a resolvable package or endpoint
- Exposes at least one tool, prompt or resource
- README has substantive content
- Includes a code example
- Documents its configuration
- Mentions credentials or security posture
- Last commit 7 days ago
- Has a release history
- Repository is not archived
- Licensed MIT
- Namespace verified in the official MCP registry
- Claimed by its owner
- Published under an organisation
- 0 tool(s) documented
- Provides prompt templates
- Provides resources
- 18 documented install method(s)
- Published to a package registry
- Offers a hosted endpoint β no local install
Version history
| Versions | Published |
|---|---|
| 1.5.2Latest | Aug 25, 2026 |
| 1.5.1 | Aug 24, 2026 |
| 1.5.0 | Jul 23, 2026 |
| 1.4.0 | Jul 23, 2026 |
| 1.3.0 | Jul 17, 2026 |
| 1.2.1 | Jun 21, 2026 |
| 1.2.0 | Jun 21, 2026 |
| 1.1.0 | Jun 20, 2026 |
| 1.0.84 | Jun 17, 2026 |
| 1.0.83 | Jun 16, 2026 |
| 1.0.82 | Jun 16, 2026 |
| 1.0.81 | Jun 16, 2026 |
| 1.0.80 | Jun 16, 2026 |
| 1.0.79 | Jun 15, 2026 |
| 1.0.78 | Jun 15, 2026 |
| 1.0.77 | Jun 15, 2026 |
| 1.0.76 | Jun 15, 2026 |
| 1.0.75 | Jun 15, 2026 |
| 1.0.74 | Jun 13, 2026 |
| 1.0.73 | Jun 13, 2026 |
| 1.0.72 | Jun 13, 2026 |
| 1.0.71 | Jun 13, 2026 |
| 1.0.70 | Jun 13, 2026 |
| 1.0.69 | Jun 12, 2026 |
| 1.0.68 | Jun 12, 2026 |
| 1.0.67 | Jun 12, 2026 |
| 1.0.66 | Jun 12, 2026 |
| 1.0.65 | Jun 12, 2026 |
| 1.0.64 | Jun 12, 2026 |
| 1.0.63 | Jun 11, 2026 |
| 1.0.62 | Jun 11, 2026 |
| 1.0.61 | Jun 11, 2026 |
| 1.0.60 | Jun 11, 2026 |
| 1.0.59 | Jun 11, 2026 |
| 1.0.58 | Jun 11, 2026 |
| 1.0.57 | Jun 11, 2026 |
| 1.0.56 | Jun 11, 2026 |
| 1.0.55 | Jun 10, 2026 |
| 1.0.54 | Jun 10, 2026 |
| 1.0.53 | Jun 10, 2026 |
| 1.0.52 | Jun 10, 2026 |
| 1.0.51 | Jun 10, 2026 |
| 1.0.50 | Jun 10, 2026 |
| 1.0.49 | Jun 10, 2026 |
| 1.0.48 | Jun 10, 2026 |
| 1.0.47 | Jun 10, 2026 |
| 1.0.46 | Jun 9, 2026 |
| 1.0.45 | Jun 9, 2026 |
| 1.0.44 | Jun 9, 2026 |
| 1.0.43 | Jun 9, 2026 |
| 1.0.42 | Jun 9, 2026 |
| 1.0.41 | Jun 9, 2026 |
| 1.0.40 | Jun 9, 2026 |
| 1.0.39 | Jun 8, 2026 |