Concrete CMS MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| CONCRETE_API_SCOPE | Yes | The scopes to request. Example: 'account:read system:info:read' | |
| CONCRETE_API_CLIENT_ID | Yes | The client ID of a registered API integration. | |
| CONCRETE_CANONICAL_URL | Yes | The URL of your Concrete CMS installation. | |
| CONCRETE_API_CLIENT_SECRET | Yes | The client secret of a registered API integration. |
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
| Capability | Details |
|---|---|
| tools | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get-accountB | Make a GET request to /ccm/api/1.0/account |
| add-block-to-page-areaC | Adds a block to a page area. |
| update-block-in-page-areaB | Updates a block within a page area. |
| delete-block-from-page-areaB | Deletes a block from a page area. |
| get-block-by-idB | Find a block by its ID |
| delete-block-by-idB | Delete a block by its ID |
| get-file-by-idC | Find a file by its ID |
| update-file-by-idC | Update a file by its ID |
| delete-file-by-idB | Delete a file by its ID |
| get-filesA | Returns a list of file objects, sorted by last updated descending. The most recent file objects appear first. |
| add-fileD | Adds a file object. |
| move-file-to-locationC | Move a file to a new location |
| get-group-by-idB | Find a user group by its ID |
| get-groupsB | Returns a list of Group objects, sorted by ID ascending. |
| add-groupC | Adds a Group object. |
| get-page-by-idC | Find a page by its ID |
| update-page-by-idC | Update a page by its ID |
| delete-page-by-idB | Delete a page by its ID |
| get-pagesB | Returns a list of page objects, sorted by last updated descending. The most recent Page objects appear first. |
| add-pageD | Adds a page object. |
| get-child-pagesA | Allows the traversal of the sitemap by showing child pages of a particular page. |
| get-site-by-idA | Find a site by its ID |
| get-sitesB | Returns a list of site objects, sorted by date added ascending. |
| get-default-siteB | Retrieve the default site for your Concrete installation |
| get-system-infoB | Make a GET request to /ccm/api/1.0/system/info |
| get-user-by-idA | Find a user by its ID |
| update-user-by-idC | Update a user by its ID |
| delete-user-by-idB | Delete a user by its ID |
| get-usersA | Returns a list of user objects, sorted by date added descending. The most recent user objects appear first. |
| add-userD | Adds a user object. |
| change-user-passwordC | Change a user's password |
| get-page-version-by-page-id-and-version-idB | Find a page version by its ID and the ID of its page. |
| update-page-version-by-page-id-and-version-idC | Update a page version |
| delete-page-version-by-page-id-and-version-idC | Delete a page version. |
| get-page-versions-by-page-idA | Returns a list of page version objects for a given page ID, sorted by date created descending. |
| get_page_contentA | Review a Concrete CMS page as a document. Returns sanitized HTML, raw HTML, and plain text. Prefer this over getPageById with includes=content when summarizing or reading page copy. Does not return areas/blocks. |
| update_page_contentA | Update page block content safely. Creates a new editable page version (PUT page), remaps block IDs, then updates each block (PUT area). Provide blockID values from the version you inspected. Does not approve the new version. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 37 tools
Most tools clearly target a distinct resource and action, such as page CRUD, user management, or block operations. However, get_page_content and update_page_content could be confused with get-page-by-id and update-page-by-id, since both relate to page content, though the descriptions help differentiate them.
The dominant pattern is hyphenated lowercase verb-noun (e.g., list_files, add_group), but two tools break this with snake_case: get_page_content and update_page_content. This mixed convention makes the naming inconsistent, though the majority is predictable.
With 37 tools, this server exceeds the typical scope for an MCP server. While it covers many CMS entities (pages, files, users, groups, blocks, sites), the number feels heavy and could be consolidated; it goes beyond the 'borderline heavy' range.
The tool surface provides solid coverage for pages, page versions, blocks, files, and users with CRUD operations and content-specific tools. Obvious gaps include missing update/delete for groups and lack of site management beyond read operations, but these are minor for the core CMS domain.