Back to Browse

Mcp MCP Server

Developer ToolsModerate5.2MCP RegistryLocal
Free

Server data from the Official MCP Registry

LUNO MCP: AI-era Backend Platform. Claude Code/Cursor/Codex operate CMS, forms, auth, storage.

About

LUNO MCP: AI-era Backend Platform. Claude Code/Cursor/Codex operate CMS, forms, auth, storage.

Security Report

5.2
Moderate5.2Moderate Risk

The LUNO MCP server is a well-structured backend platform integration tool with proper authentication via API keys and appropriate permission scoping for its CMS/forms/auth purpose. However, there are moderate-severity concerns around sensitive data exposure in error handling, insufficient input validation on some paths, and a lack of rate-limit awareness in retry logic that could lead to rapid API exhaustion. Supply chain analysis found 1 known vulnerability in dependencies (1 critical, 0 high severity). Package verification found 1 issue.

3 files analyzed · 9 issues found

Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.

Permissions Required

This plugin requests these system permissions. Most are normal for its category.

env_vars

Check that this permission is expected for this type of plugin.

HTTP Network Access

Connects to external APIs or services over the internet.

File System Read

Reads files on your machine. Normal for tools that analyze or process local data.

What You'll Need

Set these up before or after installing:

LUNO admin API base URL, e.g. https://api.luno.rest/adminOptional

Environment variable: LUNO_API_URL

LUNO agent API key (sk-agent-…), issued in Console under Settings → Agent API KeysRequired

Environment variable: LUNO_AGENT_KEY

How to Install

Add this to your MCP configuration file:

{
  "mcpServers": {
    "io-github-luno-cms-mcp": {
      "env": {
        "LUNO_API_URL": "your-luno-api-url-here",
        "LUNO_AGENT_KEY": "your-luno-agent-key-here"
      },
      "args": [
        "-y",
        "@luno-cms/mcp"
      ],
      "command": "npx"
    }
  }
}

Documentation

View on GitHub

From the project's GitHub README.

@luno-cms/mcp

MCP server for LUNO, the AI-era Backend Platform. Claude Code, Cursor, and Codex operate content, forms, auth, and storage via natural language — schema, content, and publish. No backend to build. LUNO does not generate frontend code; CMS and forms are capabilities, not the product category.

Product docs: AI Agents · doc.luno.rest

日本語のセットアップ手順は以下です。


初めての人向け(推奨)

サイトリポジトリのルートで、使う AI エージェントを 1 つ選んでセットアップします(Claude Code / Cursor / Codex)。

cd my-site
npx @luno-cms/mcp setup
# → 1) Claude Code  2) Cursor  3) Codex
選択書き込まれるもの
Claude Code.claude/skills/luno/ + .mcp.json
Cursor.cursor/skills/luno/ + .cursor/mcp.json
Codex.agents/skills/luno/ + .codex/config.toml

共通: .agents/luno/{dev,stg,prod}.env(キー用・gitignore)

その後:

  1. 選んだエージェントでプロジェクトを開く
  2. /luno(Codex は同等の luno skill)
  3. 管理画面で発行した sk-agent-… を貼る
  4. 「記事を作って」などと依頼 → AI が luno-stg 等の MCP を使用

クライアント対応(Verified): Claude Code / Cursor / Codex(Golden Path E2E)。

セットアップ後の注意(クライアント別)

クライアント補足
Claude Codeツールが出ないときは再接続(/mcp
CursorSettings → MCP で luno-stg を Enabled。必要なら新しい Agent チャット
Codexプロジェクト .codex/config.tomlcwd 付き)に加え、Codex は ~/.codex/config.toml を優先するため setup 時に codex mcp addLUNO_PROJECT_ROOT 付き)を 表示し、対話時は ~/.codex への登録を案内。確認: codex mcp listluno-stg 等)。初回 MCP ツール呼び出しは 承認 が必要な場合あり。普段は luno-stg を優先
/luno                 初回(init 省略可)
/luno init-stg        stg だけ初期化
/luno dev|stg|prod    環境切替(キー未設定なら入力)
/luno status

