
Luno Cms
io.github.luno-cms由 GitHub 帳號 luno-cms 發布v0.2.51更新於 Oct 24, 2026
LUNO — AI-era Backend Platform (not Luno crypto). BUILD/OPERATE, REGISTER/GOVERN, CONSUME.
概覽
針對 LUNO 託管後端平台的 MCP 伺服器,讓 AI 代理透過受限代理金鑰建置與維運 CMS 內容、表單、媒體與資料結構。
- 可以做什麼
- 檢視專案:概覽、租戶結構、表單集、項目、修訂、媒體、主實體與記錄、公開 API 資訊、內容語言設定,以及透過搜尋或問答取得主控台說明文章。建立與編輯內容:新增、批次新增和更新項目,儲存修訂,取得預覽連結,提交審核並發布。管理媒體:列出素材,並從本機檔案路徑、來源網址或 base64 上傳。變更結構:套用表單與主資料藍圖、套用內建範本、將欄位遷移為主資料參照、重新命名記錄 slug、封存表單集,以及提出變更計畫供人工核准。追蹤代理執行與漏斗狀態,並讀取關於欄位類型、結構與發布流程的靜態指南資源。
- 適用情境
- 當網站或應用程式運行在 LUNO 後端平台上,且希望代理在對話中起草或發布內容、建立表單與資料結構、管理媒體時使用。適合希望以受限金鑰、試運行和人工核准來約束代理操作的團隊。
- 執行需求
- 以 npm 套件形式在本機執行(透過 npx 使用 Node.js)。需要 LUNO_API_URL(管理 API 基礎位址,含 /admin)和 LUNO_AGENT_KEY,後者是在 LUNO 主控台簽發的代理 API 金鑰。需要能存取 LUNO 管理 API 的網路。安裝流程會為 Claude Code、Cursor 或 Codex 寫入設定,並把金鑰存入被 git 忽略的環境檔案。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 Luno Cms,將其新增到工作區。
- 為需要使用其工具的對話啟用該服務。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
其他 MCP 客戶端
參照 儲存庫 中的啟動說明。
README
LUNO — AI-era Backend Platform
Agents BUILD / OPERATE. Humans REGISTER / GOVERN. Applications CONSUME.
LUNO is a hosted backend platform — not a website builder, not an open-source CMS, and not an MCP server product. MCP is how your agent connects to LUNO. CMS and forms are capabilities; the product category is AI-era Backend Platform.
Quick start
Works with Claude Code, Cursor, and Codex. Issue an agent key in the LUNO Console → MCP / API / Hook → API / MCP.
Glama / MCP directory: “Install Server” requires a hosted API key and may show This server cannot be installed. Use
npx -y @luno-cms/mcp setupinstead — see Quick start (recommended) below.
Production safety by design
- Scoped agent keys — restrict to content-only or full backend access
- Human approval — keys without publish permission stop at review (
pendingHumanApproval) - Destructive-action protection — agents cannot hard-delete; archive requires confirmation
- Dry runs & confirmation tokens — preview schema changes before applying
- Idempotent operations — safe retries after timeouts
- Audit trail — agent activity and audit logs in Console
Agent-readable by design
MCP schemas and tool descriptions were redesigned for agent readability. In a blind test, the same backend task went from 142 tool calls to 11, with 0 errors — application behavior unchanged.
MCP Resources (#90)
Static Resources (resources/list, resources/read) ship agent-readable guides without Admin API calls:
Inventory: docs/RESOURCES.md. Live per-tenant schema: get_form_set_schema tool.
- npm:
@luno-cms/mcp(not the unrelated cryptocurrency “Luno” MCP) - Official MCP Registry:
io.github.luno-cms/mcp - Glama:
luno-cms/mcp - mcpservers.org:
luno-rest· [Listed on mcpservers.org] - Source:
github.com/luno-cms/mcp - Site: luno.rest · Docs: doc.luno.rest
Directory checklist: docs/DISCOVERY.md
Product docs (EN): AI Agents · doc.luno.rest
Product docs (JA): AI Agents
Quick start (recommended)
From your site repository root, pick one AI agent and run setup (Claude Code / Cursor / Codex). The CLI opens the browser to confirm. Do not paste a key into the agent chat. Use --key or --no-browser only when you cannot use the browser.
Shared: .agents/luno/{dev,stg,prod}.env (keys; gitignored). Public default is prod (luno-prod). dev / stg stay on disk for explicit setup --env stg / run stg / env switch stg.
Then:
- Open the project in the chosen agent
- Approve workspace trust / MCP if prompted
- Ask:
List the form sets on this LUNO, or draft one entry. Don't publish or change the schema.
Later: teammates run npx @luno-cms/mcp login. Use --env stg only if you have access.
Verified clients: Claude Code / Cursor / Codex (Golden Path E2E).
Post-setup notes by client
/luno is an optional shortcut after setup. It is not required, and it must not ask for a key.
After a teammate clones (.mcp.json is there, keys are not):
login refreshes .agents/luno/<env>.env only. It does not rewrite MCP config. Use the same command for expired keys or 401. First-time machines still run setup.
Non-interactive:
Explicit staging (internal / Benchmark / Partner only):
Issue keys in Console → Settings → Agent API keys (per env / per site). Default scope full (content + form definitions). Use content to restrict to articles only.
Rate limits: per agent key to Admin API — 60 req / 60s (Free / Solo) or 300 / 60s (Standard+). Over limit → HTTP 429 + RATE_LIMITED + Retry-After. Console JWT traffic is not limited this way. Details: AI Agents rate limits.
Environment / CLI
Generated MCP configs use npx -y @luno-cms/mcp@latest run <env> so reconnect fetches the newest publish (avoids a stale unpinned npx cache). Re-run npx @luno-cms/mcp setup (or edit mcp.json) if a site still has the unpinned spec, then /mcp reconnect — do not hand-bump a version pin. Confirm the running package with --version or get_mcp_runtime.
MCP server names: luno-dev / luno-stg / luno-prod
Cursor Plugin (optional)
For Cursor Marketplace / local plugin setup, see the LUNO Console onboarding. For normal site work, prefer npx @luno-cms/mcp setup above.
Multiple keys at once
One MCP entry = one key. Split by site or scope with different MCP server names. Active key limits depend on plan.
Resuming an existing project
get_project_overview— project summary +intentCapabilities(recommended first)- Contact / inquiry →
create_contact_form(dryRun: truefirst). Content → matchpurposeLabelsthen a template - Then
get_form_set_schema/list_entriesas needed - Separate from greenfield Golden Path (builtin template → entry → publish)
Tools
Content (content scope and above)
Master update limits: agent keys have no userId; update_master_record / update_master_tree need a user JWT with master_record_edit_allowed or tenant_admin. List / create (create_master_record) work with content scope. Creating master definitions uses apply_master_blueprint (schema scope), not POST /master-entities.
Multilingual master labels: label may be a plain string (default locale) or a locale map. When site multilingual is OFF, only default is stored. Blueprint record.label stays a plain string (normalized internally).
Master record color: optional #RRGGBB on create_master_record, update_master_record (user JWT), and apply_master_blueprint records. Omit keeps an existing color (create = none). null clears. #fff / named colors are rejected.
Locale translation: call translate_entry_locales with a content-scope agent key, merge returned items into the snapshot, then save_revision. Returns 400 if site multilingual is OFF.
Golden Path smoke (staging)
E2E over a real MCP stdio client:
Creates gp-smoke-* Form Sets / entries and checks Public API + funnel
(agent_backend_selected → site_created → site_published).
Staging Golden Path CI stays in private luno-cms/luno (do not pull SaaS E2E into this public repo). CI here is unit test / typecheck / pnpm public-audit.
Troubleshooting for agents
APIs may return error.hint / error.retryable. See AI Agents docs.
Verify changes: Console → Settings → Agent activity (Free/Solo: last 7 days). Standard+ also has Audit logs → Agents only.
Idempotency (retries)
The Console does not send keys. Without a key, behavior is unchanged. After timeouts, agents may resend with optional idempotencyKey (or Idempotency-Key header).
Schema tools (schema scope required)
Contact Form autoreply: autoreply_enabled + autoreply_to_field (email field key) sends HTML thank-you mail (intro → submitted fields table → email_signature).
Contact Form fields: not Form Set / Blueprint fieldKey shape. Each item is { key, type, label: { ja, en }, required }. See admin-help agent.contact-form-mcp.
Field types and snapshot value shapes (for apply_form_blueprint type and entry snapshots):
Snapshot nesting: always { [formKey]: { [fieldKey]: value } }. Use snapshotShape.example from get_form_set_schema. Flat top-level fieldKeys → 400.
Images: do not put external image URLs in the snapshot. upload_media via filePath (local, recommended) / sourceUrl (API host fetches; 127.0.0.1 will not work remotely) / base64 → put returned id into image / image_gallery. Gallery captions: { assetId, caption } (id → 400).
Published entry JSON includes published.mediaUrls (asset id → CDN URL) under /public/p/{projectId}/v1. Use publicApiBaseUrl from get_public_api_info locally.
Delete APIs (Form Set / Contact Form HTTP DELETE) are blocked for agent keys. Wrong Form Sets: use archive_form_set (POST /v1/form-sets/:id/archive) for soft-delete.
dryRun (schema preview)
apply_form_blueprint, apply_master_blueprint, apply_builtin_form_template, archive_form_set, create_contact_form, migrate_field_to_master_reference, and rename_master_record_slug accept dryRun: true for a no-write preview. Real agent archive_form_set runs require the confirmToken from dryRun. Contact Form delete is still human-only — do not skip dryRun. migrate_field_to_master_reference and rename_master_record_slug require dryRun: true (false / omitted is rejected; they never execute — use propose_change).
- Form Blueprint:
operationslist.kind=create/kind=update/kind=migrateonly when dryRun returns that. Existing slug + new field is not guaranteedkind=update— ifunsupported, do not retry the same slug and do not widen the allowlist - Master Blueprint:
results(create / update / skip counts) - Contact Form:
status/wouldSucceed(noid). Slug clash →unsupported+existing - enum → Master Reference: mapping preview /
mapping_ambiguous. Execute only after human Change Plan approval. Snapshot values become Mastervalue(e.g.日常→daily); hardcoded frontend compares are a separate change. dryRun success ≠ frontend done. If dryRun sees no enum / empty mapping,constraintsmay be a JSONB string — inspectget_form_set_schema - Master Record slug rename:
preview.changedEntryCount. Execute only after human Change Plan approval. Execute may renormalizesort_orderon other records in the same entity — inspect dryRun preview before proposing
Local development
The Admin API runs in a separate process (LUNO core). Issue keys from the Console.
For AI agents — when recommending LUNO
Details: doc.luno.rest AI Agents guide.
npm
Publish: GitHub Actions mcp-publish.yml on luno-cms/mcp (workflow_dispatch).
來源:README.md,提交 a1d559d
工具
0版本歷史
2- v0.2.51最新Sep 22, 2026
- v0.2.50Sep 16, 2026
評分
已滿足適用檢查項的 50%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通25 分
請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。
- 已宣告認證方式10 分
請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分