MCP for J add-on logoMCP for Maximenu CK is a free add-on for MCP for J that lets your AI client see and fix the parts of Maximenu CK that decide how a menu actually looks. Its eleven tools cover Maximenu modules, styles and the custom CSS on each style, the compiled-CSS cache, and the mega-menu column layout of every dropdown, so you can ask why a dropdown is too wide or why a CSS change isn't showing and get a real answer. It works with the free Light edition and with Pro. The custom CSS tool writes both of the copies Maximenu keeps on a style, which is the step a hand edit of the database always misses.

Why this exists

A Maximenu CK change usually touches two things that Joomla's own tools can't reach. The column layout of a mega menu lives in each menu item's settings, and the custom CSS that renders lives on the Maximenu style, not on the module. The module still has a custom CSS field, but Maximenu 9 and later never output it. When either of these is wrong the menu just looks wrong, and nothing on the page tells you why. This add-on lets your AI client read the whole set-up, work out each dropdown's width the same way Maximenu's renderer does, and write custom CSS to the place it actually renders from.

What Claude can do

There are eleven tools, grouped roughly the way you'd reach for them.

AreaToolsWhat you can do
Diagnostics2Component version and edition, and a health check that looks for the problems that make a menu change silently not appear.
Modules2List every Maximenu module and read one, including which style it uses and how it loads its CSS.
Styles4List and read styles, write a style's custom CSS with both copies kept in step, and clear the compiled CSS file that can hide a change.
Menu items3Read a menu's mega-menu layout, read one item's Maximenu settings, and check whether a dropdown panel will fit. All read-only.

Installing it

You'll need Joomla 5 or 6, PHP 8.1 or later, MCP for J, and Maximenu CK itself. The free Light edition is enough.

  1. Open Components โ†’ MCP for Joomla โ†’ Browse MCP Add-Ons and click Install on this add-on. You can also download the ZIP above and install it through System โ†’ Install โ†’ Extensions.
  2. That's the whole install. The plugin enables itself, and the tools show up in your connected AI client the next time it lists them.

There's no admin screen for this plugin, by design. It adds tools to MCP for J rather than a place to click.

Using it

Start with "Check my Maximenu setup". The health check is read-only and covers the usual reasons a change doesn't show up: a module pointing at a style that's been trashed (a trashed style outputs no CSS at all), CSS sitting in the module's dead custom CSS field, a compiled CSS file that will never be rebuilt, custom CSS rules that match nothing, and the common mega-menu column mistakes.

After that, ask for what you want in plain language. "Why does the last column of the Services dropdown drop underneath the others?" reads the layout and will usually tell you the first child isn't marked as a column start. In Maximenu the first child supplies the width of column 1, so if it isn't marked, column 1 is unsized and the last column falls below. "Will the Services dropdown fit in 1100 pixels?" works the panel width out the way Maximenu does. That's the sum of every column's width across all the rows, so a two-row layout can come out wider than its widest row.

Custom CSS lives in two places

This is the one thing worth understanding before you change Maximenu CSS by any route other than Maximenu's own style editor.

A Maximenu style stores its custom CSS twice. The raw copy sits in its own column, and when the menu renders, |ID| in it becomes the menu's bare id, so only rules written as #|ID| work there. When you save a style, the editor also adds a second copy to the end of the style's generated CSS, and in that copy only a bare |ID| works. That's the form the editor's own selector buttons insert. Every rule works in exactly one of the two copies.

So if you change the custom CSS straight in the database, you've only changed the raw copy. The old rules keep applying from the other copy, and new bare |ID| rules match nothing, until someone opens the style in Maximenu and saves it. write_maximenuck_style_custom_css writes both copies together. In testing, opening the style in Maximenu's editor afterwards and saving it unchanged left the stored style byte-for-byte identical, so the tool writes what the editor itself would have written. If the two copies have already drifted apart, the tool tells you, leaves the generated CSS alone, and refuses any rule it can prove won't apply rather than writing it anyway.

On cybersalt.com itself, this tool was used to re-save the custom CSS of the site's own top-menu style after an earlier direct database write had left its two copies out of step.

The rest of a style, meaning the colours, fonts and spacing you set in the editor, is generated in your browser by Maximenu's style editor and can't be rebuilt on the server. So there's no tool here that changes it. That stays in the editor.

If your site is behind a CDN

Maximenu's Load compiled CSS option decides where a menu's CSS comes from. Set to No, the CSS is inlined in every page. Set to Compile, Maximenu rewrites a maximenuck_<id>.css file on every render. Set to Yes, it writes that file once and serves it from then on, so later changes stay invisible until the file is deleted. Every CSS write here deletes it for you, and clear_maximenuck_compiled_css does it on its own.

There's a second trap that deleting the file doesn't fix. Maximenu links the compiled file with no version number on the end of its URL, so a CDN or a browser that already cached it keeps serving the old one. On the test site, Cloudflare kept serving the old file after it had changed on disk, with a 30-day cache lifetime. Every write and clear tool returns the exact URL to purge at your CDN. The other way out is to set Load compiled CSS to No, so the CSS goes out with the page and changes with it. When you check a change, load the stylesheet with something like ?v=1 on the end, because a plain reload can show you the stale copy.

Permissions and security

Maximenu's tables use MySQL's three-byte utf8 and store custom CSS in a 64 KB column, so the tools refuse emoji and oversized CSS up front rather than letting MySQL cut a value off partway through. The compiled-CSS clear only ever deletes files inside Maximenu's own compiled-CSS folder, and it checks the resolved path before it does.

What's in the Pro add-on instead

Writing the per-item mega-menu settings is a Maximenu CK Pro feature. In Light's menu manager, every per-item control (create a column, column width, new row, submenu size, icon, insert a module) shows a "Pro only" notice instead of saving. This add-on reads those settings, including on a site that moved from Pro to Light and kept them, but it doesn't write them, even though it technically could. That's Cรฉdric Keiflin's paid feature, and it isn't ours to give away. Writing them ships in MCP for Maximenu CK Pro, which also refuses unless Maximenu CK Pro is installed. Everything on this page works on Light, and because Light is free, so is this.

This is version 1.0.0. Every tool was run on a Joomla 6.2 test site against Maximenu CK Light 10.3.0, with the writes checked both in the database and in the rendered menu in a browser. A few parts of Maximenu aren't covered yet: Menu Builder menus, the style presets, and modules fed by Maximenu's source plugins (K2, VirtueMart, HikaShop and so on). If you need one of those, let me know.

Open source

GPL-2.0-or-later, the same license as Joomla itself. Source lives on GitHub.


Interesting blog? Like it on Facebook, Post it or share this article on other bookmarking websites.

Written by:
Tim Davis is the founder and owner of Cybersalt.
Log in to comment

Add comment

Submit