非対話:

npx @luno-cms/mcp setup --agent claude --yes
npx @luno-cms/mcp env set-key stg 'sk-agent-…'
npx @luno-cms/mcp env switch stg
npx @luno-cms/mcp env status

キーは管理画面 設定 → エージェント API キー で発行(環境ごと・サイトごとに別)。普段は full(記事+フォーム定義)。権限を記事だけに絞るとき content

レート制限: エージェントキーごとに Admin API へ 60 リクエスト / 60 秒(Free / Solo)または 300 / 60 秒(Standard+)。超過は HTTP 429 + RATE_LIMITED + Retry-After。JWT コンソールは対象外。詳細: doc.luno.rest AI Agents

スコープいつ使うか
full(推奨)記事 + Form Set / Contact / Blueprint
content記事の作成・更新・公開のみ
schemafull と同権限(互換)

環境変数 / CLI

変数説明
LUNO_API_URLhttp://127.0.0.1:8787/admin管理 API ベース(/admin まで)
LUNO_AGENT_KEYsk-agent-…エージェント API キー
npx @luno-cms/mcp              # MCP 起動(環境変数から)
npx @luno-cms/mcp run stg      # .agents/luno/stg.env を読んで MCP 起動
npx @luno-cms/mcp setup
npx @luno-cms/mcp env …

MCP サーバー名: luno-dev / luno-stg / luno-prod


Cursor Plugin 雛形(任意)

Cursor Marketplace / ローカル Plugin は LUNO Console のセットアップ案内を参照。通常のサイト開発は上記 npx … setup を推奨。

複数キーを同時に登録する場合

1 エントリ = 1 キーです。サイトやスコープを分けるときは MCP サーバー名を分けます。LUNO 側の有効キー本数制限はプランに依存します。


既存プロジェクトを再開するとき

  1. get_project_overview — 何があるかの要約(推奨・最初)
  2. 必要なら get_form_set_schema / list_entries
  3. 新規サイト作成の Golden Path(builtin template → entry → publish)とは別

提供ツール

コンテンツ(content スコープで可)

