This server teaches Claude, Claude Code, Codex and Cursor everything about the Clean Pro theme: every module, its exact insert path, ready-made recipes, style presets and design rules. Pair it with HubSpot's connector and describe the page you want.
HubSpot's own AI connector can create and edit pages, but it cannot see the modules inside a theme. Ask it for a Clean Pro FAQ or a card grid and it either builds a custom template that ignores your theme settings, or gives up. This server fills that gap. It is read-only: it never touches your portal and stores nothing.
Describe what you need in plain words and get the exact module and insert path, with the tie-break rules a Clean Pro expert would apply.
Ready-to-send configurations for the most used modules, plus style presets such as a light band, a dark band or a tight section, so pages look designed rather than default.
Every payload is validated against the real module schema before it goes to HubSpot, so you get a working section instead of a silent failure.
Two connections: this server for Clean Pro knowledge, and HubSpot for the actual page writes. Pick your tool.
In Claude, open Settings → Connectors → Add custom connector. Name it Clean Pro, paste the URL below, leave authentication off. Custom connectors are available on paid Claude plans.
https://mcp.clean.pro/mcp
In the same Connectors list, connect HubSpot and approve the full permission list when it asks. A reduced permission set causes internal errors on page reads. HubSpot's guide.
Turn both connectors on for the chat, fill in your portal ID and your brief, and send.
claude mcp add --transport http clean-pro https://mcp.clean.pro/mcp
Claude Code uses the connectors from your claude.ai account. Add HubSpot there (Settings → Connectors), or run /mcp inside Claude Code to check what is connected.
Fill in your portal ID and your brief.
~/.codex/config.toml[mcp_servers.clean-pro] url = "https://mcp.clean.pro/mcp"
Newer Codex builds also accept codex mcp add clean-pro --url https://mcp.clean.pro/mcp.
Codex needs a HubSpot MCP server for the page writes. Use HubSpot's official MCP from the HubSpot developer docs, added the same way.
.cursor/mcp.json{
"mcpServers": {
"clean-pro": { "url": "https://mcp.clean.pro/mcp" }
}
}Add HubSpot's official MCP server to the same file for the page writes.
Copy this into a new chat, replace the two blanks, and describe the page. It sets the rules that make the difference: use the Clean Pro server for knowledge, HubSpot for writes, validate before sending, draft only.
I build HubSpot website pages with the Clean Pro theme. My portal ID is [PORTAL ID]. Use the Clean Pro MCP for everything about the theme: call find_module or list_modules to choose modules, get_module for the exact insert path and fields, use its recipes and style presets, read design_rules before laying out a page, and run validate_overrides on every payload before you send it. Use the HubSpot connector for the actual page work. Never author a custom HubL template; always create pages from a Clean Pro template. Default to website pages. Send content fields plus at most one style preset per section; leave every other style to the theme. Alternate section bands so the page does not read as one white sheet, and use one dark band for the closing call to action. Do not invent image URLs; leave the theme placeholder and tell me which images you still need. Do not publish anything; build the draft, render it once, and show me. Here is the page I want: [DESCRIBE THE PAGE: what it is for, the sections you want, the copy or the key messages, and any links, images or forms you already have]
Things it does well from a short brief:
The server never sees your HubSpot account. Page writes go through HubSpot's own connector under your login, and every page is created as a draft until you publish it yourself.
Nine read-only tools. Your AI client calls them; you never need to.
Discovery by plain-language need or by browsing the catalog.
The reference for one module: fields, allowed values, ready configurations, band presets.
Checks a payload against the real schema and reports the exact problem.
How to compose a page, how HubSpot's connector really behaves, and exact JSON shapes.