MCP server: One MCP server.

Luw.ai

@luwRun by its publisher: served from their own domain, namespace checked by the registry.MCP server · External

AI interior, exterior and landscape design, photoreal rendering, image editing, video and 3D.

Freeno charge per call

One address for any MCP client. No sign-in needed on this server.

What it does

2 read3 act16 other

Grouped by tool name. At most: creates or changes data: records, files, settings.

What it costs

Free

Odel charges nothing per call. The publisher may charge for its own service.

Tools

21 · grouped by tool name · checked 8 Oct 2026

Read · 2Look things up

  • luw_get_result
  • luw_list_options

Act · 3Change something

  • luw_edit_image
  • luw_upload_file
  • luw_run_model

Other · 16Neither hinted nor named

  • luw_interior_design
  • luw_exterior_design
  • luw_sketch_to_render
  • luw_render
  • luw_magic_wand
  • luw_landscape_design
  • luw_image_tools
  • luw_background
  • luw_segment
  • luw_generate_image
  • luw_generate_pattern
  • luw_generate_video
  • luw_image_to_3d
  • luw_archigpt
  • luw_personas
  • luw_projects
Try it in the Inspector
README9 min read

Luw.ai

Official Luw.ai MCP server

AI interior, exterior and landscape design, photoreal rendering, image editing, video and 3D,
inside Claude, Cursor, VS Code, Windsurf, Codex and any other MCP client.

npm CI MIT

Add to Cursor   Install in VS Code   Add to Claude Desktop   Add to Kiro


text
You:     Redesign ~/Desktop/living-room.jpg in Japandi style, give me 2 options.
Claude:  ⟶ luw_interior_design  ✓ 2 designs in 21s   [shows both images]
You:     Love the first one. Make the sofa green velvet, then turn it into a fly-through video.
Claude:  ⟶ luw_edit_image ⟶ luw_generate_video   ✓

Quick start

Add https://mcp.luw.ai/mcp to your client and sign in to Luw.ai. Nothing to install, no key to copy: signing in creates one for you. New accounts get free credits. To disconnect, delete that key on the API page.

Claude (claude.ai, Claude Desktop, mobile)

Settings → Connectors → Add custom connector, paste https://mcp.luw.ai/mcp, then Connect and sign in to Luw.ai.

Claude Code
bash
claude mcp add --transport http luw https://mcp.luw.ai/mcp --scope user

Then type /mcp, pick luw and sign in.

ChatGPT

Settings → Apps & Connectors → Advanced settings, turn on Developer mode, then Create: URL https://mcp.luw.ai/mcp, authentication OAuth, and sign in.

Cursor

Click Add to Cursor above, or add to ~/.cursor/mcp.json:

json
{
  "mcpServers": {
    "luw": { "url": "https://mcp.luw.ai/mcp" }
  }
}

Cursor shows Needs login next to luw; click it to sign in.

VS Code (Copilot)

Click Install in VS Code above, or add to .vscode/mcp.json:

json
{
  "servers": {
    "luw": { "type": "http", "url": "https://mcp.luw.ai/mcp" }
  }
}

VS Code asks you to sign in the first time a tool runs.

Any other client with remote MCP support
URLhttps://mcp.luw.ai/mcp
TransportStreamable HTTP
AuthSign in (MCP OAuth), or header Authorization: Bearer YOUR_LUW_API_KEY

For a client that can't sign in, create a key at app.luw.ai/dashboard/api and send it as a header:

json
{
  "mcpServers": {
    "luw": {
      "url": "https://mcp.luw.ai/mcp",
      "headers": { "Authorization": "Bearer YOUR_LUW_API_KEY" }
    }
  }
}

If it can neither sign in nor send headers, use https://mcp.luw.ai/mcp?api_key=YOUR_LUW_API_KEY. Anyone who has that URL can spend your credits, so keep it private.

The hosted server is stateless and stores nothing; your key goes straight to the Luw.ai API on each request. It can't read files from your computer, so give it image URLs, or use the local setup below.

Local: work with files on your computer

The local server runs on your machine with npx, so it can read paths like ~/Desktop/room.jpg. It needs Node.js 18+ and an API key from app.luw.ai/dashboard/api.

Claude Code
bash
claude mcp add luw --scope user --env LUW_API_KEY=YOUR_LUW_API_KEY -- npx -y @luw-ai/mcp

Or install it as a plugin. Claude Code asks for your key and keeps it in secure storage:

bash
claude plugin marketplace add Luvi-io/luw-mcp
claude plugin install luw@luw-ai
Claude Desktop

