@caelo-cms/mcp-server

中文文档
0.12.1发布于 2026/11/09MPL-2.0TypeScriptES Module构建来源已验证近 30 天下载 1.1万

MCP servers for Caelo CMS: caelo_chat (talk to Caelo's own AI) and the admin-scoped Power-MCP (the full chat-runner tool catalogue, driven by your own agent). Lets Claude Code (or any MCP-aware client) drive a Caelo install from outside the browser.

原始使用文档
文档目录6 节
  1. Install
  2. Installs behind Google IAP (GCP)
  3. The caelo_chat tool
  4. Why route editing through chat?
  5. License
  6. Image uploads

@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.

版本与发布记录

@caelo-cms/mcp-server 共发布 236 个版本,首次发布于 2026/05/04;过去 12 个月发布了 236 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.12.1latest2026/11/09今天
0.11.212026/11/063 天前
0.11.202026/11/053 天前
0.11.192026/11/053 天前
0.11.182026/11/054 天前
0.11.172026/11/054 天前

关于 @caelo-cms/mcp-server 的常见问题

@caelo-cms/mcp-server 是什么?

MCP servers for Caelo CMS: caelo_chat (talk to Caelo's own AI) and the admin-scoped Power-MCP (the full chat-runner tool catalogue, driven by your own agent). Lets Claude Code (or any MCP-aware client) drive a Caelo install from outside the browser.

如何安装 @caelo-cms/mcp-server?

在项目目录运行 npm install @caelo-cms/mcp-server,或使用 pnpm add / yarn add / bun add。它还提供命令行工具 caelo-admin-mcp、caelo-mcp-server,可以用 npx caelo-admin-mcp 直接运行。

@caelo-cms/mcp-server 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@caelo-cms/mcp-server 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@caelo-cms/mcp-server 可以商用吗?

@caelo-cms/mcp-server 使用 MPL-2.0 许可。弱 Copyleft:可以商用,也可以和闭源代码一起使用;但如果分发时修改了 MPL 授权的文件,这些文件的修改需以 MPL 开源。以上为概括,不构成法律意见,请以许可原文为准。

@caelo-cms/mcp-server 的下载量有多少?

根据 npm 官方下载统计,@caelo-cms/mcp-server 在 2026/10/09 – 2026/11/07 这 30 天内被下载 10,759 次,日均约 359 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@caelo-cms/mcp-server 还在维护吗?

最新版本 0.12.1 发布于 2026/11/09(今天);至今共发布 236 个版本,其中过去 12 个月发布了 236 个;首次发布于 2026/05/04。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。