MCP for DPCalendar is a free add-on for MCP for J that puts your DPCalendar site in front of your AI client. Forty-three tools cover calendars, events including recurring ones, bookings, tickets with check-in and check-out, locations, coupons, tax rates and the external calendar feeds DPCalendar syncs from Google, iCloud and CalDAV โ plus three roll-up reports the component doesn't offer. Every write goes through DPCalendar's own models, so the notification emails, the capacity bookkeeping, the tags and the custom fields all behave exactly as they would if you'd used the admin.
Why this exists
DPCalendar's admin is good at the thing it's built for, which is working on one event or one booking at a time. What it doesn't do is answer questions that cross entities, and those are most of the questions that actually come up โ how many people are booked across next month, which events are close to capacity, how much a given calendar has taken this quarter, who booked but never showed. The answers are all in the data, but getting to them means joining bookings to tickets to events by hand, and the shape of those tables makes that more awkward than you'd guess. This add-on does that joining for you and hands the result to your AI client, which is a better interface for an open-ended question than a filtered list ever is.
What Claude can do
Forty-three tools, grouped roughly the way you'd reach for them.
| Area | Tools | What you can do |
|---|---|---|
| Calendars | 2 | List the calendars on the site and read one, with its access levels and settings. |
| Events | 8 | List with filters, read one with its locations, hosts and per-state ticket counts, create, update, delete, publish or archive or trash, toggle featured, and duplicate. Recurrence is a field you can set on create and update. |
| Bookings | 4 | List with filters, read one with its tickets, coupon and totals broken out, update, delete. |
| Tickets | 5 | List and read individual attendee spots, check someone in, undo a check-in, delete a ticket. |
| Locations | 5 | Full create, read, update and delete over the venues events are attached to. |
| Coupons | 5 | Full create, read, update and delete, including whether a coupon is a percentage or a flat value and whether it applies to events or tickets. |
| External calendars | 5 | Manage the Google, iCloud, iCal-URL and CalDAV feeds DPCalendar syncs from, including adding a new one. |
| Tax rates | 5 | Full create, read, update and delete over the tax rules applied at checkout. |
| Countries | 1 | The reference lookup everything address-shaped is keyed against. |
| Reports | 3 | A one-call dashboard snapshot with counts by state and recent activity, per-event booking summaries, and revenue. |
Installing it
You'll need Joomla 5 or 6, MCP for J, and DPCalendar itself. The free Core edition from Digital Peak is what these tools are built against, so there's nothing to buy.
- 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.
- 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. If you go hunting for a menu entry after installing, that's why there isn't one. On a site without DPCalendar, every tool refuses cleanly and says so rather than failing in some confusing way.
Using it
Ask for what you want in plain language. "What's booked for next month, and which events are close to capacity?" runs the dashboard and the per-event booking summary together. "Show me booking 318 with everyone on it" pulls the booking, its tickets with each attendee resolved to a name, the coupon applied and the totals. "Check in ticket 1204" marks that attendee in โ and because it goes through DPCalendar's own model, any plugin watching for that state change still fires.
The dashboard summary is the natural first call. It's read-only, it takes no arguments, and it gives you counts across every entity plus a next-seven-days and past-thirty-days view, which is usually enough to work out what you actually want to ask next.
How the pieces fit together
Three things about DPCalendar's structure are worth knowing, because they explain why some of these tools are shaped the way they are.
Calendars are Joomla categories. There's no calendars table โ a calendar is a category belonging to DPCalendar, which is why calendar permissions behave exactly like category permissions and why the calendar tools are read-only here. You create and manage calendars in Joomla's own category manager, and this add-on reads them.
A booking isn't attached to one event. It's a checkout container, and it can span several. The link runs through the tickets: each ticket carries both the booking it belongs to and the event it's for. That's why "everyone booked for this event" and "everything in this person's booking" are two different queries, and why the booking and ticket tools are separate rather than one nested thing.
An event's calendar reference is text, not a number. DPCalendar stores events pulled in from Google or iCloud alongside your own, and those carry string identifiers rather than numeric category ids. The filters here take either, which matters if you sync external feeds and want to tell synced events apart from ones your site owns.
Permissions and security
Two things to be deliberate about.
The external-calendar tools return the feed's stored settings, credentials included. That's the same data DPCalendar's own edit form holds, and it's what makes the tools useful for auditing a set of feeds โ but it does mean anything that can call this add-on can read the credentials for your connected Google or CalDAV calendars. If that isn't what you want, that's an argument for who you give an MCP token to rather than an argument against the tool, but it's worth knowing before you hand one out.
Deleting an event is permanent. The delete tool goes through DPCalendar's own delete, which cascades through the junction tables and the tickets, and there's nothing to undo afterwards. If what you want is a reversible removal, set the event's state to trashed instead โ that's a different tool and it's the one you almost always want. Deleting a ticket updates the event's capacity counter correctly but deliberately leaves the parent booking alone, so a booking that loses its last ticket needs deleting in its own right.
Open source
GPL-2.0-or-later, the same license as Joomla itself. Source lives on GitHub.
Add comment