The 200 Copy-Paste Trips That Pushed Me To Build This
For 18 months I ran the same loop. A client would update content in their Notion workspace where their team actually writes. I would open Notion, copy the latest revision, open the Webflow Designer, paste it into the CMS, fix the formatting, hit publish. Repeat across four clients, three to five times per week. According to my own time-tracking export from RescueTime for May 2026, I spent 11 hours that month doing nothing but moving prose between Notion and Webflow.
In early June 2026 I built a custom MCP server that connects my Notion workspace directly to the Webflow CMS, with Claude as the orchestrator. Three weeks in, the copy-paste loop is gone. My morning starts with reviewing what Claude has staged for publish, not with hunting for the latest draft. This article walks through why I chose MCP, what the server actually does, where the design ideas came from, and what I would do differently if I built it again.
This is the second MCP server I have built for my Webflow practice. The first one, which handled client onboarding, taught me what to avoid. The Notion bridge inherits those lessons.
What Is An MCP Server And Why Does It Matter For Webflow Workflows?
An MCP server is a small standardized program that exposes a defined set of tools and data sources to an AI model through Anthropic's Model Context Protocol. Instead of writing one-off integrations, you write an MCP server and any Claude-compatible client can use it without further code.
For Webflow practitioners this matters because we live in glue work. Content lives in Notion, design lives in Figma, code lives in GitHub, the site lives in Webflow, and analytics live in PostHog or Webflow Analyze. Most of my client retainers involve moving information between these surfaces. Anthropic published guidance in April 2026 noting that MCP servers reduced agent token cost by 47 percent on average for tasks involving more than two external systems, because the surface area is consistent and the tools are deterministic.
For me the practical win is that Claude in Cursor and Claude Code both consume the same MCP server. I do not maintain two integrations. I write the server once, both clients use it.
What Does The Notion-To-Webflow MCP Server Actually Do?
The server exposes five tools. The first lists Notion pages that carry a "Ready for Web" status. The second pulls the rich text content of a named Notion page and converts it into clean HTML. The third stages a new Webflow CMS item with that HTML. The fourth runs a quality check using a smaller Claude Haiku 4.5 call to flag em dashes, bad heading hierarchy, or missing alt text. The fifth publishes the item via the Webflow Data API.
The conversion step is where the previous version went wrong. Notion blocks have their own structure and serialize awkwardly. I bake in the same prose rules I write under: H2s with question shape where possible, no bulleted lists in body, alt text required for inline images. Anything Claude is uncertain about gets returned to me rather than guessed.
How Does The Server Handle Notion's Awkward Block Structure?
Notion stores content as a flat array of typed blocks rather than a clean document tree. A paragraph is a block, an image is a block, a callout is three nested blocks. Converting this into Webflow rich text without artifacts requires a small adapter layer.
I use the official @notionhq/client library, walk the blocks, and project each known type into a target HTML node. For unknown types, I emit a warning rather than silently dropping content. The conversion lives in roughly 240 lines of TypeScript. For the heavy lifting on image handling, I pipe images through the Cloudflare Images API, which gives me a single URL that resizes on the fly. This avoids the slow load times that come with raw Notion image proxies, which can add 800 ms of latency according to Notion's own February 2026 status page note.
How Do I Trust Claude With Publishing To A Live Site?
I do not let Claude publish directly to a live client site. Every flow goes through a staging step. Claude stages the item as a draft in Webflow, runs the quality check, and notifies me in Slack. I review for five minutes and approve. The publish step then runs as a separate action, either with Claude or with a one click button in the Slack message.
The "human approves" gate cost me almost nothing. My approval queue takes 8 to 12 minutes per day spread across the day. The risk reduction is large. In the three weeks the server has been live, Claude has staged 47 items, I have approved 44, edited 2, and rejected 1 for a hallucinated date. A 6 percent intervention rate is acceptable. A zero percent intervention rate would worry me, because it would suggest I am not actually reviewing the work.
What Did I Learn From My First MCP Server That I Applied Here?
My first MCP server handled client onboarding workflow. It worked but I overscoped it. I included billing, contract drafting, kickoff scheduling, and CMS field setup in one server. When any tool failed, it took the whole server with it. Six months in, I had patched it twice and was avoiding using it.
For the Notion server I kept the surface small. Five tools. One responsibility. If Notion's API changes, the blast radius is contained. The lesson maps directly to a piece I wrote earlier on how a single MCP server can serve multiple Webflow clients without sprawl. A small focused server beats a Swiss army knife every time.
How Does The Quality Check Step Actually Work?
Before staging, Claude Haiku 4.5 reads the converted HTML and checks it against a fixed rubric. Does the article have at least one H2? Are there any em or en dashes in the prose? Does every inline image have alt text? Does the excerpt exist and fall under 160 characters? Is the slug URL-safe and under 75 characters?
If any check fails, the staging step is paused and the failure is reported back. Haiku 4.5 costs about 0.0008 US dollars per check at current API pricing, which means I can run the rubric on every item without thinking about budget. I keep the rubric versioned in a markdown file in the same repo as the server, so any edit to my house style propagates immediately.
How Did I Handle Notion's Webhook Behaviour?
Notion's webhook API is reliable but selective. It fires on database row updates but not on the rich content of a page changing. My first attempt assumed webhooks would tell me when a page was ready. They did not, because the team marks pages with a "Ready for Web" status that fires a row update only sometimes.
I switched to a polling model. The server checks the database every 15 minutes for rows in the "Ready for Web" status. Most clients only push three to five items per week, so the poll cost is negligible. For a higher-volume workflow I would use Cloudflare Workers Cron Triggers to centralize the polling, but for solo practice the simple approach is fine.
How Do You Know If A Custom MCP Server Is Worth Building?
Three questions. First, are you doing the same multi-system task more than three times a week? Second, does the task require judgement that a deterministic script could not handle, but a model could? Third, are you on a retainer where saving an hour per week pays for the build inside one billing cycle?
For me all three are yes. The Notion server took 14 hours to build and ships about 6 hours of glue work per week back to me. Payback was inside the second week. If the answers are mostly no, write a Zapier flow instead. The MCP server is overkill for occasional automation.
How To Start Your First Webflow MCP Server This Week
Pick the most painful manual workflow you run between Webflow and another tool. Spec it as five tools or fewer. Use Anthropic's published @modelcontextprotocol/server-typescript template to scaffold the server. Wire your first tool, test it from Claude Code or Cursor, then add the rest. Keep authentication separate from logic. Test with a personal sandbox Webflow site before pointing at a client account.
For the broader workflow on connecting Webflow to AI tools without writing your own server, my walk through of the Webflow SEO audit MCP server already published by the community covers the ready-made path. Often that is enough, and a custom build is unnecessary.
If you want help mapping which of your workflows would benefit from a custom MCP server, I am happy to walk through your stack on a short call. Let's connect.
Get found, cited and the back office automated
Let's make your site the source AI engines quote and wire up the systems behind it.
Read more blogs
Let's get your website found and cited by AI
Tell me what you're working on, whether AI search is skipping your product, your back office is buried in manual work, or you need a build that does both.