Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Description from the maker (original English)
LUNO — AI-era Backend Platform (not Luno crypto). BUILD/OPERATE, REGISTER/GOVERN, CONSUME.
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
LUNO_API_URL, LUNO_AGENT_KEYValues marked secret are keys to your account. Never share them or paste them into a chat.
You need
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json
{
"mcpServers": {
"luno-cms": {
"command": "npx",
"args": [
"-y",
"@luno-cms/mcp"
],
"env": {
"LUNO_API_URL": "your-value",
"LUNO_AGENT_KEY": "your-value"
}
}
}
}Run this in your terminal
claude mcp add luno-cms --env LUNO_API_URL=your-value --env LUNO_AGENT_KEY=your-value -- npx -y @luno-cms/mcpFill in the empty values before running it.
Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"luno-cms": {
"command": "npx",
"args": [
"-y",
"@luno-cms/mcp"
],
"env": {
"LUNO_API_URL": "your-value",
"LUNO_AGENT_KEY": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Paste into .vscode/mcp.json in your project
{
"servers": {
"luno-cms": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@luno-cms/mcp"
],
"env": {
"LUNO_API_URL": "your-value",
"LUNO_AGENT_KEY": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
This one runs on your computer, and ChatGPT can only connect to servers on the internet. Pick another app.
Your choice stays on this device in a cookie; no account needed.
These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
Runs on your computer; the tool list appears in your AI app after you install it.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 7, 2026
The registry name was verified with the GitHub account luno-cms, which owns the repo
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
This one runs on your computer; there is no internet endpoint
Runs on your computer and uses local settings instead
Runs on your computer; we can only read tool lists from internet endpoints
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
You need to fill in: LUNO_API_URL, LUNO_AGENT_KEY
It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).
The GitHub repo last changed –, and the latest version (0.2.51) reached the registry last month.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Node.js on your computer.
In the same category: Spec Driven Development, Remote Desktop Commander, Tools MCP
Servers in the same category from other makers, sorted by stars.
Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Web production tools for AI agents: contrast, JP text, WebP, JSON-LD, slugs, dates and 40+ more
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
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.
| BUILD | AI agents define schemas, forms, and backend structure via blueprints and templates. |
| OPERATE | Agents read and change content, media, auth settings, and other backend resources. |
| GOVERN | Humans control production through scoped agent keys, approval workflows, publish gates, and safety controls. |
npx -y @luno-cms/mcp setup
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.
pendingHumanApproval)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.
Static Resources (resources/list, resources/read) ship agent-readable guides without Admin API calls:
| URI | Topic |
|---|---|
luno://forms/field-types | Field types + snapshot shapes |
luno://content/schema-guide | Form Set / entry / revision hierarchy |
luno://publishing-guide | Draft → publish, can_publish |
luno://permissions | Scopes, blocked actions, archive token |
luno://api-reference | Tool cheat sheet (not full OpenAPI) |
Inventory: docs/RESOURCES.md. Live per-tenant schema: get_form_set_schema tool.
@luno-cms/mcp (not the unrelated cryptocurrency “Luno” MCP)io.github.luno-cms/mcpluno-cms/mcpluno-rest ·github.com/luno-cms/mcpDirectory checklist: docs/DISCOVERY.md
Product docs (EN): AI Agents · doc.luno.rest Product docs (JA): AI Agents
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.
cd my-site
npx -y @luno-cms/mcp setup
| Choice | What gets written |
|---|---|
| Claude Code | .claude/skills/luno/ + .mcp.json |
| Cursor | .cursor/skills/luno/ + .cursor/mcp.json |
| Codex | .agents/skills/luno/ + .codex/config.toml |
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:
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).
| Client | Notes |
|---|---|
| Claude Code | If tools are missing, reconnect (/mcp) |
| Cursor | Settings → MCP: enable luno-prod. Start a new Agent chat if needed |
| Codex | Project .codex/config.toml (with cwd) plus home config: Codex prefers `~/.codex/config.toml`, so setup may offer codex mcp add (with LUNO_PROJECT_ROOT). Check: codex mcp list (luno-prod, etc.). First MCP tool calls may need approval. Prefer `luno-prod` |
/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):
npx @luno-cms/mcp login
login refreshes .agents/luno/ .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:
npx @luno-cms/mcp setup --agent claude --yes --key 'sk-agent-…'
npx @luno-cms/mcp login --key 'sk-agent-…' npx @luno-cms/mcp env status
Explicit staging (internal / Benchmark / Partner only):
npx @luno-cms/mcp setup --env stg --key 'sk-agent-…'
npx @luno-cms/mcp run stg
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.
| Scope | When to use |
|---|---|
| full (recommended) | Articles + Form Set / Contact / Blueprint |
| content | Create / update / publish articles only |
| schema | Same privileges as full (compat) |
| Variable | Example | Description |
|---|---|---|
LUNO_API_URL | https://api.luno.rest/admin | Admin API base (include /admin) |
LUNO_AGENT_KEY | sk-agent-… | Agent API key |
npx @luno-cms/mcp --version # print package version (no MCP start)
npx @luno-cms/mcp # start MCP from env vars npx @luno-cms/mcp run prod # load .agents/luno/prod.env then start npx @luno-cms/mcp setup npx @luno-cms/mcp env …
Generated MCP configs use npx -y @luno-cms/mcp@latest run 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
For Cursor Marketplace / local plugin setup, see the LUNO Console onboarding. For normal site work, prefer npx @luno-cms/mcp setup above.
One MCP entry = one key. Split by site or scope with different MCP server names. Active key limits depend on plan.
get_project_overview — project summary + intentCapabilities (recommended first)create_contact_form (dryRun: true first). Content → match purposeLabels then a templateget_form_set_schema / list_entries as neededcontent scope and above)| Tool | Description |
|---|---|
get_project_overview | Project summary + intentCapabilities (Contact vs Form Set) / nextMoves / Form Sets / Contact / Masters / storage / locales / public API |
get_tenant_schema | Full project schema |
list_form_sets / get_form_set_schema | Form Set list / definition (get_form_set_schema includes form-set schema-context + snapshotShape.example; selects may include masterEntityKey / public records URL) |
get_public_api_info | Agent key projectId + public API base (entries / master-entities) |
list_entries / get_entry | Entry list / detail |
create_entry / bulk_create_entries / update_entry | Create entry / bulk create (≤50 slugs) / update slug |
list_revisions / save_revision / get_pub_preview_url / publish_revision | Revisions / preview URL for human review / publish (can_publish=false keys stop at submit + pendingHumanApproval) |
submit_entry_for_review | Submit for approval |
list_media | Media list |
upload_media | Upload (filePath / sourceUrl / base64 → asset id) |
list_master_entities / get_master_entity | Master entities |
list_master_records / create_master_record | List / create records (label string or { default, ja, … }; optional color #RRGGBB) |
update_master_record / update_master_tree | Update records / tree (not available with agent keys — see below) |
get_project_content_locales | Content locale settings (includes content_default_locale) |
patch_project_content_locales | Update locales (tenant_admin JWT only) |
search_admin_help | Search Console help KB |
get_admin_help_article | One help article (Markdown) |
ask_admin_help | Help RAG Q&A (related articles if LLM unset) |
translate_entry_locales | AI locale batch translate (Standard+, 1 ticket / run) |
get_login_branding | Login branding (no auth; includes login_background / hide_luno_logo / hide_powered_by) |
get_login_appearance | Login appearance settings (auth required) |
update_login_appearance | Update login appearance (background=Standard+, WL=Business+) |
list_console_login_ip_allowlists | Login IP allowlist (Business+) |
add_console_login_ip_allowlist | Add IP rule (tenant scope) |
delete_console_login_ip_allowlist | Delete IP rule |
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.
E2E over a real MCP stdio client:
# LUNO_API_URL + LUNO_AGENT_KEY (dedicated smoke project recommended)
pnpm golden-path-smoke
Creates gp-smoke-* Form Sets / entries and checks Public API + funnel (agent_backend_selected → site_created → site_published). **Staging Golden Path CI
Only the beginning is shown; read the rest in the repo