Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
MODX_MCP_TOKENYesAuthentication token for the MODX MCP API
MODX_MCP_SITE_URLYesURL of the MODX MCP API endpoint
MODX_MCP_AUDIT_HOOKNoOptional external audit hook

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
modx_list_elementsC

List MODX elements of a type (id + name). Supports an optional name filter and pagination.

modx_make_staticA

Convert a chunk/snippet/template/plugin to a static file under core/elements/ (writes the file, sets static=1 + source=Filesystem). One element via {type,id}, or a batch via {items:[{type,id}]}. Edit the resulting files directly afterwards. (See also the modxmcp.auto_static setting to do this automatically on every create/update.)

modx_get_site_stateB

Read the connector-authoritative site revision and atomic-precondition capability used by Site Agent Runtime.

modx_get_elementA

Read a MODX element (returns its fields + full code). For a large chunk/snippet/template/plugin you only need to edit, prefer modx_view_element (numbered, windowable) so you don't pull the whole body into context.

modx_update_element_propertyB

Change ONLY the value of one EXISTING default property of a snippet, chunk, plugin or template. Requires expected_value (compare-and-swap); preserves other property definitions and source code, uses standard MODX update processor.

modx_update_elementA

Update a MODX element by REPLACING its whole content (send the complete new content). Best for small elements or full rewrites. For a few changes inside a large chunk/snippet/template/plugin, do NOT use this — use modx_view_element + modx_edit_element_lines instead (sends only the changed lines, far fewer tokens, atomic with a safety anchor).

modx_create_elementD

Create a new MODX element.

modx_delete_elementA

Delete a MODX element. Run with dry_run:true FIRST — it returns what would be deleted plus where the element is still referenced (for resources: child-resource count), without deleting. Review that before the real delete.

modx_view_elementA

View a chunk/snippet/template/plugin as NUMBERED lines (like cat -n), optionally windowed by start_line/end_line. Use this to find the exact line numbers to edit with modx_edit_element_lines — cheaper than pulling the whole element. Returns total_lines and the numbered window.

modx_edit_element_linesA

Edit a chunk/snippet/template/plugin BY LINE, sending only the changed lines (no need to resend the whole element). Each edit replaces the inclusive range [start_line..end_line] with replacement. Conventions: delete = replacement ""; insert before a line = set end_line to start_line-1. Strongly recommended: pass expect (the current text of those lines) as a safety anchor — it is verified, and relocated to its unique match if the line numbers drifted; any mismatch aborts the WHOLE call (atomic, nothing is written). MULTI-EDIT RULES: all line numbers refer to the file exactly as you last saw it in modx_view_element (the original) — do NOT adjust them for the effect of your other edits; the server applies edits together (bottom-up) so earlier inserts/deletes never shift later ones. Ranges must not overlap. So to change several spots in one big file, send them all in ONE call with original line numbers. Read first with modx_view_element to get line numbers.

modx_list_system_settingsC

List MODX system settings.

modx_get_system_settingC

Get one MODX system setting by key.

modx_create_system_settingC

Create a MODX system setting.

modx_update_system_settingC

Update a MODX system setting by key.

modx_delete_system_settingC

Delete a MODX system setting by key.

modx_list_media_sourcesC

List MODX media sources.

modx_get_media_sourceC

Get one MODX media source.

modx_create_media_sourceB

Create a media (file) source. class_key defaults to sources.modFileMediaSource. 'properties' is a {name:value} map of source params (e.g. {"basePath":"assets/files/","baseUrl":"assets/files/"}) merged into the source.

modx_update_media_sourceB

Update a media source. 'properties' is a {name:value} map merged into the source's params (others preserved) — use it to set basePath/baseUrl/etc.

modx_delete_media_sourceC

Delete a media source by id.

modx_list_media_source_filesC

List files and folders inside a media source.

modx_read_media_source_fileC

Read a file inside a media source.

modx_list_installed_componentsB

List installed MODX components from core/components and assets/components.

modx_get_component_filesC

List files and folders inside an installed MODX component.

