# Plone MCP

> Plone manages your enterprise CMS content, users, and complex workflows directly from your AI agent. You search for resources, create new pages, update user profiles, or push content through its lifecycle—all using natural conversation. It skips the manual navigation of a traditional web UI.

## Overview
- **Category:** document-management
- **Price:** Free
- **Tags:** cms, plone, enterprise-content, workflow-automation, user-management

## Description

You manage your entire enterprise CMS content—users, groups, and complex workflows—straight from your AI agent. Forget clicking through a labyrinth of web menus; you just talk to it. Your AI client acts like a site editor and admin rolled into one, giving you full control over Plone without ever touching the dashboard.

**Creating and Modifying Content Objects**

The `create_content` tool lets you build new pages or documents right in the CMS. You just tell it what you need, and boom—it gets created. Need to tweak an existing page? The `update_content` tool modifies content objects; it supports partial updates, so you don't gotta re-upload the whole damn thing every time you change a headline.

**Advanced Content Retrieval and Search**

Finding stuff is simple. If you know the exact path of a page, use `get_content` to grab all its details instantly. For anything else, `search_content` uses full-text searching across the whole site, letting you filter by type or path until you find what you're looking for. You can also pull up specifics with `get_workflow`, which shows the current state and history for any piece of content.

**Controlling Content Workflow State**

Content doesn't just appear; it goes through a process. The `transition_workflow` tool moves an article or page to the next stage in its defined publishing lifecycle. It handles the official status change, letting you push that draft straight into review or publication.

**User and Group Administration**

This is where your agent shines for site management. To get a list of every user on the system, run `list_users`. Need to register somebody new? Use the `create_user` tool to set up an account instantly. You'll also find tools for managing groups: you can use `list_groups` to see what groups exist, and if you need more admin muscle, `create_group` adds a brand-new administrative group. If things change—maybe someone gets promoted or leaves—you modify roles with `update_user` or adjust permissions by running `update_group`. And if an account or group is dead weight? You can permanently remove it using `delete_user`, `delete_group`, or even wipe out old pages with `delete_content`.

**Putting It All Together: A Complete Workflow Example**

You wanna build a new resource center page for the marketing team? First, you use `create_content`. Then, you'll check who needs access by running `list_users`, and maybe create a specific group with `create_group` to limit permissions. You might need to adjust that group later; then, hit up `update_group` to change its read/write settings. Once the content is drafted, you use `get_workflow` to verify it's ready, and when it is, you tell your agent to run `transition_workflow`. This sends it from 'Draft' to 'Review.' If a user needs their profile updated—say, they changed their title—you just send the command for `update_user`, no logins or forms required. The system handles everything in plain English commands.

## Tools

### create_content
Creates a new page or document within Plone.

### create_group
Adds a brand-new administrative group to the site.

### create_user
Registers an entirely new user account for Plone.

### delete_content
Removes content objects from the CMS.

### delete_group
Deletes an administrative group.

### delete_user
Permanently removes a user account.

### get_content
Retrieves the details of one specific content object using its full path.

### get_group
Pulls all current details for a specified administrative group.

### get_user
Gets the profile and status of one specific user account.

### get_workflow
Shows the current workflow state and history for any given piece of content.

### list_groups
Returns a list of all existing groups on the site.

### list_users
Provides a manager-level list of every user account in Plone.

### search_content
Searches for content across the site using full-text search, filtering by type or path.

### transition_workflow
Moves a piece of content to the next stage in its defined publishing workflow.

### update_content
Modifies existing content, supporting partial updates so you don't have to rewrite the whole thing.

### update_group
Changes details or permissions for an established group.

### update_user
Updates a user's profile details, like name changes or role adjustments.

## Prompt Examples

**Prompt:** 
```
Search for all Documents containing 'roadmap' in the /news folder.
```

**Response:** 
```
I've searched the /news path. I found 2 documents: 'Product Roadmap 2024' and 'Q3 Engineering Roadmap'. Would you like to see the details of either one?
```

**Prompt:** 
```
Create a new Folder titled 'Marketing 2025' at the root path.
```

**Response:** 
```
Successfully created the folder 'Marketing 2025' at path /marketing-2025. You can now start adding content to it.
```

**Prompt:** 
```
Get the content of the page at /about-us and show its current workflow state.
```

**Response:** 
```
I've retrieved the page. The title is 'About Our Company' and its current workflow state is 'private'. Would you like to transition it to 'published'?
```

## Capabilities

### Create Content Objects
Build new content pages or documents by calling the `create_content` tool.

