Cloudcore Beta

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

ToolDescription
list_contentList pages and posts (filter by type, status)
get_contentGet a specific content item
create_contentCreate a new page or post with blocks
update_contentUpdate title, slug, status, or blocks
delete_contentDelete content permanently
publish_contentMake content publicly visible
unpublish_contentRevert to draft
list_mediaList uploaded media files
delete_mediaDelete a media file
list_categoriesList all categories
create_categoryCreate a category
delete_categoryDelete a category
list_tagsList all tags
create_tagCreate a tag
delete_tagDelete a tag
get_settingsGet 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

VariableRequiredDescription
CLOUDCORE_CMS_URLYesCMS API URL
CLOUDCORE_API_TOKENYesBearer token (same as CMS ADMIN_TOKEN)
CLOUDCORE_READ_ONLYNoSet to true to disable all writes
CLOUDCORE_ALLOWED_TOOLSNoComma-separated tool whitelist
CLOUDCORE_RATE_LIMITNoRequests per minute (default: 60)
CF_ACCESS_CLIENT_IDNoCloudflare Access service token ID
CF_ACCESS_CLIENT_SECRETNoCloudflare 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".