mcpField
C
Caelo CMS

Caelo CMS

Local
caelo-cms.comBusiness & Marketing2Updated today

About Caelo CMS

Caelo CMS provides an MCP server for editing a Caelo site through its chat agent or by letting an external agent drive the admin tool catalogue. It routes requests to the installation’s API, and changes remain drafts subject to human approval before publication.

Key features

  1. 01Chat with Caelo's agent to request edits
  2. 02Expose admin tools for an external agent
  3. 03Upload images for CMS use
  4. 04Export install-specific CLAUDE.md and skills
  5. 05Use live admin tool catalogues

Use cases

  1. 01Ask Caelo's agent to make site changes
  2. 02Let an external coding agent operate admin tools
  3. 03Attach images to a chat or use them as media assets
  4. 04Export site context for Claude Code

MCP support

The MCP server exposes either the `caelo_chat` interface or the admin tool catalogue, depending on token scope. It connects over stdio and forwards calls as HTTPS requests to the Caelo installation; edits become drafts and require human approval to publish.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"caelo-cms-caelo": {
"command": "npx",
"args": [
"-y",
"@caelo-cms/mcp-server"
],
"env": {
"CAELO_ADMIN_URL": "<CAELO_ADMIN_URL>",
"CAELO_MCP_TOKEN": "<CAELO_MCP_TOKEN>",
"CAELO_IAP_SERVICE_ACCOUNT": "<CAELO_IAP_SERVICE_ACCOUNT>"
}
}
}
}
Run commandnpx -y @caelo-cms/mcp-server
Environment variables to set
CAELO_ADMIN_URLYour Caelo admin's https:// address, e.g. https://admin.example.com
CAELO_MCP_TOKENSecretMCP token minted at /settings/mcp on your install
CAELO_IAP_SERVICE_ACCOUNTOnly for Google Cloud (IAP) installs; /settings/mcp shows the value

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
npm@caelo-cms/mcp-server0.11.1

Tools

No tool list yet

Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.

Details

From the project README

@caelo-cms/mcp-server

MCP servers for your Caelo CMS install. Two surfaces, selected by the token's scope:

  • caelo_chat (default mode, scope chat) — talks to Caelo's own AI agent. You describe an outcome; Caelo's chat-runner does the work.
  • Power-MCP (caelo-admin-mcp binary / caelo-mcp-server admin, scope admin) — the full chat-runner tool catalogue exposed directly, so YOUR agent (Claude Code et al.) drives the tool loop and Caelo makes no provider calls of its own. caelo-mcp-server export additionally writes a CLAUDE.md + .claude/skills/ tree generated from the install's live context.

Every mode is a thin shim: calls become HTTPS POSTs against your admin install's /api/mcp/* endpoints, which dispatch into the same chat-runner machinery that powers the live-edit overlay. See the MCP page in the docs for the full Power-MCP working model (work sessions, the shared draft, approval gates).

Install

In your Caelo install:

  1. Visit /settings/mcp as an Owner.
  2. Click New token, give it a name (claude-code, laptop, ci, etc.), optionally set an AI-spend cap (microcents), and copy the bearer that's shown ONCE.
  3. The page shows ready-to-copy setup for Claude Code, Claude Desktop, Codex CLI, Cursor, VS Code and Gemini CLI — a terminal command or a JSON config entry, plus how the client picks it up.

Desktop apps (Claude Desktop, Cursor, VS Code) don't inherit your terminal's PATH: put the full path of bunx (which bunx) into their config instead of the bare name.

ChatGPT and claude.ai in the browser can't use this server: they only connect to MCP servers hosted on the internet (Streamable HTTP + OAuth), and this one runs on your machine over stdio. Tracked in #806.

Manual setup for any other MCP-aware client:

# stdio server invoked by your MCP-aware client
bunx @caelo-cms/mcp-server@latest

It switches to the exact release your install runs at startup (see the MCP page in the docs), so the command never needs a version; @latest keeps bunx from reusing an older cached install.

with these env vars set:

VariableRequiredNotes
CAELO_ADMIN_URLyeshttps://admin.example.com — point at your install. Must be https:// (plain http:// only for localhost).
CAELO_MCP_TOKENyesBearer minted at /settings/mcp.
CAELO_IAP_SERVICE_ACCOUNTon GCP installsThe admin's MCP service account. /settings/mcp includes it in every client snippet when the admin is behind Google IAP.

Without CAELO_ADMIN_URL or CAELO_MCP_TOKEN the server still starts and lists its tools (MCP directories inspect servers that way), but every tool call fails and names the variable to set. Power-MCP then lists the catalogue shipped with this release (power-catalogue.json); once configured it always lists your admin's live catalogue, including plugin tools. export exits instead.

Installs behind Google IAP (GCP)

On gcp and gcp-firebase installs the admin sits behind Identity-Aware Proxy, which rejects every request before Caelo sees it unless it carries a Google credential. With CAELO_IAP_SERVICE_ACCOUNT set, the server signs a short-lived JWT as that service account (IAM Credentials signJwt, using your Application Default Credentials) and sends it in Authorization next to x-caelo-mcp-token: IAP checks the first, Caelo the second.

One-time setup on your machine:

gcloud auth application-default login

The provisioner creates the service account (caelo-mcp@<project>), allowlists it on IAP and lets everyone on the IAP allowlist sign as it — on new installs via Pulumi, on existing ones during cms-provision upgrade. No service-account keys are involved.

The caelo_chat tool

FieldTypeNotes
messagestring, requiredWhat you want to say to the Caelo agent.
chatSessionIduuid, optionalContinue an existing chat session.
attachmentsarray, optionalUp to four image references returned by caelo_upload_images.
pageIduuid, optionalBind a NEW chat to one page so the agent's page-context block populates.

Output: assistant reply text + a JSON block with chatSessionId (for the next call), requestId (click through to /settings/audit/<requestId> for the full audit trail), the structured tool-call summaries the agent dispatched, the per-turn cost in microcents, and a pendingProposals count so the agent can surface "you have N things waiting for Owner approval".

Why route editing through chat?

Browse / publish / propose actions happen through the chat — "which pages exist?" → the Caelo agent calls pages.list internally → answers in text. Same auth surface, same RLS scoping, same audit trail, same propose-execute Owner gate as the browser. The remote agent talks to a human-equivalent agent, not to a programmatic API.

License

MPL-2.0.

Image uploads

Both modes expose caelo_upload_images. For example, call it with:

{"images":[{"filePath":"/home/me/Pictures/character.png","alt":"Main character reference"}]}

Paths are local to the MCP process. Alternatively use base64 plus an optional filename; supply exactly one of filePath and base64. Uploads support PNG/JPEG/WebP/GIF, up to 5 MiB each, with at most four files per call. The result contains per-file successes/errors and an attachments array. Pass that array to caelo_chat alongside message to send actual image content to Caelo's AI. In admin mode, the returned asset IDs can be used with regular media/page tools.

The token owner's current content.write permission is required for either scope. Images are stored in the shared CMS media library; admin previews require authentication. Uploading alone does not publish a page. A partial batch keeps successful uploads — retry only the failed entries. See the MCP page in the docs for HTTP examples and server limits.

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.