Sleek

design.sleek由 sleek.design 發布官方發布者v1.0.1更新於 Oct 24, 2026

Design your mobile app UI with AI, then have your coding agent build the real app from it.

已驗證Streamable HTTP可網頁執行開發者工具媒體與設計

概覽

AI 產生的概覽

Sleek 是託管的 AI 行動應用程式設計伺服器,讓助理依自然語言描述產生、編輯、預覽並匯出應用程式畫面。

可以做什麼
  • 列出、建立、取得並永久刪除工作區中的專案
  • 列出專案中的畫面,並取得某個畫面產生的 HTML 以便交付開發
  • 瀏覽精選風格參考,用來指定設計外觀
  • 執行設計代理,用一段自然語言描述建立或編輯畫面,並輪詢或取消該次執行
  • 將最多四個畫面渲染成一張內嵌圖片,並分享專案連結
適用情境
適合讓助理把描述中的行動應用程式變成真實、可編輯的畫面,供你開啟、修改並匯出為 Figma、HTML 或 React,再交給編碼代理實作。適用於早期 UI 探索與設計到程式的交接,而非正式素材管理。
執行需求
無需安裝:在 MCP 用戶端加入 sleek.design 上的遠端 Streamable HTTP 端點。需要免費的 Sleek 帳號,通常透過瀏覽器 OAuth 登入。SLEEK_API_KEY 中的 API 金鑰僅供不支援 OAuth 的用戶端備用。需要能連線至 sleek.design 及其授權伺服器。
安裝前請注意
設計執行會消耗工作區的 AI 點數(新畫面約 30 點,編輯 5 到 30 點);列出、讀取與渲染免費,已取消的執行不退還點數。授權後用戶端可代表你操作,包括消耗點數。delete_project 會永久刪除專案及其所有畫面,無法復原。API 金鑰擁有與完整授權相同的權限且不會過期,應存放在環境變數中,外洩時立即撤銷。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Sleek,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/design.sleek%2Fsleek/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。

{
  "mcpServers": {
    "sleek": {
      "type": "http",
      "url": "https://sleek.design/api/mcp"
    }
  }
}

README

Sleek MCP server

Describe a mobile app in plain language and get real, editable screens back, shown right in your chat. Your coding agent can then build the working app from them.

Sleek is an AI mobile app design tool. This is its remote MCP server, which lets Claude, ChatGPT, Codex, Cursor, and any other MCP client design for you: you say "design a plant shop app with onboarding, home, product detail, and cart", and your assistant creates a project, runs the design agent, shows you the screens, and hands you a link where you can open them, edit them, and export them to Figma or code.

There is nothing to install. The server runs on Sleek's infrastructure; you point your client at one URL and sign in.

text
https://sleek.design/api/mcp
  • New to MCP? It's the open standard that lets an AI client connect to an outside tool. "Remote" means the tool is hosted, so you only need the URL above.
  • Need an account? Create one free at sleek.design.
  • Want a skill instead of an MCP connection? See sleekdotdesign/agent-skills.

This repository holds only the manifests and docs that point at that server: no server code, no scripts, no hooks, no telemetry.

Quickstart

  1. Connect your client using the section for it below, and sign in to Sleek when prompted.
  2. Ask for a whole app in one sentence: "Design a plant shop app in Sleek: onboarding, home with featured plants, plant detail, cart, and profile. Warm, minimal style."
  3. Your assistant shows you the rendered screens and gives you a project link. Open it to edit, or to export to Figma, HTML, or React.

Send the whole app as one request. Sleek's design agent plans the screen set together, so one message for five screens produces a coherent app; five separate messages produce five unrelated screens and charge you five times.

Connect your client

Every client uses the same URL.

Sign in with OAuth. This is the way to connect Sleek. Add the URL, your client opens a browser, you approve access, done. Nothing to copy, nothing to store, and you can revoke it from either side. Every client on this page supports it, so follow the steps for yours and you are finished.

