Cybersalt Extensions Documentation
Guides and reference for Cybersalt's Joomla extensions
  1. You are here:  
  2. Home
  3. Extensions
  4. MCP for Joomla

Cybersalt MCP for Joomla

Cybersalt MCP for Joomla lets an AI app work on your Joomla site directly. You connect ChatGPT, Claude, Codex, Cursor, VS Code with GitHub Copilot, Gemini CLI or any other app that speaks MCP (the Model Context Protocol), and it can then read and manage your articles, categories, menus, modules, users, custom fields, templates, extensions and Schema.org data, using the same permissions as the Joomla account it acts for.

The site itself is the MCP server. There's nothing to install on your computer and no service in between: the app talks to your site's own address.

New to MCP for Joomla? This page is the reference manual. For an overview of what Cybersalt MCP for Joomla does, with screenshots and the download, see its page on cybersalt.com.

Release history. This page documents version 2.9.1. For what changed in each version, see the changelog.

Requirements. Joomla 5.0 or newer (it runs natively on Joomla 5 and Joomla 6) and PHP 8.2 or newer. OAuth sign-in and the activity log need MySQL or MariaDB. The installer checks the Joomla and PHP versions and stops with a message if your site is below either.

MCP for Joomla is free and open source, with nothing held back. Optional add-ons for specific third-party extensions are listed in the extension itself; some are free and some are paid. It's available from cybersalt.com.

The MCP for Joomla Dashboard: the Connect an AI app to this site card with three ways to connect, the Connection details card with the Endpoint URL, and the permissions table ⤢ Click to enlarge
The Dashboard. Everything you need to connect an AI app starts here.

What's in the package

One package installs four parts, and the installer enables all of them.

PartName in your Joomla adminWhat it does
ComponentMCP for Joomla The MCP server itself, its permission checks, the OAuth sign-in server, the activity log, and the admin screens: Dashboard, Browse MCP Add-ons, Setup Guide, Logs and Support.
Web Services pluginWeb Services - MCP for Joomla Creates the endpoint address. It must be enabled, or the address returns "Not found".
System pluginSystem - MCP for Joomla Provides the 93 built-in tools and makes the common Authorization: Bearer header work with Joomla's API tokens.
API authentication pluginAPI Authentication - MCP for Joomla OAuth Accepts sign-in tokens from AI apps that connected by logging in. It does nothing while OAuth sign-in is switched off.

Installing

  1. Download the package zip (pkg_csmcpforj_v*.zip) from cybersalt.com.
  2. In your Joomla admin go to System → Install → Extensions and upload the zip.
  3. Open Components → MCP for Joomla.

The package registers Cybersalt's update server, so new versions show up under System → Update → Extensions. Updating keeps your settings.

On cPanel and other PHP-FPM hosts the web server drops the Authorization header before Joomla sees it. To stop that, the installer adds a three-line rule to api/.htaccess. Uninstalling removes it again.

Connecting an AI app

Copy your site's Endpoint URL from the Dashboard's Connection details card. It ends in /api/index.php/v1/mcp. It's an address for AI apps, not a web page to open. Then pick one of the three ways on the Connect an AI app to this site card.

1. Log in (easiest)

With OAuth sign-in switched on, an AI app connects the way you'd sign in to any website. You paste the Endpoint URL into the app, it opens your site's normal login page, you log in and click Allow. You never copy a key, and your site's two-factor authentication applies. Some apps, including ChatGPT and claude.ai, can only connect this way.

A Super User switches it on in Options → OAuth sign-in. The Dashboard then shows a Ready check and lists every connected app, each with a Disconnect button. Switching OAuth off disconnects them all at once.