modx_read_component_fileC

Read a file from an installed MODX component.

modx_get_resource_tvsC

Get a resource's template-variable (TV) values.

modx_update_resource_tvsC

Update a resource's template-variable (TV) values.

modx_list_tv_valuesA

List explicitly stored values for one TV across all resources, including stale values on resources whose current template may no longer use that TV. Use before deleting or restructuring a TV.

modx_clear_tv_valuesA

Preview or clear every explicitly stored value for one TV. Safe by default: without confirm:true it only returns the number of stored values. Destructive; use only as part of the staged TV deletion workflow after backup.

modx_versionx_list_versionsB

List VersionX versions for a MODX resource, chunk, snippet, template, plugin, or TV.

modx_versionx_get_versionC

Read one VersionX version payload before deciding whether to revert to it.

modx_versionx_revert_versionA

Revert a MODX object to a specific VersionX version. This changes live MODX data and requires confirm=true.

modx_ms2_list_option_typesB

List available miniShop2 product option field types.

modx_ms2_list_optionsC

List miniShop2 product options from the settings options tab.

modx_ms2_get_optionC

Read one miniShop2 product option by id.

modx_ms2_create_optionC

Create a miniShop2 product option in settings options.

modx_ms2_update_optionC

Update a miniShop2 product option in settings options.

modx_ms2_assign_option_to_categoryC

Assign an existing miniShop2 option to an msCategory.

modx_ms2_get_product_optionsC

Read miniShop2 option values assigned to a product.

modx_ms2_update_product_optionsC

Create, update, or remove miniShop2 option values for a product. Use null value to remove an option value.

modx_virtualpage_list_eventsC

List VirtualPage events that bind route groups to MODX events.

modx_virtualpage_get_eventB

Read one VirtualPage event by id or name, including its routes.

modx_virtualpage_create_eventC

Create a VirtualPage event, usually OnPageNotFound or OnHandleRequest.

modx_virtualpage_update_eventC

Update a VirtualPage event by id or name.

modx_virtualpage_list_handlersC

List VirtualPage handlers that render resources, snippets, chunks, or dynamic resources.

modx_virtualpage_get_handlerB

Read one VirtualPage handler by id or name, including routes that use it.

modx_virtualpage_create_handlerC

Create a VirtualPage handler. type can be resource, snippet, chunk, dynamic_resource/template, or 0..3.

modx_virtualpage_update_handlerC

Update a VirtualPage handler by id or name.

modx_virtualpage_list_routesC

List VirtualPage routes with their event and handler names.

modx_virtualpage_get_routeA

Read one VirtualPage route by id, or by route plus optional method.

modx_virtualpage_create_routeC

Create a VirtualPage route and bind its event plugin if needed.

modx_virtualpage_update_routeC

Update a VirtualPage route by id.

modx_virtualpage_resolve_routeC

Simulate VirtualPage route matching and return handler plus vp.* placeholders.

modx_virtualpage_delete_eventB

Delete a VirtualPage event by id or name (removes its routes too, per the VP schema).

modx_virtualpage_delete_handlerC

Delete a VirtualPage handler by id or name.

modx_virtualpage_delete_routeC

Delete a VirtualPage route by id or name.

modx_virtualpage_clear_cacheB

Clear VirtualPage route/cache files and refresh MODX cache.

modx_search_codeA

Full-text search across element and resource CONTENT (and names). Finds the chunk/snippet/template/plugin/TV/resource that contains a string, including where an element is referenced or mentioned. Matches static elements by reading their static file. Use this to navigate the codebase (e.g. query 'header' finds the header chunk and everything that uses or mentions it). Each content hit returns id, line (1-based line of the match) and line_text (the exact line, verbatim) — so for a one-line change you can go straight to modx_edit_element_lines using line as start_line/end_line and line_text as expect, with no separate read. For multi-line context, open a window with modx_view_element around line.

modx_find_usagesA

Find where an element is used: content matches for its name across all code, plus — if it is a template — the resources assigned to that template. Use before renaming/deleting an element.