Do not reach for an API key first. Keys exist only for clients that cannot do OAuth at all. A key is a long-lived secret with the same power over your workspace as a full OAuth grant, it does not expire on its own, and configuring one stops your client from ever offering the browser sign-in. If OAuth is failing, fix that rather than working around it; the troubleshooting section covers the usual causes. The API-key steps below are folded away on purpose.

Claude.ai, Claude Desktop, Cowork, and mobile

Custom connectors work on Free (one connector), Pro, Max, Team, and Enterprise plans. Claude connects to Sleek from Anthropic's cloud, not from your device.

On a Pro or Max plan:

  1. Open Customize → Connectors.
  2. Click +, then Add custom connector.
  3. Enter https://sleek.design/api/mcp as the remote MCP server URL.
  4. Leave Advanced settings empty. Claude registers itself with Sleek automatically.
  5. Click Add, sign in to Sleek, and approve access.

On Team or Enterprise, an Owner adds it once under Organization settings → Connectors → Add (hover Custom, select Web, same URL). Members then open Customize → Connectors, find the entry the Owner added, and click Connect.

To disconnect, open Customize → Connectors and choose Remove.

Optional: pre-registered OAuth client ID

If a form insists on a client ID, use the one below and leave the client secret blank. It is a public client, so there is no secret.

text
7ef50bea-9fe8-47bb-8163-68a0e21395ab

Claude Code

bash
claude mcp add --transport http sleek https://sleek.design/api/mcpclaude mcp login sleek

You can also sign in from /mcp inside Claude Code.

Or install it as a plugin from the marketplace in this repository:

text
/plugin marketplace add sleekdotdesign/mcp/plugin install sleek@sleek

Then sign in the same way. The plugin's server appears as plugin:sleek:sleek. It ships only the server definition in .mcp.json: no hooks, skills, agents, or commands.

Last resort: API key instead of OAuth

Put the key in your shell profile first, so the value is never written into Claude Code's config:

bash
export SLEEK_API_KEY=sk_...   # in ~/.zshrc or ~/.bashrcclaude mcp add --transport http sleek https://sleek.design/api/mcp \  --header 'Authorization: Bearer ${SLEEK_API_KEY}'

The single quotes matter: they store the ${SLEEK_API_KEY} reference and Claude Code reads it from your environment on each connection. With double quotes your shell substitutes the key and Claude Code saves it in plain text.

Codex CLI and ChatGPT desktop

bash
codex mcp add sleek --url https://sleek.design/api/mcpcodex mcp login sleek

The ChatGPT desktop app, the Codex CLI, and the IDE extension share this configuration.

Last resort: API key instead of OAuth

Set SLEEK_API_KEY in your environment, then either:

bash
codex mcp add sleek --url https://sleek.design/api/mcp --bearer-token-env-var SLEEK_API_KEY

or add this to ~/.codex/config.toml to apply it to every project:

toml
[mcp_servers.sleek]url = "https://sleek.design/api/mcp"bearer_token_env_var = "SLEEK_API_KEY"

ChatGPT

  1. Open Settings → Security and login and turn on Developer mode. Availability depends on your account and workspace policy.
  2. Go to the ChatGPT Plugins page and click the plus button.
  3. Give it a name (Sleek) and a description.
  4. Under Connection, enter https://sleek.design/api/mcp.
  5. Create the connection and sign in to Sleek.

If it asks for an authentication method, choose OAuth and leave the client ID and secret blank.

Cursor

Paste this into your browser's address bar and Cursor offers to install the server:

text
cursor://anysphere.cursor-deeplink/mcp/install?name=sleek&config=eyJ1cmwiOiJodHRwczovL3NsZWVrLmRlc2lnbi9hcGkvbWNwIn0=

Or add it by hand to ~/.cursor/mcp.json (all projects) or .cursor/mcp.json (one project):

json
{ "mcpServers": { "sleek": { "url": "https://sleek.design/api/mcp" } } }