One click: download luw.mcpb, double-click it, paste your API key. No Node.js needed.

Or add this to claude_desktop_config.json (Settings → Developer → Edit Config):

json
{
  "mcpServers": {
    "luw": {
      "command": "npx",
      "args": ["-y", "@luw-ai/mcp"],
      "env": { "LUW_API_KEY": "YOUR_LUW_API_KEY" }
    }
  }
}
Cursor

Add to ~/.cursor/mcp.json:

json
{
  "mcpServers": {
    "luw": {
      "command": "npx",
      "args": ["-y", "@luw-ai/mcp"],
      "env": { "LUW_API_KEY": "YOUR_LUW_API_KEY" }
    }
  }
}
VS Code (Copilot)

Add to .vscode/mcp.json. VS Code asks for your key and keeps it in its secret storage:

json
{
  "inputs": [{ "type": "promptString", "id": "luw_api_key", "description": "Luw.ai API key", "password": true }],
  "servers": {
    "luw": {
      "command": "npx",
      "args": ["-y", "@luw-ai/mcp"],
      "env": { "LUW_API_KEY": "${input:luw_api_key}" }
    }
  }
}
Windsurf (Devin Desktop)

Add to ~/.config/devin/mcp_config.json (Windows: %APPDATA%\devin\mcp_config.json). Older Windsurf versions use ~/.codeium/windsurf/mcp_config.json.

json
{
  "mcpServers": {
    "luw": {
      "command": "npx",
      "args": ["-y", "@luw-ai/mcp"],
      "env": { "LUW_API_KEY": "YOUR_LUW_API_KEY" }
    }
  }
}
OpenAI Codex CLI
bash
codex mcp add luw --env LUW_API_KEY=YOUR_LUW_API_KEY -- npx -y @luw-ai/mcp

Or in ~/.codex/config.toml:

toml
[mcp_servers.luw]
command = "npx"
args = ["-y", "@luw-ai/mcp"]
env = { LUW_API_KEY = "YOUR_LUW_API_KEY" }
Gemini CLI
bash
gemini extensions install https://github.com/Luvi-io/luw-mcp

Gemini CLI asks for your key and keeps it in the system keychain. Or add to ~/.gemini/settings.json:

json
{
  "mcpServers": {
    "luw": {
      "command": "npx",
      "args": ["-y", "@luw-ai/mcp"],
      "env": { "LUW_API_KEY": "YOUR_LUW_API_KEY" }
    }
  }
}
Kiro

Click Add to Kiro above, confirm, then replace YOUR_LUW_API_KEY in Kiro's MCP config.

Windows: if npx isn't found, use "command": "cmd", "args": ["/c", "npx", "-y", "@luw-ai/mcp"].

What you can ask

  • "Redesign this bedroom (~/Downloads/bedroom.jpg) as Mid-Century Modern, 3 variations."
  • "This listing photo is an empty room. Stage it as a cozy Scandinavian living room."
  • "Render my sketch plan-sketch.png as a photoreal modern villa at golden hour."
  • "Change the floor in this kitchen to herringbone oak." (segments the floor, then swaps the material)
  • "Remove all the furniture from this room."
  • "Put this chair photo on a terrazzo floor in a sunlit gallery for an ad."
  • "Turn this render into a drone fly-through video."
  • "Make a 3D model of this armchair from these 3 photos."
  • "Seamless blue zellige tile texture, 1024px."
  • "Ask ArchiGPT how to improve the feng shui of this floor plan."

Built-in prompts show up as slash commands or prompt templates in your client: redesign_room, stage_empty_room, sketch_to_render, product_shot.

Tools

