MCP Server
The Cloudcore MCP server lets AI tools manage your CMS. Create pages, write posts, manage categories and tags — all through natural conversation with Claude Code, Claude Desktop, Cursor, or any MCP-compatible client.
Setup
1. Clone and build
git clone https://github.com/cloudcore-cms/cloudcore-mcp.git
cd cloudcore-mcp
npm install
npm run build 2. Add to Claude Code
claude mcp add cloudcore \
-e CLOUDCORE_CMS_URL=https://cloudcore-cms.you.workers.dev \
-e CLOUDCORE_API_TOKEN=your-admin-token \
-- node /path/to/cloudcore-mcp/dist/index.js 3. Add to Claude Desktop
Edit ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"cloudcore": {
"command": "node",
"args": ["/path/to/cloudcore-mcp/dist/index.js"],
"env": {
"CLOUDCORE_CMS_URL": "https://cloudcore-cms.you.workers.dev",
"CLOUDCORE_API_TOKEN": "your-admin-token"
}
}
}
} What you can do
Once connected, just talk to Claude:
- "Create a blog post about serverless security"
- "Update the about page and rewrite the intro"
- "List all draft posts"
- "Publish the post about edge computing"
- "Add a category called Tutorials"
- "What are the current site settings?"
Available tools
| Tool | Description |
|---|---|
list_content | List pages and posts (filter by type, status) |
get_content | Get a specific content item |
create_content | Create a new page or post with blocks |
update_content | Update title, slug, status, or blocks |
delete_content | Delete content permanently |
publish_content | Make content publicly visible |
unpublish_content | Revert to draft |
list_media | List uploaded media files |
delete_media | Delete a media file |
list_categories | List all categories |
create_category | Create a category |
delete_category | Delete a category |
list_tags | List all tags |
create_tag | Create a tag |
delete_tag | Delete a tag |
get_settings | Get site settings |
Security
- Bearer token auth on all CMS API calls
- Rate limiting — configurable per-minute limit (default: 60)
- Read-only mode — blocks all write operations
- Tool whitelist — only expose specific tools
- Audit logging — every tool invocation logged
- Input validation — all parameters validated
- Secret redaction — tokens never appear in logs
- No direct DB access — everything goes through the CMS API
Configuration
| Variable | Required | Description |
|---|---|---|
CLOUDCORE_CMS_URL | Yes | CMS API URL |
CLOUDCORE_API_TOKEN | Yes | Bearer token (same as CMS ADMIN_TOKEN) |
CLOUDCORE_READ_ONLY | No | Set to true to disable all writes |
CLOUDCORE_ALLOWED_TOOLS | No | Comma-separated tool whitelist |
CLOUDCORE_RATE_LIMIT | No | Requests per minute (default: 60) |
CF_ACCESS_CLIENT_ID | No | Cloudflare Access service token ID |
CF_ACCESS_CLIENT_SECRET | No | Cloudflare Access service token secret |
Multiple instances
Manage several Cloudcore sites from the same Claude session. Register each with its own env vars:
claude mcp add my-blog \
-e CLOUDCORE_CMS_URL=https://blog-cms.workers.dev \
-e CLOUDCORE_API_TOKEN=token-1 \
-- node /path/to/cloudcore-mcp/dist/index.js
claude mcp add client-site \
-e CLOUDCORE_CMS_URL=https://client-cms.workers.dev \
-e CLOUDCORE_API_TOKEN=token-2 \
-e CLOUDCORE_READ_ONLY=true \
-- node /path/to/cloudcore-mcp/dist/index.js Then use them naturally: "using my-blog, create a post about..." or "using client-site, list all pages".