Cursor runs the OAuth sign-in when you enable the server, which is all you need. Only if that is impossible, add a header; Cursor resolves ${env:NAME}:

json
{ "mcpServers": { "sleek": { "url": "https://sleek.design/api/mcp", "headers": { "Authorization": "Bearer ${env:SLEEK_API_KEY}" } } } }

Any other MCP client

Add a remote server with the Streamable HTTP transport. The exact type value varies by client (http, streamable-http, or omitted):

json
{ "mcpServers": { "sleek": { "type": "streamable-http", "url": "https://sleek.design/api/mcp" } } }

Clients that implement MCP authorization discover everything they need from the protected resource metadata and register themselves dynamically, so this is usually the whole configuration. Only a client with no OAuth support at all needs "headers": { "Authorization": "Bearer sk_..." } added to it.

What you can ask for

Design a whole app in one message.

Design a plant shop app in Sleek: onboarding, home with featured plants, plant detail, cart, and profile. Warm, minimal style.

Your assistant creates a project, sends the whole brief as a single design run, shows you the new screens inline (or as one rendered image where the client can't display apps), and shares the project link. One run, charged once.

Look at what you already have, for free.

Show me the cart and profile screens from my plant shop project.

Listing, showing, and rendering cost nothing, so browsing your projects never spends credits.

Edit one screen.

On the plant detail screen, move the Add to cart button into a sticky bottom bar and make the price larger.

The agent edits that screen in place instead of creating new ones. This is a design run, so it spends credits.

Export

The screens are real design files, not pictures of an app. Open the project link your assistant gives you and export from there:

  • Figma. Click the Figma button and paste into any Figma file. The screens arrive as native, fully editable Figma layers. No plugin needed.
  • Code. Export screens as HTML or as React with Tailwind CSS.

Both are on every plan, including Free. You own everything you make, designs and code, and you can use it commercially.

Your assistant can also pull a screen's generated HTML straight into the conversation with get_component, which is handy if you want it to adapt a screen into your own codebase without you leaving the chat.

Pricing

Design runs spend your Sleek workspace's AI credits. Listing, reading, and rendering are free.

A new screen costs roughly 30 credits; editing one costs 5 to 30, depending on how much changes.

Free accounts get one-time trial credits, enough for about one design run. Sustained use needs the Pro plan or higher: $69/month, or $30/month billed yearly at $360/year, with 20,000 monthly AI credits, roughly 650 screens. See sleek.design/pricing for current plans.

Tools

Your assistant can call twelve tools. It picks them for you; this table is for reference.

ToolWhat it doesCost
list_projectsList the projects in your workspace, newest firstFree
create_projectCreate an empty project to design intoFree
get_projectFetch one project by idFree
delete_projectPermanently delete a project and every screen in itFree, cannot be undone
list_componentsList the screens in a projectFree
get_componentFetch one screen with its generated HTML, to reuse in your own codeFree
list_referencesList Sleek's curated design references to imitateFree
designRun the design agent to create or edit screens from a briefSpends credits
get_design_runCheck the status of a design runFree
cancel_design_runStop a queued or running design runFree (credits already spent are not refunded)
show_projectShow a project's screens inline in clients that can display apps, highlighting what a design run changedFree
screenshotRender up to four screens into one image, for clients that can't display appsFree

The server's tools/list returns fifteen tools, so some clients list three more: open_sleek, get_project_view, and search_mentions. Only Sleek's in-chat screen viewer and ChatGPT's sidebar call these. They are hidden from your assistant, and they're free.

Details that matter if you're driving the tools directly:

  • design takes the whole brief as one message. Optional: screenId to edit an existing screen, referenceId from list_references to imitate a style, imageUrls for visual input, idempotencyKey so a retry returns the original run instead of charging for a second one, and wait (default true). The wait is capped at 270 seconds; after that the call returns running and you poll get_design_run. Set wait to false to poll from the start if your client times out sooner.
  • Every screen has two ids. The screenId is the frame on the canvas, and it is what design takes to edit a screen. The component id, returned as id by list_components, is what screenshot and get_component take. A design run returns both for every screen it touches, and list_components and get_component return screenId next to the component id (null when a component isn't on a canvas). Never pass a component id as screenId.
  • Only one design run can be active per project. On a conflict, poll get_design_run until the current run settles, or call cancel_design_run, then retry.
  • A failed run can include an error.url. That's where you resolve the problem, usually topping up credits or upgrading. Clients should pass it along.
  • delete_project requires confirm: true, and should only run after you've named the project you want deleted.
  • After a design run completes, call show_project with its runId to show what the run made. Fall back to screenshot only where the client can't display apps; it renders up to four screens per call, so render more in batches.

Troubleshooting

Claude Code shows sleek as connected before I signed in. That's expected. Sleek lets any client read the server's name and tool list without a login, so the connection succeeds and authentication is only checked when a tool runs. If you skip the sign-in, the first tool call is rejected and Claude Code then marks sleek as needing authentication. Signing in first avoids the round trip.

My API key doesn't work and I never get an OAuth prompt. When you configure an Authorization header, Claude Code treats a rejected key as a failed connection rather than a reason to sign in, so it won't fall back to OAuth. Check the key, or remove the header and use OAuth.

Opening the URL in a browser returns 405. By design. The endpoint accepts POST only; the server is stateless and holds no connection open between calls.

I already have Sleek connected on claude.ai and in Claude Code. Claude Code deduplicates entries pointing at the same URL and keeps one active in /mcp.

To check a key without any client:

bash
curl -s -X POST https://sleek.design/api/mcp \  -H "Authorization: Bearer $SLEEK_API_KEY" \  -H 'Content-Type: application/json' \  -H 'Accept: application/json, text/event-stream' \  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"list_projects","arguments":{}}}'

Authentication and privacy

The server implements standard MCP authorization with OAuth 2.1: authorization code with PKCE (S256), dynamic client registration, and the scopes openid email profile offline_access. Access tokens last one hour and clients refresh them automatically. Sleek's authorization server is its Supabase Auth instance, named in the protected resource metadata.

What you're granting. Approving the consent screen lets the client act as you in your Sleek workspace: list, create, and delete projects, design and edit screens, and spend the workspace's credits on design runs. It can't do anything your own account can't do.

How to revoke. On the client side, remove the connector (claude.ai: Customize → Connectors → Remove; Claude Code: Clear authentication in /mcp, or claude mcp logout sleek, or claude mcp remove sleek, which also deletes the stored tokens). On the Sleek side, revoke the grant or the API key from your account at sleek.design, or email [email protected].

API keys are the fallback, not the default. A key from sleek.design/agents/setup is a secret carrying the same access as an OAuth grant, with none of its safeguards: it does not expire, it is not bound to a device, and anyone who reads it has your workspace until you revoke it. Use one only where OAuth cannot run. Keep it in an environment variable, never in a file you commit, and revoke it the moment it leaks.

Network. The only destinations are sleek.design and its authorization server. This repository ships no code, no hooks, and no telemetry, and the plugin manifest adds nothing beyond the server definition. What Sleek stores and for how long is in the privacy policy.

Support

Email [email protected], or read the docs for agents. For security reports see SECURITY.md. Maintainers: see docs/publishing.md.

Licensed under the MIT License. See LICENSE.

來源:README.md,提交 597d9e4

工具

12

list_projects

List projects

List the workspace's projects, newest first. Each project holds one app's screens, theme, and design chat. Check here before create_project to avoid duplicates.

輸入參數limitoffset

create_project

Create a project

Create an empty project. Returns it in data, plus projectUrl. Pass data.id as projectId to design, then call screenshot. Creating a project is instant and uses no credits. Only design runs do. Share projectUrl so your user can watch and edit the designs.

輸入參數name必填

get_project

Get a project

Fetch a project and its projectUrl. Use it to confirm the project exists and share the URL with your user. Use list_components to see its screens.

輸入參數projectId必填

delete_project

Delete a project

Permanently delete a project and all its screens. Designs cannot be recovered. Call only after your user confirms the exact project by name. Never delete projects to tidy up on your own initiative.

輸入參數confirm必填projectId必填

list_components

List screens

List a project's screen names and active version numbers without generated HTML. Pass each item's screenId to design. Pass its id as componentId to get_component or in componentIds to screenshot. Use get_component only when you need a screen's code.

輸入參數limitoffsetprojectId必填

get_component

Get a screen's HTML

Fetch a screen's generated HTML. Returns the screen in data, with the HTML at data.versions[].code. versions holds only the version the screen currently shows. Use allVersions for the full history, which can be large. The returned screenId is the value design takes. Use this for a build handoff, not to check whether a design run worked.

輸入參數projectId必填allVersionscomponentId必填inlineIcons

list_references

List design references

List curated app styles and their preview images. When your user asks for a look such as Airbnb, brutalist, or dark fintech, pass the closest reference's id as referenceId to design. Without a reference, the agent picks a style.

輸入參數limitoffset

design

Design screens with AI

Run Sleek's design agent to create or edit screens from a plain-language brief. Send the whole request as ONE message, such as 'a food delivery app with onboarding, restaurants, dish detail, cart, tracking, and profile'. The agent plans the screens together, so separate calls produce mismatched screens. A run uses workspace credits only when it completes or saves changes. By default this waits for the run to finish. If it returns 'queued' or 'running', poll get_design_run. Only one run can be active per project. On CONFLICT, poll get_design_run until the run settles, then retry. cancel_design_run stops it sooner. If a failed run has data.error.url, relay data.error.message to your user with that link. They have to act before you retry. On completion, share projectUrl with your user and call screenshot.

輸入參數waitmessage必填screenIdimageUrlsprojectId必填referenceIdidempotencyKey

get_design_run

Get a design run

Poll a run that design returned as 'queued' or 'running'. Wait a few seconds between polls. On 'completed', data.result.operations lists the saved screens and theme changes. Share projectUrl and call screenshot. On 'failed', relay data.error.message to your user, with data.error.url if present. A failed run, including a cancelled one, keeps what it saved in that same list and uses credits only when the list is not empty. Check it before resending the brief.

輸入參數runId必填projectId必填

cancel_design_run

Cancel a design run

Ask a design run to stop, for example when the brief was wrong. Returns the run as it stands right after the request. A queued run comes back 'failed' with error code 'cancelled' and never starts. A running run comes back still 'running' and stops at its next step. A run cut short settles as 'failed' with error code 'cancelled', or 'execution_failed' if saving its changes failed. It keeps any screens and theme changes it saved, listed in data.result.operations, and uses credits only when that list is not empty. A run that finishes before it stops settles as 'completed'. A run that had already settled comes back unchanged. The project stays locked until the run settles, so poll get_design_run before starting another run. A run that stopped responding settles as 'failed' with error code 'execution_timeout' 15 minutes after creation.

輸入參數runId必填projectId必填

screenshot

Render screens to an image

Render up to four project screens side by side as one inline image, after a design run completes. Returns the image, PNG unless format asks for WebP, and a one-line text note. Rendering uses no credits. Send projectUrl with the image so your user can open and edit the designs.

輸入參數scaleformatpaddingprojectId必填backgroundfullHeightcomponentIds必填

search_mentions

Search projects to mention

Find the workspace's projects by name for an @ mention, newest first. Each item is a resource link whose name is the projectId and whose uri is the projectUrl. To browse every project, use list_projects.

輸入參數query必填

版本歷史

1
  1. v1.0.1最新Oct 15, 2026

評分

已滿足適用檢查項的 100%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分