modx_list_resourcesA

List resources (the content tree), optionally filtered by parent, context, deleted state, or a pagetitle/alias/uri query. Returns id, pagetitle, alias, uri, parent, template, published, deleted, isfolder, class_key, context_key.

modx_replace_acrossA

Site-wide search & replace across code elements (chunk/snippet/template/plugin): find every element whose CONTENT contains find and replace ALL occurrences with replacement, in ONE call (no per-element reads/writes from your side). Honours static files vs DB. SUBSTRING match — find:"foo" also matches inside footer/food; make find specific. ALWAYS run dry_run:true FIRST and review the returned preview (the exact lines that would change) before the real run. case_sensitive defaults to TRUE here. Use for renames / URL / class changes across the codebase. (Does not touch resources — edit those individually.)

modx_dependency_graphA

Map how the site's elements WIRE TOGETHER, in one call: which template pulls which chunk/snippet/TV, which snippet renders which chunk, where each TV is attached. Returns nodes (elements, with in/out reference degree) + edges ([from_index, to_index, kind]) — plus missing (tags pointing at a chunk/snippet that does NOT exist — broken references) and orphans (elements nothing references — safe-to-delete candidates). Detects references in MODX tags, &tpl=chunk`` properties, $modx->getChunk()/runSnippet() in PHP, MIGX inputTV/renderchunktpl, and template↔TV attachments. Token-safe: it scales with the number of ELEMENTS, never with content (resources are counts, not nodes). USE IT: to understand an unfamiliar site's code structure after modx_project_overview; with focus before editing or deleting an element, to see exactly what depends on it (cheaper and more precise than modx_find_usages, which is a text search); with format:"summary" as a fast health check for broken/dead elements.

modx_describe_objectA

Schema introspection: list an xPDO class's fields (name + php/db type, null, default) and its primary key, so you use REAL field names instead of guessing. Accepts a class name (e.g. modResource) or an alias (resource/chunk/snippet/template/plugin/tv/category/user/context/setting). Use before create/update on an unfamiliar object.

modx_bulk_resourcesA

Apply ONE operation to many resources at once: publish, unpublish, set_template (needs template), move (needs parent_to and/or context_to), or delete. Select targets by explicit ids OR by a parent/context/query filter. ALWAYS run dry_run:true FIRST — it reports the change per resource (and child-resource counts for delete) without applying. Changes go through the core resource processors (correct URI/events). Note: delete is a soft delete (moves resources to the MODX trash, recoverable), matching the manager.

modx_create_media_fileB

Create a file inside a media source (writes content). source = source id or name, path = target directory (relative to the source base), name = filename, content = file body.

modx_update_media_fileB

Overwrite a file's content inside a media source. source = id/name, path = file path within the source, content = new body.

modx_delete_media_fileC

Delete a file inside a media source. source = id/name, path = file path within the source.

modx_rename_media_fileC

Rename a file inside a media source. source = id/name, path = current file path, new_name = new filename.

modx_create_media_folderB

Create a folder inside a media source. source = id/name, parent = parent directory (default root), name = folder name.

modx_delete_media_folderB

Delete a folder (and its contents) inside a media source. source = id/name, path = folder path within the source.

modx_duplicate_resourceB

Duplicate a resource. id = source resource; optional name (new pagetitle), duplicate_children (bool), published_mode (preserve|publish|unpublish).

modx_duplicate_elementC

Duplicate an element (chunk/snippet/template/plugin/tv). type + id; optional name for the copy.

modx_undelete_resourceA

Restore a soft-deleted resource from the trash (un-deletes it). id = resource id.

modx_empty_recycle_binA

Permanently purge ALL trashed (soft-deleted) resources. Irreversible — there is no further undo.

modx_reorder_resourcesC

Reorder resources in the tree by setting menuindex (and optionally parent). items = [{id, menuindex, parent?}], applied per resource.

modx_read_error_logA

Read the tail of the MODX error log (core/cache/logs/error.log) for diagnostics. Optional limit (lines, default 100).