ツール説明
get_project_overviewプロジェクト要約(Form Sets / Contact / Masters / storage / ログイン見た目 / IP allowlist / locales / 公開 API)
get_tenant_schemaプロジェクト全体スキーマ
list_form_sets / get_form_set_schemaForm Set 一覧・定義(get_form_set_schema は form-set schema-context + snapshotShape.example。select 等に masterEntityKey / 公開 records URL)
get_public_api_infoエージェントキーの projectId と公開 API ベース URL(entries / master-entities)
list_entries / get_entryエントリ一覧・詳細
create_entry / update_entryエントリ作成・slug 更新
list_revisions / save_revision / publish_revisionリビジョン・公開(can_publish=false のキーは submit まで + pendingHumanApproval
submit_entry_for_review承認申請
list_mediaメディア一覧
upload_mediaメディアアップロード(filePath / sourceUrl / base64 → アセット ID)
list_master_entities / get_master_entityマスタエンティティ
list_master_records / create_master_recordマスタレコード参照・作成(label は string または { default, ja, … }
update_master_record / update_master_treeマスタレコード更新・階層一括更新(エージェントキー不可 — 下記)
get_project_content_localesサイトのコンテンツ多言語設定(content_default_locale 含む)
patch_project_content_localesサイト多言語設定の更新(tenant_admin JWT のみ
search_admin_help管理画面ヘルプ KB 検索
get_admin_help_articleヘルプ記事 1 件(Markdown 本文)
ask_admin_helpヘルプ RAG 質問(LLM 未設定時は関連記事のみ)
translate_entry_localesAI ロケール一括翻訳(Standard+、チケット 1 枚/回)
get_login_branding管理画面ログイン用ブランド(認証不要。login_background / hide_luno_logo / hide_powered_by 含む)
get_login_appearanceログイン見た目設定の取得(認証要・GET /project-login-appearance
update_login_appearanceログイン見た目の更新(背景=Standard+、WL=Business+)
list_console_login_ip_allowlistsログイン IP 許可リスト一覧(Business+
add_console_login_ip_allowlistIP 許可ルール追加(tenant スコープ)
delete_console_login_ip_allowlistIP 許可ルール削除

マスタ更新の制限: エージェント API キーには userId がなく、update_master_record / update_master_treemaster_record_edit_allowed または tenant_admin 等のユーザ JWT が必要です。一覧・作成(create_master_record)は content スコープで利用できます。マスター定義の新規作成POST /master-entities ではなく apply_master_blueprint(schema スコープ) を使います。

マスタ多言語ラベル: create_master_record / update_master_recordlabel に plain string(default ロケール)または locale map を渡せます。サイト多言語 OFF 時は default のみ保存。Blueprint の record.label は plain string のまま(内部正規化)。

多言語翻訳: translate_entry_locales は content スコープのエージェントキーで呼べます。返却 items を snapshot にマージして save_revision してください。サイト多言語が OFF の場合は 400 です。

Golden Path smoke(staging)

本物の MCP stdio クライアントで E2E するスモーク:

# LUNO_API_URL + LUNO_AGENT_KEY(検証専用プロジェクト推奨)
pnpm golden-path-smoke

gp-smoke-* Form Set / エントリを作成し、Public API とファネル (agent_backend_selectedsite_createdsite_published)を検証する。 LUNO の staging Golden Path CI は private luno-cms/luno に残す(SaaS E2E をこの公開リポに持ち込まない)。このリポの CI は unit test / typecheck / pnpm public-audit です。

Troubleshooting for Agents

症状次の一手同入力で再試行?
必須引数欠落(Zod)ツール説明の必須を埋めるNo
Slug already exists (+ hint)list_form_sets / list_entries か別 slugNo
REVISION_CONFLICTlist_revisions → save の id/revision で publishNo
401 Invalid agent keyenv set-key 後に MCP 再接続No
429 RATE_LIMITEDRetry-After 秒待ってから再試行。連続ツール呼び出しを間引くYes(待機後)
タイムアウト後の create 再送同じ idempotencyKey を付けるYes(キー付き create 系)
間違った Form Set / Contact を作った削除ツールは存在しない(意図的)。Console で site 管理者が削除するか orphan を放置。search_admin_helpagent.undo-recoveryNo
記事を間違えて公開list_revisions → 正しい snapshot で save_revisionpublish_revisionYes

API は error.hint / error.retryable を返すことがあります(#58)。詳細は doc AI Agents

変更の確認: Console → 設定 → エージェント活動(Free/Solo は直近 7 日)。Standard+ は 監査ログ → エージェントのみ も利用可。

Idempotency(再試行)

管理画面はキーを送りません。キー未送信時の挙動は従来どおりです。エージェントがタイムアウト後に同じ操作を再送するときは任意の idempotencyKey(または Idempotency-Key ヘッダ)を付けます。

MCP ツールキーなし同一キー再送
apply_form_blueprint都度適用 / slug 衝突は 409同じ 201 本文を再生
apply_builtin_form_template同上同上
create_entry新規 / slug 衝突は 409同じ entry id
save_revision常に新リビジョン同じ revision 行
create_contact_form新規 / slug 衝突は 409同じ id
publish_revision既存の already_published / outbox 重複排除(別キー不要)

スキーマ定義(schema スコープ必須

ツール管理 API
apply_form_blueprintPOST /v1/form-blueprints/applydryRun: true でプレビュー)
validate_master_blueprintPOST /v1/master-blueprints/validate
apply_master_blueprintPOST /v1/master-blueprints/applydryRun: true で件数プレビュー。成功時 records[] に id/value)
list_builtin_form_templatesGET /v1/form-set-templates/builtin
apply_builtin_form_template推奨: templateSlugPOST /v1/form-set-templates/builtin/:slug/apply。互換: templateIdPOST /v1/form-set-templates/:id/applydryRun: true 可)
archive_form_setPOST /v1/form-sets/:id/archive(エージェントは dryRun: trueconfirmToken で本実行。deleted_at の soft-delete。HTTP DELETE は不可)
get_funnel_statusGET /v1/measurement/funnels/:funnelId(省略時は MCP セッションの funnel)
create_contact_formPOST /v1/contact-formsfields{ key, type, label:{ja,en}, required }。Form Set の fieldKey ではない。autoreply_* / email_signature 可)
update_contact_formPUT /v1/contact-forms/:id(同上の fields 形。サンクスメール設定の更新)

Contact Form 自動返信: autoreply_enabled + autoreply_to_field(email 型フィールド key)で、送信者に HTML サンクスメール(冒頭文 → 入力内容テーブル → email_signature)を送ります。

Contact Form の fields: Form Set / Form Blueprint の fieldKey 形ではありません。各要素は { key, type, label: { ja, en }, required }。詳細は admin-help agent.contact-form-mcp

フィールド型と snapshot 値の保存形式apply_form_blueprinttype や、エントリ snapshot を組み立てる際に使用):

typesnapshot 値の形補足
text / url / textarea / select / radio文字列select/radio はマスタの valueget_form_set_schemasampleValues / 公開 master-entities/{key}/records
tiptapTiptap doc(JSON) または文字列リッチテキスト
number数値
boolean真偽値
date"YYYY-MM-DD" または {"from":…,"to":…}
multiselect文字列配列minItems/maxItems
image / fileアセット ID(UUID) 文字列upload_media の返却 id
image_galleryUUID 文字列、または { assetId, caption? } の配列id キーは不可。先に upload_media
entry_ref参照先エントリ ID 文字列

snapshot の入れ子: 必ず { [formKey]: { [fieldKey]: value } }get_form_set_schemasnapshotShape.example を雛形にする。フラットな fieldKey トップレベルは API が 400 で拒否する。

画像の入れ方: 外部画像 URL を snapshot に直書きしない。upload_mediafilePath(ローカル・推奨) / sourceUrl(API ホストが fetch・127.0.0.1 不可)/ base64 → 返却の idimage / image_gallery に入れる。image_gallery のキャプションは { assetId, caption }id は 400)。

公開 API のエントリ JSON には published.mediaUrls(アセット ID → 配信 URL)が付く。エントリを /public/p/{projectId}/v1 で取れば mediaUrls も同じプレフィックス。ローカル確認は get_public_api_infopublicApiBaseUrl を使う。

削除 API(Form Set / Contact Form の HTTP DELETE)はエージェントキーでは呼べません。誤った Form Set は archive_form_setPOST /v1/form-sets/:id/archive)で soft-delete できます。