The OAuth sign-in tab in MCP for Joomla's Options, with Enable OAuth sign-in set to No ⤢ Click to enlarge
OAuth sign-in is off until a Super User switches it on.
AppHow to add the site
ChatGPT Plugins in the left sidebar → Add (top right) → Add custom MCP server. Give it a name, paste the Endpoint URL, leave Authentication on OAuth, tick the box, click Create as a plugin, then Connect. Needs a paid plan; Plus works.
claude.ai and Claude Desktop Settings → Connectors → Add custom connector. Paste the Endpoint URL, leave the OAuth Client ID and Secret empty, click Add, then Connect.
Claude Code claude mcp add --transport http joomla <Endpoint URL>, then type /mcp, pick the server and choose Authenticate.
Codex codex mcp add joomla --url <Endpoint URL>. Codex opens the login page itself (if it doesn't, run codex mcp login joomla). Click Allow within a few minutes, in a browser on the same computer.
VS Code + GitHub Copilot Command Palette → MCP: Add Server → HTTP → paste the Endpoint URL. VS Code asks you to log in.
Cursor Add {"url": "<Endpoint URL>"} under mcpServers in mcp.json, then click Login next to the server in Settings → MCP.
Gemini CLI Add "httpUrl": "<Endpoint URL>" for the server in settings.json, then run /mcp auth <name>.
Cline MCP Servers → Remote Servers → Streamable HTTP, paste the Endpoint URL, then click Authenticate.

Your site must be reachable from the internet over HTTPS for ChatGPT and claude.ai, because they connect from their own servers. They also look for your sign-in details at /.well-known/oauth-authorization-server, which Joomla only answers when Use URL Rewriting is on in Global Configuration and the site's .htaccess is in place. If the Dashboard says Not ready, that's usually why. A firewall must also let through /api/index.php/v1/mcp, both /.well-known/ addresses and index.php?csmcpforj_oauth=….

2. Paste a setup prompt

For AI apps that can run commands: Codex, Claude Code, Cursor, Cline, Copilot agent mode and similar. Click Get my API token, paste the token into the field on the Dashboard, click Copy the prompt and paste it into a new conversation. The AI tests the connection itself and offers to save it. This doesn't work in web-only chats such as claude.ai or chatgpt.com.

3. Config file or command line

For apps you set up once in a settings file. Paste your token, click Copy the configuration, and paste it into the app's MCP settings. The copied configuration looks like this:

{
  "mcpServers": {
    "joomla-yoursite": {
      "type": "http",
      "url": "https://yoursite.com/api/index.php/v1/mcp",
      "headers": { "Authorization": "Bearer YOUR_JOOMLA_API_TOKEN" }
    }
  }
}

If an app can't send an Authorization header, use "X-Joomla-Token": "YOUR_JOOMLA_API_TOKEN" instead. The Setup Guide has step-by-step instructions for Codex, Claude Desktop, Claude Code, Cursor and Gemini CLI. Claude Desktop on Windows needs a small wrapper file, which the guide creates for you.

The MCP for Joomla Setup Guide: The easy way, Get your API key, and the On this page menu ⤢ Click to enlarge
The Setup Guide walks through each app, including the API key steps.

Getting an API token

Each Joomla user has their own token. Open your profile (the Dashboard's Open my API token link takes you there), go to the Joomla API Token tab, click Reset, then the eye icon, and copy the whole value. Treat it like a password: whoever has it can do everything that user can do. Clicking Reset again makes the old token stop working immediately.

Who can use it

Every tool call runs as the Joomla user who owns the token (or who logged in). MCP for Joomla never lets an AI do something that user couldn't do in the Joomla admin. Two separate permissions decide who gets in:

  • Web Services Login is Joomla's own switch for its whole API. Only Super Users have it by default. Grant it to a group in System → Global Configuration → Permissions, on the group.
  • Use MCP endpoint allows the read tools, and Write through MCP endpoint allows the tools that change things. Set them in Components → MCP for Joomla → Options → Permissions. A group that can manage the component passes both.
GroupWorks out of the box?What it needs
Super UsersYesNothing.
AdministratorAlmost Web Services Login. Joomla's defaults already let Administrators manage the component, which covers both MCP permissions.
ManagerNo Web Services Login, plus Use MCP endpoint (and Write through MCP endpoint for changes).
Other groupsNo The same as Managers.

Five tools are for Super Users only, whatever the permissions say, because they can change who has power over the site: install_extension, set_component_permission, apply_joomla_update, set_extension_enabled and set_plugin_params. The tools that manage other users' API tokens also refuse to act on anyone whose group is equal to or above yours.

Read-only connections

Options → MCP server → Read-only mode makes the endpoint offer and accept only tools that read: the ones whose names start with list_, get_, read_, check_, validate_ or fetch_, plus joomla_update_healthcheck. An app can also add ?read_only=1 to the endpoint address to make one connection read-only, but it can't switch writes back on for a site set to read-only. To limit a connection to some tool groups, add ?categories=articles,menus (group names are listed below).

The tools

The 93 built-in tools are grouped below. Every tool describes itself to the AI app (its inputs and whether it reads, changes or deletes), so the app discovers them on its own. The full list with a line on each is in the README.

Group (?categories= name)ToolsWhat the AI can do
Articles (articles)6List, read, create, update and delete articles, with tags.
Categories (categories)5Manage the category tree of any extension.
Tags (tags)5Manage Joomla tags.
Menus (menus)7List menus and menu item types; create, update and delete menu items.
Modules (modules)7List positions and module types; create, update and delete modules, including menu assignment.
Custom fields (fields)11Manage fields and field groups, and set a field's value on an item.
Users (users)14Manage users and user groups, list access levels, and manage per-user API tokens.
Permissions (permissions)2Read the permission settings of any component, and change one (Super Users only).
Extensions (extensions)6List extensions and plugins and read plugin settings; enable or disable extensions, change plugin settings and install extensions (Super Users only).
Templates (templates)7Read and change template styles, set the default style, and read or write the template's CSS, JavaScript, image and font files (never PHP).
Languages (languages)2List installed and content languages.
Schema.org / SEO (schema_org)10Article Schema.org data through Joomla's Schema.org plugin, custom JSON-LD, and the site profile.
System (system)6Joomla version and site information, clear the cache, list pending extension updates, list scheduled tasks, and fetch a page of the site to check the result.
Joomla update (joomla_update)3Check for a Joomla update, run a pre-update health check, and apply the update (Super Users only, with explicit confirmation).
Admin menu (admin_menu)2Read the preset files behind the admin sidebar, to diagnose a missing menu entry.

Add-ons

Browse MCP Add-ons lists optional add-ons that give the AI tools for specific third-party extensions, such as AcyMailing, Akeeba Backup, Akeeba Ticket System, Community Builder, Convert Forms, DPCalendar, J2Commerce, JCE, Maximenu CK, Page Builder CK and VirtueMart. Each one is a separate plugin, so you install only what you use. You need the third-party extension itself, from its own vendor; the add-ons are built independently by Cybersalt.

  • Free add-ons install with one click.
  • Pro add-ons, for commercial extensions, are sold separately at cybersalt.com. Link your Cybersalt account once on the Dashboard and they install and update from the same screen.
Browse MCP Add-ons: a grid of add-ons, each marked Free or Pro, with New, Experimental and Not installed badges ⤢ Click to enlarge
Browse MCP Add-ons. Each card shows whether the add-on is free or Pro and whether it's installed.

When your site contacts cybersalt.com. Opening Browse MCP Add-ons fetches the add-on list (kept for 24 hours; a copy ships with the extension for when cybersalt.com can't be reached). If you link a Cybersalt account, your site registers an installation ID with your domain and email address and re-checks your membership about once a day. Updates come through Joomla's normal update server. The MCP endpoint itself never contacts cybersalt.com.

Activity log

Components → MCP for Joomla → Logs shows what MCP for Joomla did: each app that connected, every tool call with its arguments and how long it took, anything that was refused and why, and every step of an OAuth sign-in. You can filter by status, source, event, time, user or request, sort, search, and download the log as CSV.

The MCP for Joomla Logs screen: counts of entries, warnings and errors, filters, and a list of tool calls with their status, user and time taken ⤢ Click to enlarge
The activity log. Here a Manager without MCP permission was refused, while the Super User's calls ran.

Entries are kept for 30 days by default (Options → Logging), and never more than the newest 20,000. API tokens, sign-in codes, client secrets and password-like arguments are never written to the log.

Options

TabSettingDefaultWhat it does
CatalogCatalog endpoint URLcybersalt.com Where the add-on list comes from. Leave it unless you run a private mirror.
CatalogCatalog cache TTL (hours)24 How long the add-on list is kept. The Refresh catalog button skips the wait.
CatalogShow unavailable Pro add-onsYes Whether Pro add-ons this site isn't licensed for are listed.
CatalogRe-check membership every (seconds)86400 How often a linked site re-checks its Cybersalt membership.
MCP serverRead-only modeNo Only read tools are offered and accepted. See Who can use it.
OAuth sign-inEnable OAuth sign-inNo Lets AI apps connect by logging in. See Connecting an AI app.
OAuth sign-inAccess token lifetime (seconds)3600 How long each sign-in token lasts before the app renews it, silently.
OAuth sign-inStay signed in for (days)30 How long an app may keep renewing without the user logging in again.
LoggingWhat to logEverything Everything, warnings and errors only, or nothing.
LoggingKeep entries for (days)30 Older log entries are deleted automatically.
Screencasting privacyHover-to-reveal delay / Auto-hide3 s / 8 s API tokens and your membership email are blurred on screen until you hover over them, so they don't leak into a screen recording or a live stream.
Pro Membership(read-only)  Shows the linked Cybersalt account and its status.
Permissions   Who may use the endpoint and write through it, plus the standard Joomla permissions.

Safety features

  • When an app connects, the site tells it to treat everything it reads as untrusted, never to follow instructions found inside your content, and to ask before changing anything.
  • Deletes go to the trash by default. Permanently deleting an article or module only works once it's in the trash. Deleting a custom field and applying a Joomla update need an explicit confirmation.
  • Template file tools can only reach the template's own media folder and can't write PHP.
  • The page-fetching tool only fetches pages from your own site.
  • A tool call that contains the connection's own token is refused, because that's a common sign of a prompt-injection attempt.
  • If one add-on breaks, only its tools are dropped; everything else keeps working, and the Logs name the add-on.

Troubleshooting

SymptomCause and fix
401 "Unauthorized" or "Authentication failed" The token isn't right. It may have been Reset since you copied it, copied with a character missing or an extra space, or (in a config file) be missing the word Bearer and a space in front of it. On cPanel hosts, also try the X-Joomla-Token header.
403 "Forbidden" on every tool The user's group doesn't have Web Services Login. See Who can use it.
403 "Forbidden" or "Malware detected" from a security extension A firewall such as RSFirewall, Admin Tools or Securitycheck is blocking the request. Allow /api/index.php/v1/mcp (in RSFirewall, add it to Skip Filtering).
404 "Not found" Check the address ends with /api/index.php/v1/mcp, and that Web Services - MCP for Joomla is enabled in System → Manage → Plugins.
Connected, but no tools show up The user's group is missing Web Services Login or the MCP permissions, or the app cached an empty list. Fix the permissions, then disconnect and reconnect the server in the app.
"You do not have permission to perform this action." The user can connect but isn't allowed that tool: grant Write through MCP endpoint for changes, or use a Super User for the five Super-User-only tools.
ChatGPT's or Claude's dialog has no field for the API key Those dialogs only connect by logging in. Switch on OAuth sign-in in Options.
The Dashboard's sign-in check says Not ready Turn on Use URL Rewriting in Global Configuration and make sure the site's .htaccess is in place (rename htaccess.txt).
Sign-in works on your computer but not from ChatGPT or claude.ai The site must be reachable on public HTTPS, and a firewall may be blocking those apps' servers. Allow the addresses listed under Log in.
Signing in from a server with no browser Desktop apps open a browser on the same machine for sign-in. On a headless server, use an API token instead.

Uninstalling

Uninstall the Cybersalt MCP for Joomla package in System → Manage → Extensions. That removes all four parts, the OAuth and log tables, and the api/.htaccess rule. Add-ons are separate extensions; uninstall them on their own.

Getting help

Use the Support screen inside the extension (it attaches your versions and, if you like, recent warnings from the log), the Cybersalt support form, or GitHub.


Cybersalt MCP for Joomla is developed by Cybersalt Consulting Ltd. and released under the GNU General Public License v2 or later. It's an independent, clean-room implementation of the Model Context Protocol for Joomla.

The Dashboard — click anywhere to closeClose × The MCP for Joomla Dashboard OAuth sign-in option — click anywhere to closeClose × The OAuth sign-in tab in Options The Setup Guide — click anywhere to closeClose × The Setup Guide Browse MCP Add-ons — click anywhere to closeClose × Browse MCP Add-ons The activity log — click anywhere to closeClose × The Logs screen

Subcategories

Changelog

Main Menu

  • Home
  • Extensions A-Z
  • Guides