### Manage Users and Groups
List, create, update, or delete user accounts and administrative groups using specialized tools like `list_users` or `update_user`.

### Advanced Content Retrieval
Locate specific content by its exact path or search across the entire site using `get_content` or `search_content`.

### Control Workflow State
See where a piece of content sits in its life cycle and push it to the next stage with `transition_workflow`.

### Update Existing Resources
Modify details on existing pages or objects without having to download, edit, and re-upload them.

## Use Cases

### The Content Audit
A content manager needs to know every article published about 'Q3 Budget' but only within the `/finance` folder. Instead of running multiple manual searches, they prompt: 'Search for all documents containing Q3 Budget in /finance.' The agent uses `search_content`, and returns a list of precise document titles and paths.

### The Promotion Push
A writer finishes an article. They ask the AI to check its status using `get_workflow`. Seeing it's still 'Pending Review,' they immediately command: 'Transition this content to Published.' The agent uses `transition_workflow`, moving it instantly and updating the site.

### The User Cleanup
An admin notices several employees left last month. They prompt: 'List all users who haven't logged in since May.' The agent runs `list_users` (after verifying permissions) and identifies the accounts, allowing the admin to use `delete_user` immediately.

### The Page Update
A product page needs a small text change. Instead of going into the web UI, they ask: 'Update the content at /products/widget-v2 with this new paragraph.' The agent uses `update_content`, applying only the necessary changes without risking accidental edits.

## Benefits

- Find specific resources instantly. Instead of clicking through complex folder hierarchies, use `search_content` to query by path or metadata—you get the result list immediately in your chat window.
- Control publishing state without logging into a dashboard. Use `get_workflow` to see if content is 'Draft' or 'Needs Review,' then run `transition_workflow` to push it forward, all from one command.
- Handle user lifecycles fast. Need to disable an account? Run `update_user` or use `delete_user`. It’s faster and less error-prone than manually navigating the administration panel.
- Build content on demand. If you need a new landing page, don't start at the root directory. Just ask your agent to run `create_content`, providing all necessary paths and initial details.
- Eliminate data silos. You can list users with `list_users` and then get specific details for one person using `get_user`. All user governance happens in a single conversation thread.

## How It Works

The bottom line is you manage complex CMS tasks using simple chat prompts, bypassing the need for manual web UI navigation entirely.

1. Subscribe to the server. You'll need your Plone Instance URL and a Personal Access Token.
2. Input those credentials into your preferred AI client (Claude, Cursor, etc.).
3. You start giving commands in natural language—like 'Find all documents about Q4 budget changes.'—and your agent runs the appropriate tools.

## Frequently Asked Questions

**Can I delete a user account using the delete_user tool?**
Yes. The `delete_user` tool handles permanent removal of user accounts. It's an irreversible action, so always confirm the target user ID before running it.

**How do I search for content using search_content?**
You provide your search query and any required filters (like a specific path or metadata type) to `search_content`. It runs a full-text search across the defined scope.

**What is the difference between get_content and search_content?**
`get_content` requires you to know the exact, full path of an object. `search_content`, however, lets you query by keywords or metadata across a broader area.

**Can I update content using update_content if I only change one paragraph?**
Yes. The `update_content` tool supports partial updates. You don't have to send the entire article; you just tell it what field and what new value to use.

**Does list_users require special permissions?**
Yes. The listing data indicates that `list_users` requires a Manager role, so your AI client will only run this if the connected account has those privileges.

**When I use the `transition_workflow` tool, how does it handle invalid state changes?**
The tool validates the requested transition against the content's current status. If the change is invalid or requires a step not completed (like an editor sign-off), it returns a specific error code listing the missing prerequisite action.

**Does running `create_group` require permissions beyond just general administrator access?**
Yes, creating groups needs explicit Group Admin rights in Plone. Your agent must use an API token scoped specifically for group creation and modification; standard user roles won't authorize this action.

**If I use the `delete_content` tool, does it also remove all related child assets or metadata?**
No, `delete_content` removes only the primary content object specified by path. Associated metadata or separate child assets remain intact unless you explicitly target them with a subsequent deletion command.

**Can I search for specific content types like Folders or Documents?**
Yes! Use the `search_content` tool and provide the `portal_type` parameter (e.g., 'Folder' or 'Document') to filter your results.

**How do I update the title or description of an existing page?**
Use the `update_content` tool. Provide the `path` to the content and a `json_body` containing the fields you want to change, such as `{"title": "New Title"}`.

**Is it possible to manage user accounts through this server?**
Yes, if your credentials have sufficient permissions, you can use `list_users`, `get_user`, and `create_user` to manage the site's membership.