modx_refresh_urisA

Regenerate all resource URIs (run after bulk alias/structure changes that left stale URIs).

modx_remove_locksA

Clear stale manager edit locks (when an element/resource is reported locked by a dead session).

modx_project_overviewA

Orient on the whole installed site in ONE compact, cheap call. Returns STRUCTURE + COUNTS (not content): template↔TV map, resource/product COUNTS (overall + by template + by context), a shallow resource tree (roots + child counts only), element categories, content types, contexts, installed integrations. Token-safe on huge sites (100k resources return the same small payload) — for per-item browsing use list_resources / list_elements. Call this FIRST when starting on an unfamiliar project. Optional sections to fetch only some parts; max_tree_nodes caps the tree roots.

modx_system_infoA

Environment/diagnostic info: MODX version, modxMCP version, PHP version, db type, key paths.

modx_suggest_tv_typeA

Unsure which TV input type fits a need? Describe it (English or Russian) and get ranked candidate field_types with reasons + a ready-to-edit create_element skeleton for the top pick (with the extra keys that type needs). Deterministic helper for picking the right TV type; then create it with modx_create_element. See also the tv_input_types help topic.

modx_list_tv_input_typesA

List the TV input (widget) types available on this site. Core types come with use (when to pick each) and requires (extra create_element keys like elements/media_source) so you choose the right field_type for the task; plus any custom types other components register (e.g. MIGX adds 'migx'/'migxdb'). Use a key as field_type when creating a TV. See the tv_input_types help topic for full examples.

modx_check_integrationsA

Report which popular MODX add-ons (miniShop2, MIGX, pdoTools, Tickets, etc.) are installed on this site and what modxMCP can do with each. Read-only.

modx_regenerate_tokenA

Rotate the modxmcp.api_token to a fresh random value and return it. NOTE: this invalidates the current token — update MODX_MCP_TOKEN in your client config immediately, or the next call will be unauthorized.

modx_ms2_list_link_typesC

List miniShop2 link types (msLink): id, type, name, description.

modx_ms2_get_link_typeC

Get a miniShop2 link type by id.

modx_ms2_create_link_typeB

Create a miniShop2 link type. 'type' is the relation kind that decides how products get linked.

modx_ms2_update_link_typeD

Update a miniShop2 link type.

modx_ms2_delete_link_typeC

Delete a miniShop2 link type by id.

modx_ms2_list_product_linksB

List product-to-product links (msProductLink), optionally for one product. Returns link type + master/slave with pagetitles.

modx_ms2_create_product_linkB

Link two products under a link type. The link type's relation kind decides whether the reverse link is also created.

modx_ms2_delete_product_linkC

Remove a product link (by link type + master + slave).

modx_ms2_list_categoriesC

List miniShop2 categories (msCategory).

modx_ms2_create_categoryC

Create a miniShop2 category (msCategory resource).

modx_ms2_update_categoryC

Update a miniShop2 category.

modx_ms2_list_ordersB

List miniShop2 orders (msOrder), filterable by status/customer/context/date range.

modx_ms2_get_orderC

Get a miniShop2 order by id (with items/customer).

modx_ms2_update_orderB

Update a miniShop2 order — typically to change its status (triggers ms2 status-change logic), delivery or payment.

modx_migx_list_configsC

List MIGX configurations (migxConfig): id, name, category, published.

modx_migx_get_configA

Get a full MIGX configuration by id (formtabs, columns, buttons, filters, permissions — as stored JSON strings).

modx_migx_create_configB

Create a MIGX configuration. formtabs/columns/contextmenus/actionbuttons/columnbuttons/filters are JSON strings (same format MIGX stores in the manager).

modx_migx_update_configC

Update a MIGX configuration. Only the fields you pass are changed.

modx_migx_delete_configC

Delete a MIGX configuration by id.

modx_clientconfig_list_settingsC

List ClientConfig settings including context-specific values.

modx_clientconfig_get_settingC

Get a ClientConfig setting by id or key.

modx_clientconfig_create_settingD

Create a ClientConfig setting.

