Kleap MCP server
2026년 11월 9일 커밋AI agent이 호스팅, 데이터베이스, 인증 및 도메인 관리가 통합된 라이브 웹사이트를 구축, 편집 및 게시할 수 있도록 지원합니다.
다른 이름 kleaphq/cli, cli
- 스타
- 1
- Tools
- 3
- 다운로드, 30일
- —
- 최신 버전
- 1.1.0
- 마지막 커밋
- 2026년 11월 9일
- 라이선스
- MIT
Kleap MCP란?
Kleap은(는) MCP server입니다. AI agent이 호스팅, 데이터베이스, 인증 및 도메인 관리가 통합된 라이브 웹사이트를 구축, 편집 및 게시할 수 있도록 지원합니다. 3개 도구를 제공합니다. 예: find_app, generate_image, get_form_submissions.
프로젝트 README에서 생성된 요약
Kleap MCP server 정보
Kleap은 AI agent가 라이브 웹사이트를 구축, 관리 및 배포하는 데 필요한 인프라를 제공합니다. CLI와 MCP server 역할을 모두 수행하므로 Claude, ChatGPT, Cursor와 같은 agent가 초기 사이트 생성부터 호스팅, 데이터베이스 관리, 도메인 연결까지 모든 과정을 처리할 수 있습니다. 사용자는 API key를 사용하여 로컬 stdio 프로세스를 통해 서비스를 이용하거나, 키가 필요 없는 설정을 위해 OAuth를 사용하는 호스팅된 커넥터를 통해 이용할 수 있습니다.
이 플랫폼은 agent가 복잡한 웹 개발 작업을 수행할 수 있도록 34개의 도구 모음을 포함합니다. 여기에는 파일 관리, Postgres 데이터베이스에 대한 SQL 명령 실행, 이미지 생성 및 폼 제출 처리가 포함됩니다. 유효하지 않은 링크를 제공할 수 있는 other 도구들과 달리, Kleap은 사이트가 온라인 상태라고 보고하기 전에 실제로 서비스 중인지 확인하는 verified-live 보증을 사용합니다. 개발자는 또한 agent를 통해 커스텀 도메인을 관리하고 사이트 분석 데이터를 직접 모니터링할 수 있습니다.
활용 사례
- 1라이브 웹사이트 배포agent가 텍스트 프롬프트로부터 새로운 사이트를 생성하고 이를 라이브 URL로 게시할 수 있습니다.
프로젝트의 README를 바탕으로 작성되었습니다. 모든 활용 사례는 해당 내용의 인용문과 대조하여 확인합니다.
Kleap MCP 설치 방법
형식 확인: 2026년 11월 10일Claude Code에 Kleap MCP 설치
$ claude mcp add --transport http cli https://kleap.co/api/mcpCursor에 Kleap MCP 설치
~/.cursor/mcp.json
{
"mcpServers": {
"cli": {
"url": "https://kleap.co/api/mcp"
}
}
}VS Code에 Kleap MCP 설치
.vscode/mcp.json
{
"servers": {
"cli": {
"type": "http",
"url": "https://kleap.co/api/mcp"
}
}
}Codex에 Kleap MCP 설치
~/.codex/config.toml
[mcp_servers.cli] url = "https://kleap.co/api/mcp"
Gemini CLI에 Kleap MCP 설치
~/.gemini/settings.json
{
"mcpServers": {
"cli": {
"httpUrl": "https://kleap.co/api/mcp"
}
}
}Kleap MCP 도구 3
README에서 감지됨find_appgenerate_imageget_form_submissions
| find_app | — | |
| generate_image | — | |
| get_form_submissions | — |
구성
KLEAP_API_KEY
| 이름 | 설명 | 유형 |
|---|---|---|
| KLEAP_API_KEY | — |
자동 검사
2026년 11월 13일에 실행됨전체 보고서 →아직 인증되지 않았습니다. 서버는 80점 이상의 점수, 심각한 결함 없음, 그리고 검사에 충분한 데이터를 갖추어야 합니다. 검사 방식
- 소스 저장소 연결 및 접근 가능kleaphq/cli is public and reachablegithub.com/kleaphq/cli ↗통과
- 패키지가 이 저장소를 소스로 지정검사되지 않음
- 빌드 출처(Sigstore 증명)검사되지 않음
- 오픈 소스 라이선스 (OSI)MITspdx.org/licenses/MIT.html ↗통과
- 최근 1년 내 커밋 또는 릴리스Last commit or release 2026-11-09github.com/kleaphq/cli ↗통과
- OpenSSF Scorecard검사되지 않음
- 패키지 이름이 인기 패키지와 유사하지 않음검사되지 않음
- 패키지와 의존성에 심각한 보안 권고 없음검사되지 않음
- 모델에 대한 숨겨진 지침 없음3 tool descriptions and the README read; no override phrases, credential paths or hidden characters통과
- 파괴적인 도구에 라벨 표시됨No tool named like delete, drop or exec통과
- 원격 endpoint가 MCP 핸드셰이크에 응답initialize answered with protocol 2025-06-18 in 113 ms통과
README
GitHub에서 보기Kleap — website infrastructure for AI agents
Your agent builds. Kleap ships it live. Let any AI agent — Claude, ChatGPT, Cursor, or a bash-tool agent like Claude Code — build, edit and publish real, live websites for you. Hosting, database, auth and domains included.
An alternative to Lovable / v0 / Bolt — except it's driven by your agent, and every publish comes with the verified-live guarantee: a site is only ever reported online once it is provably serving — never a hallucinated dead link.
This package is both a CLI (kleap create "…", kleap publish 42, …) and an
MCP server (kleap mcp / no args) — same
account, same ~/.kleap/config.json auth, same underlying /api/v1 REST API.
Pick whichever fits your agent: a shell/bash-tool agent (Claude Code, a cron
script, CI) wants the CLI — one compact line per call, no JSON-RPC framing.
An MCP-native client (Claude Desktop, Cursor, ChatGPT connectors) wants the
MCP server, which this package also is, unchanged.

