Skip the install. Get this working in under 2 minutes.
Start a free trial on cloud.anythingmcp.com, add the Webflow in one click, then point your AI client (Claude, ChatGPT, Copilot or Cursor) at the generated MCP endpoint. No Docker, no git clone, zero engineering experience required.
Summary
Let your AI work on a Webflow site: read the site, its pages and SEO settings, CMS collections and items, forms and submissions, assets, and e-commerce products and orders; draft and update CMS items, and publish items or the whole site once you agree. Uses a site API token.
Try asking
Example prompts for Webflow
Click any prompt to copy it. Paste into Claude, ChatGPT, Cursor, Gemini, Copilot or OpenClaw to run it against this connector.
Claude is AI and can make mistakes. Please double-check responses.
💡 No install? Use cloud.anythingmcp.com directly. Sign in, click Connectors → Webflow, paste your credentials, mint an MCP API key and you're done. No Docker, no
git clone, no local server.
Webflow + Gemini
Let your AI work on a Webflow site: read the site, its pages and SEO settings, CMS collections and items, forms and submissions, assets, and e-commerce products and orders; draft and update CMS items, and publish items or the whole site once you agree. Uses a site API token.
Prerequisites
See the full setup instructions baked into the connector (visible in the in-app store when you select the connector). The required environment variables for this connector are:
WEBFLOW_API_TOKEN
Step 1 — Get credentials
- Sign in at https://webflow.com/dashboard, hover the site and click its gear icon to open Site settings. You need to be a site administrator.
- In the left sidebar choose Apps & integrations, scroll down to API access at the bottom of the page and click Generate API token.
- Name the token (for example "AnythingMCP") and choose these scopes:
sites:read,sites:write(to publish the site)pages:read,pages:write(for page settings)cms:read,cms:write(to create, change, publish, unpublish or delete items)forms:read,assets:readecommerce:read(only on an e-commerce site)
- Click Generate token, copy the token right away and paste it into
WEBFLOW_API_TOKENwithout the word Bearer, then install the connector. - Start with
webflow_get_token_info: it shows the scopes and the site id the token grants. Thenwebflow_list_sitesreturns the site's details; itsidis thesite_idthe other tools take.
Scopes: scopes cannot be added to a token later. If a tool answers 403 missing_scopes, generate a new token with the missing scope and paste it into WEBFLOW_API_TOKEN.
Read-only setup: tick only the :read scopes and switch off webflow_publish_site, webflow_update_page_settings, webflow_create_item, webflow_update_item, webflow_publish_items, webflow_create_live_item and webflow_update_live_item.
Switched off at install: webflow_delete_item, which deletes a CMS item for good, and webflow_unpublish_live_item, which takes a published item off the website (it stays in the CMS as a draft). Turn them on only if the AI should delete or unpublish items.
One site per token: a site token only reaches the site it was generated on. A site can have up to 5 tokens, and a token expires after 365 days without use. For several sites, install the connector once per site.
Plans: the API works on every site plan, the free Starter plan included. The CMS tools need a plan with the CMS: Starter includes a small one (20 collections, 50 items), Basic none. On Starter, Webflow may refuse publishing single items (webflow_publish_items, webflow_create_live_item, webflow_update_live_item, webflow_unpublish_live_item), as it lists this as a feature of the paid CMS plans: publish the whole site instead. Products and orders need an e-commerce site plan; other sites answer 409.
Staged and live content: every CMS item has a staged version (what editors see) and, once published, a live version on the website. webflow_create_item and webflow_update_item change only the staged content, so nothing changes on the public site; new items are drafts. webflow_publish_items puts chosen items live, and webflow_publish_site publishes every staged change of the site, pages and items. webflow_create_live_item and webflow_update_live_item write straight to the public site. Marking a published item as a draft does not take it off the site; archiving it does, at the next site publish. webflow_list_items shows the staged items, webflow_list_live_items what visitors see.
Publishing is public: confirm first. Before the AI publishes the site or items, writes live items or changes page settings (titles, slugs, SEO and Open Graph texts with webflow_update_page_settings), it tells you exactly what will change on the website and waits for your yes. Webflow accepts one successful site publish per minute.
Field data: an item's content is keyed by each field's slug from webflow_get_collection, not by its display name; name and slug are required for a new item. Rich text is HTML, a reference takes an item id, and a new image is a public URL (at most 4 MB) given as {"url": "https://..."}. Changing an item's slug breaks links to the old URL.
Locales: on a localized site webflow_get_site lists the locales. Without one, the tools use the primary locale.
Rate limits: per token, 60 requests a minute on the Starter and Basic site plans, 120 on the CMS, e-commerce and Business plans. Over the limit Webflow answers 429 with a Retry-After header, usually 60 seconds: wait and try again. List tools return at most 100 entries per page.
Common errors: 400 names the field at fault: an unknown field slug, a value in the wrong format, or a missing name or slug. 401 means the token is wrong, revoked or expired: generate a new one under Site settings → Apps & integrations → API access. 403 (missing_scopes or forbidden) means the token lacks a scope (generate a new token with it) or the site plan does not include the feature. 404 is a wrong id, or an id from another site. 409 means the request clashes with the site's state, for example e-commerce calls on a site without e-commerce. 429 is the rate limit: wait for the Retry-After time.
The connector does not create or change collections and fields, does not edit page content, components or custom code, does not upload or delete assets, does not change form submissions or edit products and orders, and does not handle webhooks, comments or analytics.
Step 2 — Install the adapter
curl -fsSL https://raw.githubusercontent.com/HelpCode-ai/anythingmcp/main/docker-compose.quickstart.yml -o docker-compose.yml
printf 'JWT_SECRET=%s\nENCRYPTION_KEY=%s\n' "$(openssl rand -hex 32)" "$(openssl rand -hex 32)" > .env
docker compose up -d
Step 3 — Add the connector in Gemini
Your server URL: in AnythingMCP, open MCP Servers → the server this connector is on, and copy its URL (
https://cloud.anythingmcp.com/mcp/…). Use it wherever this guide showsYOUR_SERVER_ID.
Gemini CLI reads MCP servers from ~/.gemini/settings.json (on Windows %USERPROFILE%\.gemini\settings.json). Add:
{
"mcpServers": {
"anythingmcp": {
"httpUrl": "https://cloud.anythingmcp.com/mcp/YOUR_SERVER_ID",
"headers": { "X-API-Key": "YOUR_MCP_API_KEY" }
}
}
}
- Create an MCP API key in AnythingMCP under MCP Servers → your server → API keys, and paste it in place of
YOUR_MCP_API_KEY. - Save the file and restart
gemini. - Run
/mcpinside Gemini CLI (orgemini mcp listin your shell):anythingmcpshould show as connected. - Start prompting: Gemini CLI can now call the
Webflowtools.
Available tools
| Tool | What it does |
|---|---|
webflow_get_token_info | Check the connected token: its scopes (comma-separated), the site ids it is authorized for, its rate limit per minute, grant type, and when… |
webflow_list_sites | List the sites the token can reach: id, displayName, shortName, workspaceId, lastPublished, lastUpdated, timeZone, customDomains and locales |
webflow_get_site | Read one site: displayName, shortName, lastPublished, lastUpdated, timeZone, customDomains (id and url) and locales (primary and secondary… |
webflow_list_custom_domains | List the site's custom domains with id, url and lastPublished |
webflow_publish_site | Publish the site (or one page with page_id) to its custom domains and/or the webflow.io subdomain: every staged change, pages and CMS… |
webflow_list_pages | List the site's pages: id, title, slug, parentId, collectionId (set for CMS template pages), publishedPath, draft, archived, lastUpdated… |
webflow_get_page | Read one page's settings: title, slug, publishedPath, draft, archived, collectionId, lastUpdated, seo (title, description) and openGraph… |
webflow_update_page_settings | Change a page's title, slug, SEO title and description, or Open Graph title and description, optionally for one locale |
webflow_list_collections | List the site's CMS collections: id, displayName, singularName, slug, createdOn and lastUpdated |
webflow_get_collection | Read a collection's schema: displayName, singularName, slug and fields, each with id, slug, displayName, type (PlainText, RichText, Image… |
webflow_list_items | List a collection's staged items (drafts and published ones, as editors see them): id, fieldData, isDraft, isArchived, lastPublished (null… |
webflow_get_item | Read one staged item: id, fieldData (keyed by field slug), isDraft, isArchived, lastPublished, lastUpdated, createdOn and cmsLocaleId… |
webflow_create_item | Create a staged CMS item; nothing appears on the public site |
webflow_update_item | Change a staged item: only the fields in field_data change |
webflow_delete_item | Delete an item from the CMS for good (in the primary locale, or in the given locales) |
webflow_publish_items | Publish staged items to the live site without publishing the rest of it: their current staged content becomes public and drafts stop being… |
webflow_list_live_items | List a collection's published items as visitors see them: id, fieldData, lastPublished, lastUpdated, createdOn and cmsLocaleId |
webflow_get_live_item | Read the published version of one item: id, fieldData, lastPublished, lastUpdated and cmsLocaleId |
webflow_create_live_item | Create an item and publish it on the live website at once, skipping the draft stage |
webflow_update_live_item | Change a published item and push the change to the live website immediately: only the fields in field_data change |
webflow_unpublish_live_item | Take a published item off the live website (primary locale, or the given locales) |
webflow_list_forms | List the site's forms: id, displayName, pageId, pageName, formElementId, fields (name and type per field), createdOn and lastUpdated |
webflow_get_form | Read one form's schema: displayName, the page it sits on, formElementId, its fields with their types, and responseSettings (notification… |
webflow_list_form_submissions | List the site's form submissions: id, displayName (the form name), dateSubmitted, formResponse (the submitted values by field name) and… |
webflow_list_form_submissions_by_form | List the submissions of one form by its form id: id, dateSubmitted, formResponse (the submitted values by field name) and localeId |
webflow_get_form_submission | Read one form submission: form name, dateSubmitted, localeId and formResponse with every submitted value by field name |
webflow_list_assets | List the files uploaded to the site: id, displayName, originalFileName, contentType, size in bytes, hostedUrl, altText, folderId, variants… |
webflow_get_asset | Read one asset: displayName, originalFileName, contentType, size, hostedUrl (the public file URL), altText, variants and dates |
webflow_list_products | List e-commerce products, each with its product fieldData (name, slug, description, ...) and its SKUs (variants with price, SKU code and… |
webflow_get_product | Read one e-commerce product with all its SKUs: the product's fieldData and, per SKU, price, compare-at price, SKU code and option values |
webflow_list_orders | List e-commerce orders: orderId, status, acceptedOn, fulfilledOn, customerInfo, shipping and billing address, purchasedItems, totals… |
webflow_get_order | Read one e-commerce order: status, dates, customerInfo, addresses, purchasedItems, totals with taxes and shipping, payment details… |
Example prompts
- "List the pages of our Webflow site that have no SEO title or meta description."
- "Which blog posts in the CMS are still drafts, and when were they last updated?"
- "Show me this week's contact form submissions with name, company and message."
- "Create a new post in the Blog collection titled "Spring product update" with a short summary, as a draft only. Do not publish it."
FAQ
Where does Gemini CLI look for MCP servers? In ~/.gemini/settings.json for your user, or in .gemini/settings.json inside a project. gemini mcp list shows each server and whether it connects.
Next steps
Was this guide helpful?