modx_clientconfig_update_settingC

Update a ClientConfig setting by id or key.

modx_clientconfig_delete_settingC

Delete a ClientConfig setting by id or key.

modx_list_property_setsC

List property sets (modPropertySet): id, name, description, category.

modx_get_property_setB

Get a property set by id (incl. its properties).

modx_create_property_setC

Create a property set. 'properties' is a JSON object of property definitions.

modx_update_property_setD

Update a property set.

modx_delete_property_setC

Delete a property set by id.

modx_assign_property_setB

Attach a property set to an element. Identify the element with its id + either element_class (e.g. 'modSnippet') or element_type ('snippet'/'chunk'/'template'/'plugin'/'tv').

modx_unassign_property_setC

Detach a property set from an element (same identification as assign).

modx_helpA

Built-in documentation. Call with no args to list topics; pass {topic} for a guide (e.g. 'tv_input_types', 'study_component', 'minishop2', 'migx', 'acl', 'getting_started'). Read the relevant topic before unfamiliar work, or to learn how to use a newly-installed component.

modx_list_actionsA

List the action names this modxMCP server build supports, grouped by area. Use it to detect client/server version skew.

modx_clear_cacheA

Refresh the MODX cache. Pass partitions (e.g. ['resource','context_settings']) to refresh only those; omit for a full refresh.

modx_flush_permissionsA