Above: a real run — your agent writes the code with
write_files,publish_appbuilds & deploys it, and the page is live in seconds. Or just ask Kleap's AI in plain English.
No secrets live in this package — it reads your own KLEAP_API_KEY (or the
token saved by kleap auth login) and talks only to kleap.co.
CLI (for agent shells — Claude Code, Codex, scripts)
If your agent drives a bash tool rather than MCP, use the CLI directly.
Output is 1-3 lines by default (token-efficient — built for an agent reading
its own tool output, not a human terminal), clean exit codes (0 ok / 1 failed / 2 still running), and a
--json flag whenever you want the full structured response.
npx -y kleap-cli auth login # opens your browser once, no key to paste
# — or, for CI / non-interactive: npx -y kleap-cli auth key kleap_live_sk_...
npx -y kleap-cli create "a one-page site for my bakery, warm palette"
# ✓ created app 4821 — https://warm-bakery-fold.kleap.io
npx -y kleap-cli edit 4821 "change the headline to 'Roasted slow'"
# ✓ edited app 4821 — https://warm-bakery-fold.kleap.io
npx -y kleap-cli publish 4821
# ✓ published https://warm-bakery-fold.kleap.io
npx -y kleap-cli status warm-bakery-fold.kleap.io # by id, slug, kleap.io URL, or connected custom domain
# ✓ Bakery (4821) — live: https://warm-bakery-fold.kleap.io
Commands
| Command | What it does |
|---|---|
kleap auth login |
Sign in via browser (OAuth, PKCE loopback) — no key to copy |
kleap auth key <KEY> |
Store a kleap_live_sk_... key instead (CI / non-interactive) |
kleap auth logout / kleap auth status |
Clear / show current auth |
kleap create "<prompt>" [--visibility public|personal] [--webhook <url>] [--no-wait] [--json] |
Create a site, wait for the build (~5-15 min), print the live URL |
kleap edit <app> "<prompt>" [--webhook <url>] [--no-wait] [--json] |
Ask Kleap's AI to change a site, wait for it to redeploy |
kleap publish <app> [--no-wait] [--json] |
Publish/redeploy with the verified-live guarantee |
kleap status <app> [--json] |
One-line status: name, id, live URL or "not published" |
kleap list [--limit N] [--q text] [--json] |
Your apps, one tab-separated row each: id name url |
kleap domains search <query> [--tlds .com,.io] [--json] |
Available domains, one per line |
kleap domains connect <domain> <app> [--json] |
Connect a domain you own; prints the A record to set |
kleap screenshot <app> |
Capture a preview screenshot, print its URL |
kleap task <task_id> [--wait] / kleap task retry <task_id> [--wait] |
A create/edit task's status (long-poll with --wait) / resume a failed one |
kleap rename <app> <name> · kleap wake <app> · kleap messages <app> · kleap credits |
Rename (URL unchanged) · wake a preview sandbox · chat history · credit balance + plan |
kleap files ls <app> · files cat <app> <path...> |
List source paths · print file contents |
kleap files write <app> <path> --file <local> | --stdin | --content "<text>" |
Write a file (binary extensions go base64 automatically, 512 KB max) → then publish |
kleap files edit <app> <path> --find "<old>" --replace "<new>" [--all] |
Replace text inside a file |
kleap files rm <app> <path...> |
Delete pages/assets (live until the next publish) |
kleap image <app> <public/name.webp> "<prompt>" [--hd] |
Generate an image into the site → then publish |
kleap forms <app> [--since ISO] [--limit N] |
Form submissions (leads), newest first; --json is flattened |
kleap analytics <app> [--period 7d|30d|90d] |
Visitors, pageviews, top pages |
kleap search-console <app> · search-console connect <app> |
Google Search numbers · the consent link the user opens |
kleap db schema <app> |
Tables, row counts, columns of the app's Postgres |
kleap db rows <app> <table> [--where json] [--limit] [--offset] [--order-by col --order asc|desc] |
Read rows (one JSON object per line) |
kleap db insert <app> <table> '<json>'|--file rows.json |
Insert one object or an array (chunked at 500) |
kleap db update <app> <table> --where json --set json · db delete <app> <table> --where json |
--where is mandatory and non-empty |
kleap db sql <app> "<sql>" [--params json] |
One SQL statement with $1..$n params (owner-level: needs database:write even for SELECT; 500 rows / 5 MB cap) |
kleap domains buy <domain> [--years N] [--app <app>] |
Creates a Stripe checkout link the user pays — never bought until they do |
kleap domains check <domain> |
DNS / connection status (also: did the paid domain get registered?) |
kleap mcp |
Run the MCP stdio server explicitly (same as no args) |
<app> accepts a numeric app id, a slug.kleap.io URL, a bare slug, or a
connected custom domain — resolved server-side in one call
(GET /apps/resolve), same as the MCP find_app tool.
Example: a Claude Code / bash-tool agent
# One-shot: build it, publish it, hand back a URL a human can click.
url=$(npx -y kleap-cli create "a landing page for my podcast" --json | node -e \
'let d="";process.stdin.on("data",c=>d+=c).on("end",()=>console.log(JSON.parse(d).url))')
echo "Live: $url"
# Non-blocking flow (agent does other work while it builds):
npx -y kleap-cli create "a landing page for my podcast" --no-wait --json # → { task_id, app_id, ... }
# ... later ...
npx -y kleap-cli status 4821
Exit codes are always clean: 0 on success, 1 on any failure, 2 when a build is
still running after the wait cap (9 min, KLEAP_WAIT_MINUTES to change it) — not a
failure: the line gives the kleap task <id> --wait to keep waiting. Failures print a single
✗ <reason> line on stderr (or {"error":{"message":...}} with --json) —
safe to check with $? / try/except subprocess.run(..., check=True) without
scraping prose.
Install once (optional — npx -y above needs no install)
npm i -g kleap-cli
kleap auth login
kleap create "a one-page site for my bakery"
MCP server (for MCP-native clients — Claude Desktop, Cursor, ChatGPT)
Same package, same account, same ~/.kleap/config.json auth — just a
different transport for clients that speak MCP
instead of a bash tool.
Easiest — connect with OAuth, no key
Add the hosted connector and sign in. Nothing to generate, nothing to paste — you authorize Kleap in your browser like any other app. Works in Claude Desktop, ChatGPT and Cursor.
https://kleap.co/api/mcp
- Claude Desktop — Settings → Connectors → Add custom connector → paste the URL → Connect → sign in to Kleap.
- ChatGPT — Settings → Connectors → add the URL → authorize with OAuth.
- Cursor — Settings → MCP → Add server → paste the URL → authorize.
That's it — all 34 hosted tools (the 33 listed below plus upgrade_plan) are available after OAuth sign-in. Skip straight to step 3.
Or — local CLI, sign in with your browser (no key)
Prefer a local stdio process? Sign in once — no key to generate or paste:
npx kleap-cli auth login
This opens your browser, you authorize Kleap, and the token is saved to
~/.kleap/config.json. After that, npx -y kleap-cli just works. (kleap auth logout / kleap auth status are there too.) Then add a keyless stdio entry to
your client, e.g. Claude Desktop claude_desktop_config.json:
{ "mcpServers": { "kleap": { "command": "npx", "args": ["-y", "kleap"] } } }
Or — local CLI with an API key
Prefer a key (e.g. for CI or scripting the REST API directly)?
1. Get an API key — open kleap.co/settings/api-key and click Create my API key (kleap_live_sk_...).
2. Add Kleap to your AI client:
{
"mcpServers": {
"kleap": {
"command": "npx",
"args": ["-y", "kleap"],
"env": { "KLEAP_API_KEY": "kleap_live_sk_..." }
}
}
}
{
"mcpServers": {
"kleap": {
"command": "npx",
"args": ["-y", "kleap"],
"env": { "KLEAP_API_KEY": "kleap_live_sk_..." }
}
}
}
claude mcp add kleap -e KLEAP_API_KEY=kleap_live_sk_... -- npx -y kleap-cli
{
"mcpServers": {
"kleap": {
"command": "npx",
"args": ["-y", "kleap"],
"env": { "KLEAP_API_KEY": "kleap_live_sk_..." }
}
}
}
{
"mcpServers": {
"kleap": {
"command": "npx",
"args": ["-y", "kleap"],
"env": { "KLEAP_API_KEY": "kleap_live_sk_..." }
}
}
}
Add the hosted connector at https://kleap.co/api/mcp and authorize with
OAuth (or paste your kleap_live_sk_ key). Same tools, no install.
Every stdio config is identical —
npx -y kleap-cli+ aKLEAP_API_KEYenv var — so any MCP client works.
Least-privilege keys: when you generate a key, pick a scope — Read-only (inspect sites, no changes), Build, or Full. Buying domains is never included by default. Give a read-only agent a read-only key.
3. Restart the client and just ask:
"Build me a one-page site for my bakery, publish it, and give me the live URL." "Add a contact form to my site and redeploy." "Change the headline to 'Roasted slow' and publish."
Works with any MCP-compatible agent: Claude · ChatGPT · Cursor · Claude Code · Codex.
Tools
Find & build — find_app · create_app · modify_app · check_task · retry_task · rename_app · get_screenshot · wake_app
Files — list_app_files · read_files · write_files · edit_files · delete_files · generate_image
Publish & domains — publish_app · get_publish_status · search_domains · buy_domain · check_domain · connect_domain
Leads, traffic, SEO — get_form_submissions · get_analytics · get_search_console · connect_search_console
Database — get_database_schema · query_database_rows · insert_database_rows · update_database_rows · delete_database_rows · run_database_sql
Account — list_apps · get_app · get_credits
| Tool | What it does |
|---|---|
find_app |
Resolve a domain / URL / slug → app_id in one call |
create_app / modify_app |
Build a site from a prompt / ask its AI for a change → returns a task (auto-deploys live) |
check_task / retry_task |
Long-poll a task (wait up to 50s) / resume a failed one (new task_id) |
read_files → edit_files / write_files / delete_files |
Read current contents, then change exactly what must change (base64 for binaries) → publish_app |
generate_image |
Generate a real image into public/ without sending bytes |
publish_app / get_publish_status |
Publish with verified-live; confirm it + read the post-deploy report |
search_domains / buy_domain |
Find domains / create a checkout link the user pays (nothing is bought by the agent) |
connect_domain / check_domain |
Connect a domain the user owns / its DNS status |
get_form_submissions |
The site's leads, newest first (since for only new ones) |
get_analytics / get_search_console / connect_search_console |
Traffic / Google Search numbers / consent link for Search Console |
get_database_schema … run_database_sql |
The app's Postgres: schema, row CRUD (where required for update/delete), SQL |
rename_app / get_screenshot / wake_app |
Rename (URL unchanged) / screenshot URL / wake a preview sandbox |
list_apps / get_app / get_credits |
Your apps, one app's details, credit balance + plan |
Database and checkout tools need the database:* / domains:checkout scopes: a key
created before they existed gets 403 INSUFFICIENT_SCOPE — create a new key with the Full preset.
App arguments are snake_case: app_id, task_id, prompt, message, visibility.
Recipes
Two ways to put code on a site — pick per task:
write_files(deterministic): your model writes the exact file contents; you push them and Kleap builds + deploys as-is. No Kleap-AI step → no Kleap credits, never stalls. Thenpublish_app. Unlike Lovable/v0/Bolt, your agent can write the code itself.modify_app(Kleap's AI): describe the outcome in plain English and Kleap's AI writes it. Like Lovable's message-passing — kept for when you'd rather it figure out the change.
Either way Kleap hosts it (build, deploy, SSL, DB, auth, domains, verified-live).
- Edit existing files SAFELY (don't rewrite blind) —
list_app_files(app_id)→read_files(app_id, ["src/components/Header.astro"])→ edit only what must change with your own model →write_files(app_id, [{ path, content }])→publish_app(app_id). This read→edit→write loop is the reliable way to fix headers/footers, wrong phone numbers, broken links or dead forms without breaking the rest of the site. - Edit a site named by its address —
find_app("mysite.ch")→read_files(...)→write_files(...)→publish_app(...), ormodify_app(app_id, "…")→check_task(task_id, wait=45). - Many pages (programmatic SEO) — BEST: generate a dynamic route + a data file with your own model and push them in one
write_files, thenpublish_app:write_files(app_id, [{ path: "src/pages/[service]/[city].astro", content: … }, { path: "src/data/locations.json", content: … }])→publish_app(app_id)Deterministic, scales to thousands, no stall, no credits. (Or ask Kleap's AI to do the same in onemodify_app— never loop one call per page.) - Don't babysit a 5-15 min build —
check_tasklong-polls (defaultwait=45), or pass awebhook_urltocreate_app/modify_appfor a fully hands-off flow. - A build failed —
TASK_TIMEOUT/STALE_TASK= transient, callretry_task; it returns a new task_id — poll that one.TASK_FAILED= read the message, retry once.
The verified-live guarantee
Most tools tell the agent "it's online" the moment a deploy is requested. Kleap reports a site as published only once the new version is provably serving at its live URL — otherwise it rolls back and reports "not confirmed live." Your agent can never hand a user a dead link.
If check_task reports failed (a transient generation stall), call retry_task
with that task_id to resume from where it stopped — it returns a new task_id
to poll, and partial work is kept. Or skip the AI entirely and write_files the
exact code yourself, then publish_app.
FAQ
Do I need an API key? No. The easiest path is the OAuth connector
(https://kleap.co/api/mcp) — you sign in with your browser and never copy a
key. An API key is only needed for the local CLI / direct REST use.
Is it safe? Yes. Whether you connect with OAuth or an API key, an agent can
only ever touch your own Kleap apps. OAuth tokens and kleap_live_sk_ keys are
scoped, sent only over HTTPS, and revocable anytime in https://kleap.co/settings/api-key.
Credentials from kleap auth login / kleap auth key are stored in
~/.kleap/config.json (permissions 0600); kleap auth logout deletes that
file. A stored OAuth login is bound to the origin that issued it — if
KLEAP_API_URL points anywhere else, the CLI refuses to send the token
(CREDENTIAL_ORIGIN_MISMATCH) so a malicious/typo'd endpoint can't capture it.
For custom endpoints (e.g. staging), use KLEAP_API_KEY or kleap auth key —
an explicit secret you provide is sent where you point it. Details in
SECURITY.md.
How much does it cost? Connecting is free. Builds and edits use Kleap credits
(get_credits reports your balance) — see pricing.
Which agents work? Any MCP client: Claude Desktop, Claude Code, Cursor, ChatGPT (hosted connector), and others.
Requirements & run
Node ≥ 18. Run it directly:
KLEAP_API_KEY=kleap_live_sk_... npx -y kleap-cli
# → [kleap-mcp] ready (stdio) → https://kleap.co. Tools: list_apps, ...
Override the API base with KLEAP_API_URL (default https://kleap.co).
Missing key → the server exits with a clear message. Note: a stored OAuth
login only works against the origin it was issued by — with a custom
KLEAP_API_URL, authenticate via KLEAP_API_KEY or kleap auth key instead
(see SECURITY.md).
Links
- Kleap: https://kleap.co · MCP & CLI page: https://kleap.co/mcp
- Issues & security: https://github.com/kleaphq/cli/issues
Maintained by the Kleap team. MIT © Kleap.
Kleap MCP 질문
Kleap MCP를 Claude Code에 추가하려면 어떻게 하나요?
터미널에서 claude mcp add --transport http cli https://kleap.co/api/mcp를 실행합니다. 모든 프로젝트에서 사용할 수 있게 하려면 --scope user를 추가합니다.
Kleap MCP를 Cursor에 추가하려면 어떻게 하나요?
~/.cursor/mcp.json를 열고 mcpServers 아래에 서버를 추가합니다. 위 설치 섹션에 표시된 Cursor 구성을 사용합니다.
Kleap MCP는 어떤 도구를 제공하나요?
3개 도구를 제공합니다. 예: find_app, generate_image, get_form_submissions.
AI agent에서 Kleap을 어떻게 사용하나요?
Claude Code와 같은 셸 기반 agent는 CLI를 사용하고, Claude Desktop, Cursor, ChatGPT와 같은 네이티브 클라이언트는 MCP server를 사용할 수 있습니다.
Kleap에서 호스팅과 데이터베이스를 제공하나요?
네, Kleap은 인프라의 일부로 호스팅, 데이터베이스, 인증 및 도메인을 포함합니다.
MCP server 인증은 어떻게 하나요?
호스팅된 커넥터 URL을 추가하여 OAuth로 연결하거나, 저장된 토큰 또는 API key가 있는 로컬 CLI를 사용할 수 있습니다.
agent의 권한을 제한할 수 있나요?
네, Read-only, Build 또는 Full access와 같은 특정 스코프를 가진 최소 권한 API key를 생성할 수 있습니다.