bricks-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@bricks-mcp List all pages and their SEO scores"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
bricks-mcp
▟███████████████████████████████████████████▙
█ ____ ____ ___ ____ _ ______ █
█ | __ )| _ \|_ _/ ___| |/ / ___| BRICKS █
█ | _ \| |_) || | | | ' /\___ \ █
█ | |_) | _ < | | |___| . \ ___) | MCP █
█ |____/|_| \_\___\____|_|\_\____/ █
▜▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▛
105 tools · 17 modules · MIT licensedPrinted on startup. In a real terminal the box animates in brick-by-brick (set
BRICKS_BANNER=anim|static|off).
The most comprehensive open-source MCP server for Bricks Builder.
100+ tools to manage pages, templates, styles, SEO, content, and more — directly from Claude Code, Cursor, Windsurf, or any MCP-compatible AI assistant.
Architecture
Claude Code / Cursor / AI Assistant
↕ MCP Protocol (stdio)
bricks-mcp (Node.js)
↕ REST API (Basic Auth)
bricks-api-bridge (WordPress Plugin)
↕ PHP
WordPress + Bricks BuilderThe MCP server communicates with your WordPress site through the included REST API plugin. Your AI assistant gets full control over Bricks Builder — reading pages, updating elements, managing styles, and building sections.
Related MCP server: Bricks MCP
Quick Start (5 Minutes)
1. Install the WordPress Plugin
The plugin/ folder in this repo contains the Bricks API Bridge WordPress plugin. Choose one of these install methods:
Option A: ZIP Upload (easiest)
Download bricks-api-bridge.zip from the latest release
Go to WordPress Admin → Plugins → Add New → Upload Plugin
Upload the ZIP and click "Install Now"
Click "Activate"
Option B: Manual Upload via FTP/SSH
Clone this repo or download it
Copy the
plugin/folder to your WordPress installation:cp -r plugin/ /path/to/wordpress/wp-content/plugins/bricks-api-bridge/Go to WordPress Admin → Plugins → Activate "Bricks API Bridge"
Option C: WP-CLI
# From the repo root. Builds from git, not from your working copy,
# so uncommitted files can't end up in the archive.
./scripts/build-plugin-zip.sh
wp plugin install bricks-api-bridge.zip --activateAfter activation, the plugin registers REST API endpoints under /wp-json/bricks-bridge/v1/. No configuration needed — it works out of the box with WordPress Application Passwords.
2. Create an Application Password
In WordPress Admin → Users → Your Profile → Application Passwords:
Enter a name (e.g., "MCP Server")
Click "Add New Application Password"
Copy the generated password
3. Install the MCP Server
git clone https://github.com/developer2013/bricks-mcp-open.git
cd bricks-mcp-open
npm install # or: bun install4. Configure Credentials
Copy .env.example to .env and fill in your details:
cp .env.example .envWORDPRESS_URL=https://your-site.com
WORDPRESS_USER=your-username
WORDPRESS_APP_PASSWORD=xxxx xxxx xxxx xxxx xxxx xxxx5. Add to Your AI Assistant
Claude Code — add to ~/.claude/.mcp.json:
{
"mcpServers": {
"bricks": {
"command": "node",
"args": ["/path/to/bricks-mcp-open/index.js"]
}
}
}Or with Bun (faster startup):
{
"mcpServers": {
"bricks": {
"command": "bun",
"args": ["/path/to/bricks-mcp-open/index.js"]
}
}
}Claude Code iOS / Android App — open Settings → MCP Servers → Add Server:
Name:
bricksCommand:
node(orbun)Arguments:
/path/to/bricks-mcp-open/index.jsEnvironment Variables:
WORDPRESS_URL=https://your-site.comWORDPRESS_USER=your-usernameWORDPRESS_APP_PASSWORD=xxxx xxxx xxxx xxxx xxxx xxxx
Cursor / Windsurf — add the same config to .cursor/mcp.json in your project.
Hermes Agent (Nous Research) — add to config.yaml:
mcp_servers:
bricks:
command: node
args: ["/path/to/bricks-mcp-open/index.js"]
env:
WORDPRESS_URL: https://your-site.com
WORDPRESS_USER: your-username
WORDPRESS_APP_PASSWORD: "xxxx xxxx xxxx xxxx xxxx xxxx"Hermes has native MCP client support since v0.2.0 — all 105 tools appear in its tool list automatically. Works with any model (Hermes 3, Llama, OpenRouter, etc.).
Windows: TLS / "fetch failed" errors On Windows, Node.js ships its own bundled CA list and ignores the Windows certificate store. If your WordPress host sits behind a corporate proxy, TLS inspection, or a CA that's only trusted by Windows, every request fails with a certificate /
fetch failederror. Tell Node to use the OS trust store by adding--use-system-cabefore the script path inargs(requires Node.js ≥ 22.15):{ "mcpServers": { "bricks": { "command": "node", "args": ["--use-system-ca", "C:\\path\\to\\bricks-mcp-open\\index.js"] } } }Alternatively set it via the environment instead of
args:"env": { "NODE_OPTIONS": "--use-system-ca" }. On older Node versions, upgrade to ≥ 22.15 (or useNODE_EXTRA_CA_CERTSpointing to your CA bundle as a fallback).
Manage Your WordPress Site from Your Phone
Deploy the MCP server as a self-hosted MCP environment on Railway (or any Docker host), then connect it to the Claude Code mobile app. No Mac running in the background needed — the server runs 24/7 in the cloud.
How it works:
iPhone / Android (Claude Code App)
↕ Claude Self-Hosted MCP
Railway / Docker (MCP Server — always on)
↕ REST API
WordPress + Bricks BuilderSetup:
Deploy the MCP server to Railway using the included
agent-service/DockerfileIn Claude Console → MCP → Create Self-Hosted Environment
Generate an environment key and add it to your Railway deployment
The Claude Code mobile app automatically connects to your self-hosted environment
What you can do from your phone — no laptop needed:
You: "List all my pages and their SEO scores"
You: "Create a new landing page for my dental practice"
You: "Update the hero headline on page 42 to 'Welcome to Our Practice'"
You: "Run an SEO audit and fix all missing meta descriptions"
You: "Add a testimonials section using the testimonials-slider preset"
You: "Create a snapshot called 'before-redesign', then change the palette"Action | Example Prompt |
Build pages | "Create a hero section with dark gradient background" |
Edit content | "Change the button text on page 42 to 'Book Now'" |
SEO management | "Set meta description and OG image for all pages" |
Style updates | "Update the primary color to #2563EB across the palette" |
Backup & restore | "Create a snapshot called 'before-redesign'" |
QA checks | "Check all links on page 42 for broken URLs" |
Template management | "Clone the header template and modify the navigation" |
The server runs 24/7 on Railway — your phone is just the control surface. All 105 tools are available anywhere, anytime.
6. Test the Connection
Ask your AI assistant:
"Use the bricks_connection_test tool to verify my WordPress connection."
Tool Categories (100+ Tools)
Category | Tools | Description |
Pages | 9 | List, get, update, patch, append, build, clone, search pages |
Scripts & Assets | 5 | Per-page CSS/JS management, GSAP flag control |
SEO (Page) | 6 | Page-level SEO meta, schema markup, audit |
Templates | 8 | Full template CRUD, clone, import, search |
Backup & Snapshots | 7 | Named snapshots, multi-slot backups, restore |
Global Classes | 7 | CSS class CRUD, bulk create, usage analysis |
BEM Components | 3 | Generate, apply, and validate BEM class sets |
Style System | 10 | Color palette, fonts, CSS variables, breakpoints |
Theme Styles | 2 | Global theme style read/write |
Presets | 4 | Section presets: list, instantiate, save, delete |
SEO (Advanced) | 13 | Auto-fix, bulk update, sitemap, redirects, link check |
WordPress Content | 8 | Posts, categories, tags CRUD |
Menus | 5 | Navigation menu management |
Site Management | 9 | Settings, page creation, validation, cache, stats |
Media | 3 | Upload, list, edit media files |
Multi-Site | 3 | Switch between WordPress sites at runtime |
Utilities | 4 | Connection test, HTML→Bricks converter, Elementor→Bricks migration, batch ops |
Migrating from Elementor?
Switching from Elementor (Pro) to Bricks? bricks_elementor_to_bricks gives you a head start:
In WordPress, open the Elementor editor → ⌄ (menu) → Export Template (or Templates → Saved Templates → Export). You get a
.jsonfile.Run the tool with that file:
bricks_elementor_to_bricks file_path="/path/to/elementor-export.json"You get a ready-to-review Bricks element array plus a coverage report.
Review it, then push with
bricks_update_page(take a snapshot first) orbricks_import_page.
How it works: a purely structural translation — no headless browser, no rendering, no write to your site. Common widgets (heading, text, button, image, icon, divider, spacer) and the section/column/container structure map straight to native, editable Bricks elements. Widgets without a native equivalent (e.g. Pro sliders, forms, loops) become clearly-labelled placeholder blocks carrying a preview of their original content — so nothing is lost silently and you always see where and what to rebuild by hand. line-height is converted to a correct unitless ratio so you never inherit Elementor's px values as Bricks multipliers.
Keeping your CSS editable in Bricks
The whole point of Bricks is a visual builder — so CSS the assistant writes should stay editable in Bricks, not vanish into a place you can't reach. This plugin can inject per-page CSS into a private bundle (_bab_page_assets, output at wp_head priority 9997 — before element CSS) via bricks_update_page_assets. That bundle is not shown anywhere in the Bricks builder and silently overrides what the builder displays — great for infrastructure CSS (@font-face, :root{--vars}, @keyframes, critical above-the-fold), but the wrong home for the layout/responsive/visual CSS you'll want to tweak by hand later. (This is exactly the r/BricksBuilder feedback: "plugin-managed page CSS that a human can't edit defeats the purpose of using Bricks.")
Where editable CSS belongs (priority order):
Native element settings — padding, typography, colors, etc. (fully visual controls)
Element
_cssCustom— per-element custom CSS, editable on the element's CSS tabPage
customCss—bricks_update_page_settings→ Bricks Page Settings → Custom CSSGlobal classes — editable in the Class Manager (build them with native settings, not
_cssCustom, which is not compiled into page CSS via the API path)
The editability guard
To stop editable CSS from leaking into the invisible bundle, the guard classifies the css field of bricks_update_page_assets and acts in three modes:
Mode | Behaviour |
| No-op — fully backwards-compatible |
| Write proceeds, the REST response carries a |
| Editable CSS is rejected (HTTP 422) and nothing is written |
Enable it by adding one line to your wp-config.php (above /* That's all, stop editing! */):
// Bricks API Bridge — warn (or 'block') when editable CSS is sent to the private page-assets bundle
define( 'BAB_GUARD_EDITABLE_CSS', 'warn' );(Or, without editing files: wp option update bab_guard_editable_css warn.) On the MCP side, the bricks_update_page_assets tool warns by default; set the env var BRICKS_MCP_BLOCK_EDITABLE_CSS=1 to hard-block there too. Infrastructure CSS always passes — use the css_critical / css_deferred fields for it.
Multi-Site Support
Manage multiple WordPress sites from a single MCP server. Copy sites.json.example to sites.json:
{
"default": "production",
"sites": {
"production": {
"label": "Live Site",
"url": "https://your-site.com",
"username": "admin",
"password": "xxxx xxxx xxxx xxxx xxxx xxxx"
},
"staging": {
"label": "Staging",
"url": "https://staging.your-site.com",
"username": "admin",
"password": "xxxx xxxx xxxx xxxx xxxx xxxx"
}
}
}Switch sites at runtime:
"Switch to the staging site."
Custom sites.json location. If you collect your MCP servers in one folder and keep site configs elsewhere, set BRICKS_SITES_PATH to point at the file — absolute, relative (to the working directory), or ~-prefixed all work:
BRICKS_SITES_PATH=~/mcp-config/bricks-sites.jsonWhen set, a missing file fails loudly at startup (instead of silently falling back to the WORDPRESS_* env vars), so a typo in the path can't connect you to the wrong site. No need to symlink sites.json into the server folder.
Usage Examples
Build a page section
"Create a hero section on page 42 with a full-width background, centered heading 'Welcome', a subtitle, and a CTA button."
Manage styles
"Update the color palette — set the primary color to #2563EB and secondary to #7C3AED."
SEO optimization
"Run an SEO audit on all published pages and auto-fix missing meta descriptions."
Backup before changes
"Create a snapshot of page 42 named 'before-redesign', then update the hero section."
Plugin Features
The included WordPress plugin (bricks-api-bridge) provides:
REST API endpoints for all Bricks Builder data
Security hardening — rate limiting, user enumeration protection, security headers
Responsive inference — automatic mobile/tablet breakpoint generation
Element validation — catches invalid IDs, broken parent-child links
Auto-fix — corrects common CSS issues (overflow, grid, container width)
Backup system — multi-slot backups + named snapshots
Design token import/export — JSON, ACSS, Tailwind formats
Feature Comparison
Feature | bricks-mcp | Novamira | cristianuibar/bricks-mcp | sabiertas/bricks-mcp-server |
Focus | Bricks Builder | Generic WordPress | Bricks Builder | Bricks Builder |
Tools | 105 | 22 (12 core + 10 Gutenberg) | 11 | 10 |
Approach | REST API (structured endpoints) | PHP execution + filesystem | REST API | REST API |
Agent Service | Autonomous 5-phase pipeline | - | - | - |
Mobile Control | Telegram bot (iPhone/Android) | - | - | - |
Multi-Site | Runtime switching | - | - | Environment vars |
BEM Support | Generate + Apply + Validate | - | - | - |
SEO Tools | 19 (meta + audit + redirects) | - | - | - |
Backup System | Snapshots + Multi-slot | - | - | - |
Section Presets | 25 ready-to-use | - | - | - |
Security Hardening | Rate limit + Headers | - | - | - |
Responsive Inference | Auto breakpoints | - | - | - |
WordPress Content | Posts + Categories + Tags + Menus | Via PHP execution | - | - |
Batch Operations | Up to 20 per request | - | - | - |
Design Tokens | Import/Export (JSON, ACSS) | - | - | - |
Auto-Fix | Overflow, grid, container | - | - | - |
Gutenberg Support | - | Block Editor Queue | - | - |
PHP Execution | - | Direct PHP eval | - | - |
License | MIT | AGPL-3.0 | GPL-2.0 | MIT |
Requirements
Node.js >= 18 or Bun >= 1.0 (Windows behind a proxy/custom CA: use Node ≥ 22.15 with
--use-system-ca— see Windows TLS note)WordPress >= 6.0
Bricks Builder >= 2.0
PHP >= 8.0
Agent Service (Autonomous Page Builder)
The agent-service/ directory contains an autonomous agent that builds entire WordPress pages from industry briefs — using Claude + the MCP server in a 5-phase pipeline:
Industry Brief → Historian → Design → Code → Update → QA → Fix LoopBuild from your iPhone or Android — Use the Telegram bot or the Claude Code mobile app as your control center: trigger builds, QA, fixes, and screenshots from anywhere
CLI Mode — Single builds or overnight batch processing
Budget Control — Per-phase cost caps, total cost tracking
Docker Ready — Deploys to Railway, Fly.io, or any container host
See agent-service/README.md for setup instructions.
Premium
Looking for more? The premium edition includes 260+ tools with:
AI Build Pipeline — Build entire pages from a URL in one command
Learning System — Remembers CSS fixes and improves over time
Math Library — 33 modules for design tokens, color harmony, spring physics
Visual QA — Puppeteer screenshots, pixel comparison, accessibility audits
Design Intelligence — Brand archetypes, competitive benchmarking, typography suggestions
WooCommerce, ACF, Gravity Forms integrations
Bio-inspired animations — Levy stagger, density-intensity, quorum sensing
Contributing
See CONTRIBUTING.md for guidelines.
License
MIT License. See LICENSE.
Available Tools
115 toolsbricks_active_siteA
Show the currently active WordPress site (key, label, URL, user).
Inputs: no named parameters.
bricks_append_elementsA
Append elements to an existing page without replacing existing content. Elements are added after existing elements. Automatically creates a backup before writing (plugin-side, cannot be skipped). THEME-FIRST: before generating elements, call bricks_get_theme_styles and bricks_list_global_classes — reuse existing tokens (button styles, utility classes, color palette) instead of inline styling. For buttons prefer settings.style: "primary"|"secondary" over manual _background/_typography. For links use the text-link element, not a styled text-basic.
Inputs: page_id (required), elements (required), parent_id, regenerate_css.
bricks_apply_bem_componentA
Apply BEM component classes to page elements. Maps element IDs to their BEM roles (_root, title, price, cta, etc.) and assigns the corresponding global classes. Optionally adds a modifier class to the root element.
Inputs: block (required), mapping (required), page_id (required), modifier.
bricks_apply_class_to_elementB
Apply or remove global CSS classes on page elements. Supports single element or bulk operations.
Inputs: page_id (required), class_id, element_id, operations.
bricks_batchB
Execute multiple API operations in a single request. Reduces HTTP roundtrips for multi-step workflows. Max 20 operations per batch.
Inputs: operations (required).
bricks_build_pageA
Build a complete page from section presets and/or raw elements in a single request. Combines multiple sections into a full page layout. Automatically creates a backup before writing (plugin-side, cannot be skipped). THEME-FIRST: before generating raw elements, call bricks_get_theme_styles and bricks_list_global_classes — reuse existing tokens (button styles, utility classes, color palette) instead of inline styling. For buttons prefer settings.style: "primary"|"secondary" over manual _background/_typography. For links use the text-link element, not a styled text-basic.
Inputs: page_id (required), sections (required), regenerate_css.
bricks_bulk_create_global_classesA
Create or update multiple global CSS classes in one request. Upserts by ID.
Inputs: classes (required).
bricks_bulk_media_seoA
Find all media items missing SEO texts and auto-generate alt_text + title from filename context. Optionally apply changes. Shows a preview table first.
Inputs: apply, per_page, overrides.
bricks_call_logA
Query the structured MCP call log — every tool call with its args, status, duration, and (for page-mutating calls) a before/after element diff (count delta + added/removed element IDs). Use this to trace which call changed or corrupted a page and what input triggered it, instead of guessing from a snapshot. Filters: limit, page_id, failures_only, mutating_only.
Inputs: limit, page_id, failures_only, mutating_only.
bricks_check_linksA
Check all links on a Bricks page for broken URLs (404, timeouts, DNS failures). Tests both content links and element links via HTTP HEAD requests.
Inputs: page_id (required).
bricks_clone_pageB
Clone a page with all Bricks data and scripts.
Inputs: page_id (required), new_title.
bricks_clone_templateC
Clone a template with all Bricks data.
Inputs: template_id (required), new_title.
bricks_competitor_extractA
Extract SEO meta tags, OG/Twitter data, JSON-LD schemas, and H1 headings from any external URL. Useful for benchmarking against competitors.
Inputs: url (required).
bricks_connection_testA
Test the WordPress connection, verify credentials, and check plugin status. Use this to diagnose connection issues.
Inputs: no named parameters.
bricks_create_full_backupA
Create a full-state backup of the entire Bricks layer (all pages incl. drafts, templates, global styles/classes/fonts/colors, navigation menus, and curated WordPress core settings) as a single JSON file on the server. Use before risky bulk operations. Does NOT back up media files or the database — pair with a host snapshot for full disaster recovery.
Inputs: no named parameters.
bricks_create_global_classB
Create a new Bricks Builder global CSS class with settings.
Inputs: name (required), settings (required).
bricks_create_pageA
Create a new WordPress page with Bricks Builder data in one call. No need for separate WP page creation + Bricks data push. THEME-FIRST: before generating elements, call bricks_get_theme_styles and bricks_list_global_classes — reuse existing tokens (button styles, utility classes, color palette) instead of inline styling. For buttons prefer settings.style: "primary"|"secondary" over manual _background/_typography. For links use the text-link element, not a styled text-basic.
Inputs: title (required), slug, parent, status, +2 more.
bricks_create_redirectA
Create a 301/302/307 redirect. Hits are tracked automatically on the frontend.
Inputs: source (required), target (required), type.
bricks_create_snapshotA
Create a named snapshot of the current page state. Use for milestones like "client-approved", "before-redesign", etc.
Inputs: name (required), page_id (required), description.
bricks_create_templateC
Create a new Bricks Builder template with the given content.
Inputs: title (required), content (required), conditions, template_type.
bricks_delete_full_backupA
Delete one stored full-state backup file by its filename (as listed by bricks_list_full_backups).
Inputs: file (required).
bricks_delete_global_classB
Delete a global CSS class by ID.
Inputs: class_id (required).
bricks_delete_presetB
Delete a section preset by name.
Inputs: name (required).
bricks_delete_redirectB
Delete a redirect by ID.
Inputs: redirect_id (required).
bricks_delete_snapshotB
Delete a named snapshot. Accepts snapshot ID or name.
Inputs: page_id (required), snapshot_id (required).
bricks_delete_templateC
Delete a Bricks Builder template.
Inputs: template_id (required), force.
bricks_elementor_to_bricksA
Convert an Elementor page/template into a Bricks Builder element array. Input is an Elementor JSON export (Elementor UI → Templates → Export, or raw _elementor_data). Maps Elementor widgets/containers to native Bricks elements structurally — no HTML rendering. Returns the Bricks element array + a coverage report (which widgets mapped, which need manual work). Does NOT write to WordPress: review the output, then push with bricks_update_page or bricks_import_page.
Inputs: json, file_path.
bricks_generate_bem_componentA
Generate a complete BEM component as global CSS classes. Creates block, element (__), and modifier (--) classes in one call. Uses bulk upsert so it is safe to re-run. Example: block="pricing-card" with elements title, price, cta creates: pricing-card, pricing-card__title, pricing-card__price, pricing-card__cta.
Inputs: block (required), elements (required), modifiers.
bricks_get_backupA
Get the backup of a page's Bricks data. Supports multi-slot backups (1-5, newest first).
Inputs: page_id (required), slot.
bricks_get_breakpointsA
Get all active Bricks Builder breakpoints with pixel values and setting suffixes. Returns default breakpoints (Desktop, Tablet Portrait <992px, Mobile Landscape <768px, Mobile Portrait <478px) plus any custom breakpoints.
Inputs: no named parameters.
bricks_get_color_paletteA
Get the Bricks Builder color palette. Returns all defined color variables with their values.
Inputs: no named parameters.
bricks_get_css_variablesA
Get all CSS variables (design tokens) from Bricks Global Variables Manager. Returns variable names and values (colors, spacing, z-index, container sizes, etc.).
Inputs: no named parameters.
bricks_get_full_stateA
Return the live full-state of the Bricks layer as JSON WITHOUT writing a file (all pages incl. drafts, templates, globals, menus, curated WP settings). Use to inspect or to save a backup snapshot locally on the client.
Inputs: no named parameters.
bricks_get_global_class_usageA
Get usage report: which global classes are used on which pages/elements. Optionally filter by class_id.
Inputs: class_id.
bricks_get_global_cssA
Get the global custom CSS from Bricks Builder settings.
Inputs: no named parameters.
bricks_get_pageB
Get the complete Bricks Builder JSON data for a specific page. Returns the full element tree with all settings, styles, and content. Use content_area to read header or footer template data instead of main content.
Inputs: page_id (required), summary, content_area.
bricks_get_page_assetsA
Get structured per-page assets. Returns { css, js_deps, js, raw_footer } — CSS is output in wp_head, JS deps via wp_enqueue_script, JS in wp_footer. Requires Bricks API Bridge v2.3+.
Inputs: page_id (required).
bricks_get_page_schemaB
Get JSON-LD structured data (Schema.org) for a page. Returns all schema objects stored for this page.
Inputs: page_id (required).
bricks_get_page_seoA
Get SEO meta data for a WordPress page. Returns title, description, OG/Twitter tags, canonical URL, robots directives, focus keyword, and more.
Inputs: page_id (required).
bricks_get_page_settingsA
Get Bricks page-level settings (metaRobots, custom header/footer assignment, per-page overrides).
Inputs: page_id (required).
bricks_get_post_typesA
List all public WordPress post types with their Bricks support status, REST API base, and post count.
Inputs: no named parameters.
bricks_get_scriptsA
Get per-page scripts for a WordPress page. Returns custom JS/CSS injected via Bricks API Bridge in wp_footer.
Inputs: page_id (required).
bricks_get_settingsA
Get Bricks Builder global settings (container width, builder mode, post types, disabled features, custom header scripts, etc.).
Inputs: no named parameters.
bricks_get_statsA
Get site-wide statistics: total pages, templates, elements, global classes, fonts, colors, presets, media, PHP/WP/Bricks versions.
Inputs: no named parameters.
bricks_get_templateA
Get the full Bricks Builder data for a specific template. Returns element tree with all settings.
Inputs: template_id (required).
bricks_get_theme_stylesA
Get Bricks Builder global Theme Styles. Returns all styles or a single named style.
Inputs: name.
bricks_html_to_bricksA
Convert HTML/CSS to Bricks Builder JSON elements. Tries Bricks 2.3 native converter first, falls back to our local converter. Handles flex→container, grid→_cssCustom, px stripping, and all Bricks conventions automatically.
Inputs: html (required), css, prefer_native, resolve_classes, +1 more.
bricks_import_full_stateA
Import a full-state backup supplied as JSON (e.g. a file downloaded from another site) rather than a server-stored file. Same safety guarantees as bricks_restore_full_backup (auto safety backup, infra protection).
Inputs: backup (required), pages, globals, templates, +3 more.
bricks_import_templateB
Import a Bricks Builder JSON template file. Accepts the full Bricks export format with content array.
Inputs: title (required), json_data (required), template_type.
bricks_instantiate_sectionB
Create an instance of a section preset with optional overrides. Returns the Bricks elements ready to be added to a page.
Inputs: preset_name (required), overrides, variables, use_learned_styles.
bricks_internal_linksA
Get internal linking suggestions for a page based on keyword overlap with other published pages. Returns top 10 most relevant pages to link to.
Inputs: page_id (required).
bricks_list_backupsA
List all available backup slots for a page. Shows slot number, timestamp, and element count for each backup.
Inputs: page_id (required).
bricks_list_fontsA
List all custom fonts registered in Bricks Builder.
Inputs: no named parameters.
bricks_list_full_backupsB
List all stored full-state backups (file name, date, size). Created via bricks_create_full_backup or the WordPress admin Backup section.
Inputs: no named parameters.
bricks_list_global_classesA
List all Bricks Builder global CSS classes. Returns class names, settings, and usage count.
Inputs: search.
bricks_list_mediaA
List media attachments from the WordPress Media Library. Use to find existing images and their attachment IDs.
Inputs: search, per_page, mime_type.
bricks_list_pagesB
List all WordPress pages/posts that have Bricks Builder data. Returns page ID, title, slug, status, element count, and URL.
Inputs: status, post_type.
bricks_list_presetsA
List all available section presets. Presets are reusable section templates that can be instantiated on any page.
Inputs: category.
bricks_list_redirectsA
List all 301/302/307 redirects with hit counters.
Inputs: no named parameters.
bricks_list_sitesA
List all configured WordPress sites. Shows which site is currently active.
Inputs: no named parameters.
bricks_list_snapshotsA
List all named snapshots for a page. Shows name, description, element count, and timestamp.
Inputs: page_id (required).
bricks_list_templatesC
List all Bricks Builder templates. Can filter by template type (header, footer, section, content).
Inputs: template_type.
bricks_patch_pageA
Apply partial updates to a page. Only sends changed elements instead of full page data. More efficient than bricks_update_page for small changes. Automatically creates a backup before writing (plugin-side, cannot be skipped). Supports optimistic locking via content_hash. Use content_area to patch header or footer. THEME-FIRST: when adding or restyling elements, reuse existing theme tokens and global classes (bricks_get_theme_styles / bricks_list_global_classes) instead of inline styling; prefer settings.style and _typography over _cssCustom, and the text-link/button elements over styled divs.
Inputs: page_id (required), add, remove, update, +3 more.
bricks_purge_cacheA
Purge all caches: Bricks CSS, WP object cache, BAB transients, and any active cache plugins (LiteSpeed, WP Rocket, W3TC, WP Super Cache). Optionally target a specific page.
Inputs: page_id.
bricks_readabilityA
Analyze page content readability using Flesch-Kincaid (English) and Flesch-Amstad (German) scores. Returns word count, sentence length, syllable stats, and readability grade.
Inputs: page_id (required).
bricks_register_fontC
Register a custom font in Bricks Builder. Supports Google Fonts, custom uploaded fonts, and Adobe Fonts.
Inputs: name (required), type (required), url, variants.
bricks_restore_backupC
Restore a page's Bricks data from a backup slot.
Inputs: page_id (required), slot.
bricks_restore_full_backupA
Restore the site from a stored full-state backup file (pages incl. drafts, templates, global tokens, and WP settings). SAFE: takes an automatic safety backup first, and never overwrites infrastructure options (siteurl/home/active theme/active plugins) unless force_infra=true. Pages/templates match by ID (same-site restore). Menus are not restored yet.
Inputs: file (required), pages, globals, templates, +3 more.
bricks_restore_snapshotA
Restore a page from a named snapshot. Creates an auto-backup before restoring. Accepts snapshot ID or name.
Inputs: page_id (required), snapshot_id (required).
bricks_save_presetA
Save a section as a reusable preset. Extracts elements from a page section and stores as a named preset.
Inputs: name (required), elements (required), category, description.
bricks_search_elementsA
Search Bricks elements across all pages. Find elements by text content, element type, CSS class, or specific settings.
Inputs: limit, query, css_class, post_type, +3 more.
bricks_search_pagesB
Search pages by title, slug, or content.
Inputs: query (required), post_type.
bricks_search_templatesB
Search templates by title or content.
Inputs: query (required), template_type.
bricks_security_auditA
Read-only security posture audit of the WordPress + Bricks site behind the bridge. Scores 0-100 (A-F) across Bricks-core CVEs, bridge route permissions (self-audit), code-element exposure, platform currency, config hygiene, and access/transport. Returns findings worst-first with remediation. Any open CRITICAL hard-caps the grade to F. Not a malware scanner. Requires admin credentials.
Inputs: no named parameters.
bricks_security_inventoryA
Exact software inventory of the site behind the bridge — WordPress core, PHP, Bricks, active theme, all plugins/themes with versions and any known-available updates (read from WordPress own update transients, no external network call). Use to feed version-based checks or to see what is outdated. Requires admin credentials.
Inputs: no named parameters.
bricks_seo_analyzeA
Deep SEO analysis for a single page. Checks title/description quality, keyword density, heading hierarchy (H1-H6), image alt texts, content length, structured data, and content freshness. Returns a detailed score breakdown.
Inputs: page_id (required).
bricks_seo_auditA
Bulk SEO audit — scans all published pages and scores each 0-100 based on title, description, OG tags, headings, image alts, canonical, focus keyword, and structured data. Returns pages sorted by score (worst first).
Inputs: no named parameters.
bricks_seo_auto_fixA
Auto-generate missing SEO data from page content. Creates SEO title (from post title), meta description (from first text content), canonical URL, and og:type for pages that lack them.
Inputs: all, dry_run, page_ids.
bricks_seo_bulk_updateA
Update SEO fields for multiple pages at once. Useful for setting noindex on all demo pages, or applying the same og_type to multiple pages.
Inputs: fields (required), page_ids (required).
bricks_seo_plugin_infoA
Detect installed SEO plugins (Yoast, Rank Math, AIOSEO, The SEO Framework) and their meta key mappings. Helps avoid conflicts with BAB SEO output.
Inputs: no named parameters.
bricks_set_gsap_flagA
Toggle the GSAP enqueue flag for a page. When enabled, GSAP + ScrollTrigger are loaded via wp_enqueue_script (proper dedup, browser caching). No need to add CDN tags in per-page scripts.
Inputs: page_id (required), enabled.
bricks_sitemap_analyzeA
Analyze the XML sitemap — parses URLs, detects sitemap index, finds published pages missing from sitemap, and flags noindex pages that are listed.
Inputs: url.
bricks_sitemap_pingA
Ping Google, Bing, and IndexNow to notify them about sitemap updates. Triggers faster re-crawling after content changes.
Inputs: sitemap_url.
bricks_social_previewB
Check social media sharing preview for a page. Validates OG image dimensions (1200x630), title/description lengths, and shows Facebook + Twitter preview data.
Inputs: page_id (required).
bricks_switch_siteA
Switch the active WordPress site. Clears cache and warms the new site. Use bricks_list_sites to see available keys.
Inputs: key (required).
bricks_update_color_paletteA
Update the Bricks Builder color palette. Can add, modify, or replace colors. Bricks 2.3: Supports auto-generating dark mode variants from light colors using OKLCH color science.
Inputs: colors (required), merge, generate_dark_variants.
bricks_update_css_variablesB
Update CSS variables in the Bricks Global Variables Manager.
Inputs: css_variables (required).
bricks_update_global_classA
Update an existing Bricks Builder global CSS class. Merges settings recursively (partial update).
Inputs: class_id (required), settings (required), name.
bricks_update_global_cssB
Update the global custom CSS in Bricks Builder. This CSS is applied site-wide.
Inputs: css (required), append.
bricks_update_pageA
Update the Bricks Builder data for a page. Automatically creates a backup before writing. Validates the JSON structure before saving. Supports optimistic locking via content_hash. Use content_area to write header or footer template data. THEME-FIRST: before generating elements, call bricks_get_theme_styles and bricks_list_global_classes — reuse existing tokens (button styles, utility classes, color palette) instead of inline styling. For buttons prefer settings.style: "primary"|"secondary" over manual _background/_typography. For links use the text-link element, not a styled text-basic. Use _cssCustom only for what settings cannot express.
Inputs: page_id (required), bricks_data (required), content_area, content_hash.
bricks_update_page_assetsA
Set structured per-page assets (JS deps via wp_enqueue_script, JS in wp_footer, infra CSS in wp_head). Auto-sets GSAP flag when js_deps includes "gsap". Requires Bricks API Bridge v2.3+. ⚠️ The css field lands in plugin-private _bab_page_assets (wp_head 9997, BEFORE element CSS) which is INVISIBLE/uneditable in the Bricks builder — reserve it for INFRA only (@font-face, :root{--vars}, @keyframes, critical CSS). Human-editable layout/responsive/visual CSS belongs in a native channel: element _cssCustom (bricks_patch_page), page customCss (bricks_update_page_settings), or global CSS/classes.
Inputs: page_id (required), js, css, js_deps, +1 more.
bricks_update_page_schemaA
Set JSON-LD structured data (Schema.org) for a page. Automatically adds @context. Outputs as in the page head. Accepts a single schema object or an array of schemas.
Inputs: schema (required), page_id (required).
bricks_update_page_seoA
Update SEO meta data for a WordPress page. Partial update — only provided fields are changed. Supports title, description, OG/Twitter overrides, canonical URL, robots (noindex/nofollow), and focus keyword.
Inputs: page_id (required), noindex, og_type, keywords, +10 more.
bricks_update_page_settingsB
Update Bricks page-level settings (metaRobots, header/footer template, per-page overrides).
Inputs: page_id (required), settings (required), merge.
bricks_update_scriptsA
Update per-page scripts for a WordPress page. Scripts are output in wp_footer. Include , , and tags as needed — all are output together before . IMPORTANT: WordPress strips backslashes — use String.fromCharCode(10) instead of "\n" in JavaScript strings.
Inputs: page_id (required), scripts (required).
bricks_update_settingsA
Update Bricks Builder global settings. Supports merge mode (default). Use for container width, post types, disabled features, etc.
Inputs: settings (required), merge.
bricks_update_templateB
Update an existing Bricks Builder template with new content.
Inputs: template_id (required), title, content, conditions, +1 more.
bricks_update_theme_stylesA
Update Bricks Builder global Theme Styles. Supports merge mode (default). Bricks 2.3: Supports responsive breakpoint keys — include ":tablet_portrait" and ":mobile_portrait" nested keys for breakpoint-aware theme styles (e.g. responsive heading sizes).
Inputs: theme_styles (required), merge.
bricks_upload_fontA
Upload custom font files (.woff2, .woff, .ttf, .otf) and register them in Bricks Builder. Uploads to WordPress Media Library, registers the font, and generates @font-face CSS in Global CSS.
Inputs: name (required), files (required), display.
bricks_upload_mediaA
Upload an image to the WordPress Media Library. Provide either a local file_path or a URL. Returns the attachment ID, URL, and metadata needed for Bricks image elements.
Inputs: url, title, caption, alt_text, +1 more.
bricks_validate_bemA
Validate existing global classes against BEM convention. Checks naming patterns, orphaned blocks/elements, conflicts with utility classes, and reports structure issues.
Inputs: prefix.
bricks_validate_elementsA
Validate Bricks elements server-side BEFORE pushing. Catches all known Bricks bugs: invalid IDs, div type, missing children, duplicate IDs, px line-height, parent/child consistency, _display grid.
Inputs: elements (required).
bricks_wp_create_categoryB
Create a new WordPress category.
Inputs: name (required), slug, parent, description.
bricks_wp_create_postA
Create a new WordPress post. Returns the new post ID and URL.
Inputs: title (required), tags, status, content, +4 more.
bricks_wp_create_tagC
Create a new WordPress tag.
Inputs: name (required), slug, description.
bricks_wp_get_postA
Get a single WordPress post with full content, excerpt, categories, tags, featured image, and meta. Works on custom post types via post_type.
Inputs: post_id (required), post_type.
bricks_wp_list_categoriesA
List all WordPress categories with post counts.
Inputs: search, per_page.
bricks_wp_list_postsA
List WordPress posts with filtering. Returns ID, title, status, date, author, categories. Use for content auditing or finding posts to update.
Inputs: page, tags, order, search, +5 more.
bricks_wp_list_tagsB
List all WordPress tags with post counts.
Inputs: search, per_page.
bricks_wp_update_postA
Update an existing WordPress post. Only sends changed fields. Works on custom post types via post_type.
Inputs: post_id (required), tags, title, status, +5 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 115 tools
With 115 tools, several clusters overlap—page-write tools (create/update/patch/append/build), multiple backup systems (page backups, snapshots, full-state), and scripts vs. page assets. Descriptions generally differentiate them, but the sheer scale and overlapping mutation/backup boundaries make misselection likely.
All names use snake_case with a consistent bricks_ prefix, and most follow a predictable action-oriented pattern (get_page, update_page, list_templates). Minor deviations include noun-first tools and a wp_ sub-prefix (bricks_wp_update_post, bricks_call_log, bricks_readability), but the convention remains readable.
115 tools is an extreme surface for one MCP server, far past the 50+ threshold. Even a complex Bricks Builder domain would benefit from splitting into specialised servers to reduce discovery and selection overhead.
Coverage is unusually broad—pages, templates, globals, media, SEO, backups, security, multi-site, and WP content—so few dead ends remain. Missing delete operations for pages/posts/media/fonts are workable via WordPress admin, but they are lifecycle gaps.
Maintenance
Related MCP Connectors
Security-first WordPress MCP server. 129 tools for Claude, ChatGPT, Gemini. Free on wp.org.
Meta Ads and Google Ads MCP server: 250+ tools for Claude, ChatGPT, Cursor and Codex.
WordPress MCP server: publish posts, AI images, SEO and full site management, self-hosted
Hosted WordPress MCP server for Claude, ChatGPT and Cursor, with each action switched per account.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA comprehensive MCP server for WordPress automation that enables users to manage content, themes, and site configurations using AI-driven workflows and the WordPress REST API. It provides a wide array of tools for site planning, management, and optimization compatible with tools like Cursor and Claude.52 npm1ISC
- AlicenseNot gradedqualityBmaintenanceA WordPress plugin that enables AI assistants to manage Bricks Builder sites through natural language. It provides over 20 tools for reading and writing pages, templates, global styles, and WooCommerce layouts directly from MCP-compatible clients.125GPL 2.0
- AlicenseNot gradedqualityBmaintenanceMCP server for AI-assisted WordPress editing across 12 page builders. 172 tools for content management, page builder editing, WooCommerce, SEO analysis, accessibility scanning, and site intelligence. Edits native builder formats (Elementor, Bricks, Divi, Gutenberg, Beaver Builder, and 7 more) with duplicate-before-edit safety, optimistic locking, and surgical element-level operations11MIT
- AlicenseBqualityDmaintenanceMCP server for managing WooCommerce stores through AI assistants like Claude. Provides 101 tools covering products, orders, customers, coupons, shipping, taxes, webhooks, settings, reports, and more.100112 npm2MIT