Flush cached access permissions (the manager's 'Flush Permissions') so ACL changes apply. ACL write tools already do this automatically; use this for a manual flush.

modx_read_audit_logA

Read the modxMCP write-audit trail (newest last). Optionally filter to one action.

modx_run_processorA

Run ANY MODX processor directly (escape hatch). Requires the modxmcp.allow_run_processor setting to be enabled. High privilege — prefer a dedicated tool when one exists.

modx_list_usersC

List manager/web users (modUser).

modx_get_userC

Get a user by id.

modx_create_userB

Create a user. Pass 'password' to set it explicitly; omit to auto-generate. Profile fields (email, fullname, phone…) are accepted alongside.

modx_update_userC

Update a user (profile fields, active state).

modx_delete_userC

Delete a user by id.

modx_list_contextsC

List contexts (modContext): key, name, description, rank.

modx_get_contextC

Get a context by key.

modx_create_contextC

Create a context. 'key' is the unique identifier (e.g. 'mobile').

modx_update_contextC

Update a context (name/description/rank). 'settings' may be a JSON array of context settings (advanced).

modx_delete_contextC

Delete a context by key.

modx_list_context_settingsC

List settings of a context (modContextSetting).

modx_get_context_settingC

Get one context setting (by context_key + key).

modx_create_context_settingB

Create a context-level setting (overrides the system setting for that context).

modx_update_context_settingC

Update a context setting (by context_key + key).

modx_delete_context_settingC

Delete a context setting (by context_key + key).

modx_install_packageB

Install a transport package from a provider (default modx.com) by name, e.g. {package:'MIGX'}. Returns 'already_installed' if present.

modx_uninstall_packageC

Uninstall a transport package by signature (e.g. 'migx-2.13.0-pl').

modx_list_providersA

List transport providers (modx.com and custom, e.g. modstore.pro): id, name, service_url.

modx_search_packagesA

Search a provider's catalogue (use before install_package). Defaults to modx.com.

modx_create_providerB

Add a transport provider (e.g. modstore.pro). For paid providers pass username + api_key.

modx_update_providerC

Update a transport provider.

modx_delete_providerC

Delete a transport provider by id.

modx_list_namespacesC

List namespaces (modNamespace): name, path, assets_path.

modx_create_namespaceD

Create a namespace.

modx_update_namespaceC

Update a namespace (by name).

modx_delete_namespaceB

Delete a namespace by name ('core' cannot be deleted).

modx_list_lexicon_entriesC

List lexicon entries, filtered by namespace + topic + language (and optional search).

modx_list_lexicon_topicsC

List lexicon topics for a namespace/language.

modx_set_lexicon_entryC

Create or override a lexicon entry (DB override of the file value).

modx_revert_lexicon_entryB

Revert a lexicon entry — remove its DB override so the file value applies.

modx_list_user_groupsC

List MODX user groups (id, name, parent, rank).

modx_get_user_groupB

Get a single user group by id.

modx_create_user_groupC

Create a user group.

modx_update_user_groupD

Update a user group.

modx_delete_user_groupC

Delete a user group by id.

modx_list_user_group_membersC

List members of a user group.

modx_add_user_to_groupC

Add a user to a user group, optionally with a role.

modx_update_group_memberC

Update a user's membership in a group (e.g. change role).

modx_remove_user_from_groupC

Remove a user from a user group.

modx_list_rolesC

List access roles (id, name, authority).

modx_get_roleC

Get a role by id.

modx_create_roleC

Create a role.

modx_update_roleD

Update a role.

modx_delete_roleC

Delete a role by id.

modx_list_access_policiesC

List access policies (id, name, description, template).

modx_get_access_policyC

Get an access policy by id.

modx_create_access_policyC

Create an access policy.

modx_update_access_policyC

Update an access policy (e.g. its permissions map).

modx_delete_access_policyC

Delete an access policy by id.

modx_list_access_policy_templatesC

List access policy templates.

modx_get_access_policy_templateC

Get an access policy template by id.

modx_create_access_policy_templateC

Create an access policy template.

modx_update_access_policy_templateD

Update an access policy template.

modx_delete_access_policy_templateC

Delete an access policy template by id.

modx_list_access_permissionsB

List permissions defined by a policy template (read-only catalogue).

modx_list_resource_groupsC

List resource groups (id, name).

modx_get_resource_groupC

Get a resource group by id.

modx_list_resource_group_resourcesC

List resources assigned to a resource group.

modx_create_resource_groupD

Create a resource group.

modx_update_resource_groupC

Update a resource group.

modx_delete_resource_groupC

Delete a resource group by id.

modx_assign_resource_to_groupB

Add a resource (document) to a resource group.

modx_remove_resource_from_groupC

Remove a resource (document) from a resource group.

modx_list_context_accessB

List context-access ACL entries, optionally filtered by usergroup/context/policy.

modx_grant_context_accessC

Grant a user group access to a context with a policy and minimum role authority.

modx_update_context_accessC

Update a context-access ACL entry by id.

modx_revoke_context_accessC

Remove a context-access ACL entry by id.

modx_list_resourcegroup_accessC

List resource-group access ACL entries.

modx_grant_resourcegroup_accessB

Grant a user group access to a resource group with a policy and minimum role authority.

modx_update_resourcegroup_accessC

Update a resource-group access ACL entry by id.

modx_revoke_resourcegroup_accessC

Remove a resource-group access ACL entry by id.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

C2.4/5.0

Scored across 192 tools

Disambiguation3/5

Most tools are distinct and namespaced by domain, but several clusters overlap: get_element vs view_element, update_element vs edit_element_lines, search_code vs find_usages vs dependency_graph, and run_processor as a broad escape hatch. With 192 tools, an agent can still misselect among similar read/edit/search tools, though the detailed descriptions mitigate this.

Naming Consistency4/5

Names consistently use the modx_ prefix and snake_case, with clear domain prefixes such as ms2, virtualpage, migx, clientconfig, and versionx. A few names like project_overview, system_info, dependency_graph, and make_static deviate from strict verb_noun form but remain readable and predictable.

Tool Count1/5

192 tools is far beyond a well-scoped MCP surface; even with domain grouping, the set imposes high selection and context costs. It may mirror a full CMS admin API, but as a coherent toolset it is extremely oversized.

Completeness3/5

Coverage is broad across elements, settings, media, ACL, packages, and add-ons, but core resource lifecycle is notably incomplete: list/bulk/duplicate/undelete exist, yet there is no direct get/create/update resource content tool. Agents must fall back to the high-privilege run_processor for common page edits.

Maintenance

ActivityActive
ResponsivenessNo recent community issues