ToolWhat it doesCredits
luw_interior_designRedesign a room in any style; empty_room for virtual staging1
luw_exterior_designRedesign a facade or building exterior1
luw_sketch_to_renderSketch or drawing to photoreal render1
luw_render3D, CAD or clay view to photoreal render1
luw_edit_imageEdit any image with a sentence (Magic Prompt); 2K/4K1
luw_magic_wandMasked edit: replace, remove, or apply a material1
luw_landscape_designGardens and outdoor areas, matched to climate and sun1
luw_upscale_imageEnhance and enlarge 2/4/8×1
luw_expand_imageOutpaint a cropped photo to a wider view1
luw_remove_furnitureEmpty a furnished room1
luw_vectorize_imagePhoto or drawing to SVG1
luw_backgroundRemove a background, or replace it with a generated scene1
luw_segmentObject masks (all objects, or by prompt) as image URLs1
luw_generate_imageText to image (Fluw), or format: "svg" for vectors2
luw_generate_patternSeamless, tileable textures and patterns1
luw_generate_videoImage to cinematic video with 12 camera motions10 (20 with Symphony)
luw_image_to_3dPhotos to a textured 3D model (GLB)3 (8 with Symphony)
luw_archigptAsk ArchiGPT, an AI architect, a standalone question (accepts images)1 per ~3k words
luw_get_resultCollect a long-running job (free)0
luw_list_optionsValid styles, room and building types, camera motions, materials (free)0
luw_upload_fileUpload a file to Luw.ai storage and get a URL (free)0
luw_run_modelCall any Luw.ai model with raw API parameters (local server only)varies
luw_personasPersonas: reusable style identity, training images and slots (local server only)0
luw_projectsProjects (boards), folders and media (local server only; hosted: luw://projects resources)0
luw_teamEnterprise: credits, usage, members, invitations (opt-in)0

Every generation uses your Luw.ai credits. Variations are billed one generation each.

Resources

Read-only context you can attach to a conversation. In Claude Code, type @luw: to pick one; other clients that support resources offer them as attachments.

ResourceWhat it holds
luw://accountYour credit balance
luw://history/{app}Your 10 most recently updated projects in one Luw.ai app (Interior, Exterior, Video, …) with their latest results: file links, prompts and source images
luw://projects/{id}One project: its folders and the file link of every item in it
luw://catalog/{kind}Design styles, room and building types, video camera motions, materials and persona professions, with previews
luw://guideEvery tool and what it costs

How it works

  • Local files just work. Any image argument accepts an https:// URL, a local path (~/Desktop/room.jpg), or a data: URI. Local files are uploaded to Luw.ai storage as temporary files (deleted after 12 hours) and cached for the session, so repeated edits don't upload the same file again.
  • You see the results. Finished images are embedded in the tool result, so Claude and other clients show them inline. Set LUW_OUTPUT_DIR to also save every result to disk.
  • Long jobs don't time out. A call waits up to 50 seconds and streams progress to clients that show it. If a job like a video takes longer, the tool returns a processing_url and the assistant collects it with luw_get_result, without generating (or paying) twice.
  • Never billed twice. Every generation request carries an Idempotency-Key, so if a network error forces a retry, Luw.ai returns the original job instead of charging again.
  • Masks are handled for you. luw_segment returns masks as URLs, so "change the floor" becomes segment ⟶ magic wand with no manual masking.
  • Fast startup. The package is one bundled file with zero dependencies, so npx downloads a single ~260 KB package and starts right away.

Configuration

VariableDefault
LUW_API_KEY(required)Your API key (get one). LUW_API_TOKEN also works.
LUW_OUTPUT_DIR(off)Also download results (images, videos, GLB, SVG) into this folder
LUW_TOOLSETSall except teamComma-separated list from generate, archigpt, personas, projects, team, or all
LUW_WAIT_TIMEOUT_SECONDS50How long a call waits before returning a processing_url. Raise it for clients with long tool timeouts, such as Claude Code.
LUW_INLINE_IMAGEStrueEmbed result images in tool output
LUW_API_BASE_URLhttps://api.luw.ai/v2API endpoint override

Self-hosting the remote server

The same package serves the hosted Streamable HTTP endpoint:

bash
npx -y @luw-ai/mcp --http --port 8080 --host 0.0.0.0   # MCP at /mcp, health at /health
bash
docker build -t luw-mcp . && docker run -p 8080:8080 luw-mcp

It's stateless. Each request brings its own key in Authorization: Bearer …, X-Luw-Api-Key, or ?api_key=. Set LUW_MCP_OAUTH_SECRET to also let clients sign in to Luw.ai instead (OAuth); the sign-in hands the client an ordinary API key. It deploys to Vercel as-is (vercel.json is included), and a Procfile is included for Heroku. See docs/maintainers.md for deployment and release steps.

Development

bash
npm ci
npm test               # unit and protocol tests (no network)
npm run build          # bundles dist/cli.js
npm run inspector      # try every tool in the MCP Inspector
LUW_API_KEY=... npm run smoke            # live checks against the real API (free)
LUW_API_KEY=... npm run smoke -- --paid  # plus one real generation (1 credit)
npm run mcpb           # build/luw.mcpb, the Claude Desktop extension

Support

MIT © Luvi Technologies, Inc.

Similar modules

Browse Interior design & architecture