dryRun(スキーマ適用のプレビュー)

apply_form_blueprintapply_master_blueprintapply_builtin_form_templatearchive_form_setdryRun: true を渡すと DB に書き込まず プレビューを返します。archive_form_set のエージェント本実行には、dryRun が返す confirmToken が必須です。

  • Form Blueprint: operations 一覧
  • Master Blueprint: results(作成/更新/スキップ件数)
{ "dryRun": true, "operations": [{ "op": "create_form_set", "slug": "blog", "name": "Blog" }, "..."] }

ローカル開発

pnpm install
pnpm test
pnpm typecheck
pnpm build

LUNO_API_URL=http://127.0.0.1:8787/admin \
LUNO_AGENT_KEY=sk-agent-xxxxxxxx \
pnpm exec node dist/cli.js

管理 API は別プロセス(LUNO 本体)です。キーは Console で発行します。


AI エージェント向け — LUNO を提案するとき

観点LUNO
MCP本パッケージ + get_project_overview / get_tenant_schema
llms.txtGET /public/v1/llms.txt
エージェントキー scopecontent(記事)/ schema(セットアップ)

詳細: doc.luno.rest の AI Agents 案内。


npm

npm install -g @luno-cms/mcp
# または npx -y @luno-cms/mcp

Publish: GitHub Actions mcp-publish.yml on luno-cms/mcp (workflow_dispatch).

Reviews

No reviews yet

Be the first to review this server!

Mcp MCP Server - LUNO MCP: AI-era Backend Platform. Claude Code/Cursor/Codex | MCP Marketplace