be.vibedeploy/vibedeploy
Official39 toolsDeploy and host AI-built websites on EU infrastructure, straight from your AI agent.
Deploy and host AI-built websites on EU infrastructure directly from AI agents.
Captured live from the server via tools/list.
get_account
Return the team's plan, its limits, and current usage. Use this BEFORE deploy_site or add_custom_domain to know whether a deploy would trip a plan limit, instead of provoking PLAN_LIMIT_EXCEEDED. Also returns the per-token MCP rate-limit ceiling (live remaining is in X-RateLimit-Remaining response header).
No parameters.
deploy_site
Publish a website to a live URL. Deploy a static site or single-page app you built (with AI or by hand) to a public {name}.vibedeploy.be address with automatic SSL, and optionally a custom domain. The fastest way to get a localhost project or an AI-generated site online. DESTRUCTIVE on existing sites: replaces every file on the named site with the supplied set. Files not in this call are deleted. For a new site, creates and provisions it. For an existing site, requires `confirm: "I-want-to-replace-all-files"` to proceed; without confirm the call is rejected before anything is touched. Use update_site (default mode:'patch') if you want to add or change individual files without removing the rest. Use dryRun:true to preview the diff. The site is published at {name}.vibedeploy.be. After deploy, call add_custom_domain to also serve at a user-owned hostname.
Parameters (4)
- namestringrequired
Site subdomain. Lowercase, 3-63 chars, alphanumeric + hyphens. Must not start or end with a hyphen.
- filesanyrequired
Either an array of {path, content, encoding?} entries OR a path->content map. Total payload <= 500 MB.
- confirmstring
Required when the named site already exists. Pass exactly "I-want-to-replace-all-files" to acknowledge that every existing file will be deleted and replaced with this new fileset. Omit on first deploy of a new site. If you want to add or change files without removing the others, use update_site instead — it defaults to patch mode.
- dryRunboolean
If true, validate input + introspect what would change but don't write or delete. Returns the same shape with `dryRun: true` and `deletedFiles` showing what *would* be removed. Strongly recommended before any deploy_site against an existing site.
update_site
Patch or replace files on an existing site. Defaults to patch mode: only the listed files change; everything else stays. Pass mode:'replace' to wipe-and-replace the whole site (the legacy behaviour, surfaced explicitly so it can't happen by accident). Use `delete: [paths]` in patch mode to remove specific files without wiping the rest. Use `dryRun: true` to preview the diff before committing. Errors if the site does not exist.
Parameters (6)
- namestring
Site name (preferred).
- siteIdstring
Site id (alternative to name).
- filesany
Files to write. Array form `[{path, content, encoding?}]` (preferred) supports binary via encoding:'base64'; map form `{path: content}` is utf8-only. <= 500 MB total. Optional when `delete` is provided in patch mode for delete-only deploys.
- modestring
patch (default): write only the listed files; everything else stays. replace: delete all existing files and write only the listed ones. Use replace only when you genuinely want to throw away the rest of the site.
- deletearray
Patch-mode only: site-relative paths to remove from the pod. Files not in this list are kept. Reported back in `deletedFiles` listing only entries that actually existed. Combine with `files` to atomically rename in one call (write new path + delete old path). Rejected in mode:'replace' since replace already removes anything not in `files`.
- dryRunboolean
If true, validate input + introspect what would change but don't write or delete. Returns the same shape with `dryRun: true` and `deletedFiles` showing what *would* be removed. Use this before any destructive call (replace mode, or patch with `delete`) to verify the diff.
list_sites
List sites for the team this connection belongs to.
Parameters (1)
- includeDeletedboolean
If true, include soft-deleted sites still in their plan-specific recovery window (status: 'deleted'). Defaults to false: deleted sites can't accept deploys, so an agent rarely wants them in a working list. Use true when you specifically need the recovery view.
get_site
Return name, url, plan, last deploy time, and recent deploy history.
Parameters (2)
- namestring
- siteIdstring
delete_site
Soft-delete a site. confirm=true is required. The site moves to status 'deleted' immediately (its hostname is freed and it stops serving), and is fully purged after the team's recovery window by a sweeper. Use this for the normal 'remove this from my dashboard' flow. The response field 'accepted' is true when the soft-delete is recorded; the response also includes 'purgesAt' so you can tell the user when recovery becomes impossible.
Parameters (3)
- namestring
- siteIdstring
- confirmbooleanrequired
Must be exactly true to actually delete the site.
get_site_analytics
Return a privacy-safe traffic summary for a site over the last `period` days (default 7): total page views, distinct-visitor count, top pages, daily counts, device/browser breakdowns, and Web Vitals averages. Never exposes raw visitor IPs or user-agents.
Parameters (3)
- namestring
Site name. Provide this or siteId.
- siteIdstring
Site id. Provide this or name.
- periodinteger
Number of days to aggregate over (1-90). Defaults to 7.
read_file
Return the bytes of one file currently served by the site. Use this to inspect or edit existing content (call read_file → modify → update_site mode:'patch') so a new chat can iterate on a site without re-uploading. Files larger than 5242880 bytes can't be read in one call. Use list of paths from get_site.filePaths to discover what's available.
Parameters (4)
- namestring
Site name (subdomain) or custom domain. Same lookup rules as get_site.
- siteIdstring
Alternative to name. One of name|siteId is required.
- pathstringrequired
Site-relative path of the file to read (e.g. 'index.html', 'assets/main.css'). No leading slash, no '..'.
- maxBytesinteger
Per-file size cap. Default 1048576, hard max 5242880. If the file is larger, the call fails with FILE_TOO_LARGE rather than returning truncated bytes — splitting source mid-token would corrupt downstream edits.
read_files
Batched version of read_file. Pass up to 50 paths; each is fetched independently with the same per-file rules as read_file. The whole batch is capped at 8388608 bytes total — once that's exhausted, remaining paths fail with BATCH_BUDGET_EXCEEDED so the agent can re-request them in another call.
Parameters (4)
- namestring
- siteIdstring
- pathsarrayrequired
Site-relative paths to read (1..50). Order is preserved in the response.
- maxBytesPerFileinteger
Per-file cap. Default 1048576, hard max 5242880.
list_file_hashes
Return SHA-256 + size for every file currently served. Use BEFORE re-deploying to skip files whose content hasn't changed: hash your local files, diff against this list, and only ship the differences via update_site mode:'patch' or begin_deploy → add_files. For SPAs with content-hashed bundle names this typically reduces a full-site redeploy to a handful of files.
Parameters (2)
- namestring
Site name or custom domain. Same lookup rules as get_site.
- siteIdstring
list_source_files
Return SHA-256 + size for every file in the site's editable source tree (the platform's copy of the pre-build code, not the served dist). Use BEFORE editing so you know which paths exist and which haven't changed since the last build. autoPromote:true will mirror the served dist into source for static-only sites whose source tree is empty (does nothing if the dist looks built).
Parameters (4)
- namestring
- siteIdstring
- autoPromoteboolean
If true and the site has no source tree yet but its dist looks static, copy dist → source on the fly. Default: false.
- forcePromoteboolean
If true, mirror dist → source EVEN when dist looks built (e.g. minified Vite output). Use when the original source isn't recoverable and you're willing to edit the build artefact directly. Sets manifest.noBuild=true automatically when no package.json is in the dist, so subsequent build_and_deploy short-circuits to a direct source→dist copy. forcePromote implies autoPromote.
read_source_file
Return the bytes of one source file (the platform's editable copy of the pre-build code), letting an AI in any future chat fetch and edit content without needing the original local files. Use list_source_files first to discover paths. For the served dist, use read_file instead.
Parameters (4)
- namestring
- siteIdstring
- pathstringrequired
Site-relative path inside the source tree, e.g. 'src/App.tsx'.
- maxBytesinteger
Per-file size cap. Default 1048576, hard max 5242880.
read_source_files
Batched read across the editable source tree (up to 50 paths). Each entry is independent: a missing/oversized file fails its own slot but doesn't abort the batch. Cumulative cap 8388608 bytes; remainder fails with BATCH_BUDGET_EXCEEDED.
Parameters (4)
- namestring
- siteIdstring
- pathsarrayrequired
- maxBytesPerFileinteger
write_source_files
Stage edits to a site's editable source tree (not the live dist). Use list_source_files first to discover what's there. The dist is unchanged until you re-deploy via update_site or run a Phase-2 build. If the site hasn't been opted into source storage yet, the call fails with SOURCE_STORAGE_NOT_ENABLED — an admin needs to run scripts/enable-source-storage.mjs <siteName> on the management host once.
Parameters (3)
- namestring
- siteIdstring
- filesarrayrequired
Files to write into the source tree. Same wire shape as add_files. Re-writing a path overwrites the previous source. Per-file cap 5 MB; per-call cap 50 MB; max 200 files per call.
delete_source_file
Remove one file from the site's editable source tree. The served dist is unchanged.
Parameters (3)
- namestring
- siteIdstring
- pathstringrequired
Source-relative path to delete.
build_and_deploy
Run a build inside a hardened one-shot pod against the site's editable source tree (write source first via write_source_files / list_source_files autoPromote), then atomically swap the build output into the live dist. Reuses the same build pod the GitProject git-deploy flow uses, so the same isolation guarantees apply: no SA token, no DB/Vault reach, NetworkPolicy-restricted egress. The first run writes the chosen buildCommand/outputDir into Site.sourceManifest; subsequent calls can omit those fields.
Parameters (6)
- namestring
- siteIdstring
- buildCommandstring
Override for the build script's `npm run build` step (e.g. 'npm run build:prod' or 'pnpm vite build'). If omitted, uses the manifest stored on the site, then falls back to 'npm run build'.
- outputDirstring
Override for which directory to ship as the new dist. If omitted, uses the manifest, then auto-detects (dist > build > out > public).
- rootPathstring
Subdirectory inside the source tree where package.json lives. Empty string = source root. Useful for monorepos.
- saveManifestboolean
If true (default), persists the merged manifest back onto the site so future builds default to these settings. Set false to do a one-off build without changing the saved manifest.
search_files
Search for a literal string or basic regex across all files in either the served dist or the editable source tree. Use this BEFORE batch-reading files to find candidates — saves the 'read 14 batches just to find which 3 files matter' round trip. Pass `target: "source"` to search the editable tree (requires Site.sourceStored=true).
Parameters (8)
- namestring
- siteIdstring
- patternstringrequired
Pattern to search for. Treated literal by default; pass regex:true to use as a basic regex (BusyBox grep BRE — no PCRE features).
- targetstring
Where to search. 'dist' (default) searches the served files. 'source' searches the editable source tree (requires Site.sourceStored=true).
- regexboolean
When true, the pattern is interpreted as a basic regular expression. Default: false (literal substring match).
- caseInsensitiveboolean
Default: false. When true, adds -i to grep.
- globstring
Filename glob filter, e.g. '*.js' or '*.{js,html}'. Applied via find before grep so we don't read non-matching files.
- maxMatchesinteger
Cap on returned matches. Default 200, hard max 1000. Truncation is reported via budgetExceeded.
deploy_from_url
Publish a website to a live URL from a public archive link. Point this at a tar(.gz) archive on github / gist / S3 and the server fetches and deploys it, no upload from your side. Server-side fetch of a tar(.gz) archive from a public HTTPS URL, then deploy its contents. Sidesteps the case where your code-execution sandbox can reach github / gist / S3 etc. but not mcp.vibedeploy.be's upload endpoint. Equivalent to begin_deploy → POST uploadUrl → commit_deploy in one call. Hostname allowlist enforced; see the archiveUrl description.
Parameters (3)
- namestringrequired
Site name to deploy to.
- archiveUrlstringrequired
Public HTTPS URL of a tar(.gz) archive. The server fetches it (max 100 MB, 60s timeout), parses the tarball, and deploys its files. Allowed hosts: github.com / raw.githubusercontent.com / gist.github.com / gist.githubusercontent.com / gitlab.com / bitbucket.org / codeberg.org / *.amazonaws.com / *.r2.cloudflarestorage.com / *.backblazeb2.com / *.workers.dev / *.pages.dev / transfer.sh / 0x0.st / mcp.vibedeploy.be. Use this when your runtime sandbox can reach the host above but can't reach mcp.vibedeploy.be's upload endpoint directly.
- modestringrequired
How the archive's files apply: replace wipes the live dist; patch merges them in.
rehost_images
Download the external images a site references (e.g. from the old site it was rebuilt from), store them on this VibeDeploy site under assets/img/, and rewrite the HTML <img> references to local paths so the site no longer depends on the original. Call this once AFTER deploying a site rebuilt with the Website Converter. Auto-detects the external image URLs from the site's own HTML; downloads are SSRF-guarded, size/count/time capped, and applied atomically (patch mode). Images already hosted on vibedeploy.be are skipped.
Parameters (1)
- namestringrequired
Site name (subdomain) whose external images should be downloaded and rehosted locally.
update_file_content
Apply one or more literal find/replace edits to a single file on the site, in one tool call. Designed for tiny edits where uploading the full file would be wasteful (one nav-button reference, one encoding fix, one env var bump). Each edit must specify how many matches it expects; mismatches abort the whole call with NO writes. For dist edits the change goes live immediately; for source edits you still need to call build_and_deploy.
Parameters (4)
- namestringrequired
Site name.
- pathstringrequired
File-relative path inside the chosen target tree.
- targetstring
Which tree to edit. 'dist' (default) edits the served file directly — visitors see the change immediately. 'source' edits the editable source tree; you'll need build_and_deploy (or it short-circuits via noBuild) to ship.
- editsarrayrequired
Ordered list of edits to apply atomically. Each is `{find, replace, count?}`. If any edit's match count doesn't equal its expected count, the whole call aborts with no writes.
apply_edits
Apply find/replace edits across MANY files in one tool call. Batch sibling of update_file_content. Per-file edit semantics identical (count: 1 default, -1 = all, positive int asserts exact count). Whole call is atomic across files: validation runs first, writes only proceed if every edit's count check passes.
Parameters (3)
- namestringrequired
- targetstring
Tree to edit, dist (default) or source. Same tree applies to every file in this call.
- filesarrayrequired
Files + edits to apply. Up to 25 files / 200 total edits per call. All-or-nothing: if any edit's match count differs from its expected count, NOTHING is written.
get_forms_config
Read the form-to-email relay config of a site, plus the resolved delivery mode, the active From address, and (for a custom sender domain) the DNS records to publish and their verification status. Submissions: POST JSON to the returned `endpoint` with Content-Type: application/json (UTF-8). Flat object of form fields (strings/numbers/booleans; checkbox groups may be arrays of strings, joined with ', '). Max 30 fields, 5000 chars/field, 20000 total. Response: {success:true,data:{ok:true}} or {success:false,error:{code,message}}. Rate limit: 10 submits per IP per 10 minutes. Include a hidden honeypot input (default "_gotcha") and leave it empty.
Parameters (1)
- siteNamestringrequired
The site whose forms-relay config to read.
set_forms_config
Configure the built-in form-to-email relay, fully self-service. Supports a custom From (via a verified sender domain or your own SMTP relay), an explicit Reply-To, and full email branding (subject template, field labels/order, logo, accent color, or a custom HTML body). Requires team role owner or admin. Pass config:null to switch the relay off. If you set a custom `sender` without an `smtpRelay`, the response returns the DNS records to publish; then call verify_forms_sender_domain. Submissions: POST JSON to the returned `endpoint` with Content-Type: application/json (UTF-8). Flat object of form fields (strings/numbers/booleans; checkbox groups may be arrays of strings, joined with ', '). Max 30 fields, 5000 chars/field, 20000 total. Response: {success:true,data:{ok:true}} or {success:false,error:{code,message}}. Rate limit: 10 submits per IP per 10 minutes. Include a hidden honeypot input (default "_gotcha") and leave it empty.
Parameters (2)
- siteNamestringrequired
The site to configure.
- configanyrequired
Full config to store (replaces existing). Pass null to disable and clear.
verify_forms_sender_domain
Check the DNS records for a site's custom sender domain (DKIM TXT + SPF include). Once the DKIM record is observed, the sender domain is marked verified and the relay sends from the custom From (DKIM-signed). Until then it falls back to the platform address. DNS can take a few minutes to propagate — re-run if it fails the first time. Not needed when the site uses a custom smtpRelay.
Parameters (1)
- siteNamestringrequired
The site whose custom sender domain to (re)check.
add_custom_domain
Start attaching a user-owned domain to an existing site. Returns a TXT record the user must add at their DNS provider. Idempotent: calling twice with the same (siteName, domain) returns the existing record instead of creating a duplicate. After the TXT is published (typically within minutes; up to 24h), call verify_custom_domain with the returned recordId. The site itself must already exist on a {name}.vibedeploy.be subdomain. Call deploy_site first if it doesn't.
Parameters (2)
- siteNamestringrequired
The vibedeploy.be site name to attach the domain to (e.g. 'tester').
- domainstringrequired
The user-owned hostname to attach (e.g. 'tester.subsite.site'). Must be a valid FQDN.
verify_custom_domain
Check the TXT record the user added at step 1 and, if found, attach the domain to the site's ingress. If verification fails, the most common cause is DNS propagation delay; wait a few minutes and try again. Once verified, the domain serves the site immediately (HTTPS issues automatically within ~30s).
Parameters (2)
- siteNamestringrequired
The site the domain was attached to.
- recordIdstringrequired
The recordId returned by add_custom_domain.
remove_custom_domain
Remove a custom domain from a site. The site itself is unaffected; only the custom hostname is detached. The {name}.vibedeploy.be subdomain keeps serving the site.
Parameters (3)
- siteNamestringrequired
The site to detach the domain from.
- domainstring
The custom domain to remove (e.g. 'tester.subsite.site'). Provide this OR recordId.
- recordIdstring
The recordId returned by add_custom_domain. Provide this OR domain.
list_custom_domains
Return all custom domains attached to a site. Each entry has a recordId you can pass to verify_custom_domain or remove_custom_domain.
Parameters (1)
- siteNamestringrequired
The site whose custom domains to list.
list_dns_records
Read the DNS records VibeDeploy tracks for a site (the records it created/manages on your behalf), oldest first. Returns each record's host, type, and value. Any team member, including viewers, can read DNS records. This tool is read-only and does NOT create, change, or delete any DNS record.
Parameters (2)
- namestring
Site name to look up DNS records for.
- siteIdstring
Site id to look up DNS records for. Provide name or siteId.
check_domain_availability
Check whether a domain can be registered and get an INDICATIVE retail price. IMPORTANT: this is a read-only lookup — it does NOT buy, register, reserve, or pay for any domain, and it changes nothing. The returned price is GROSS (includes 21% VAT) and indicative only. Set alternatives:true to also check the same name across other common TLDs (be, com, net, eu, nl, io, dev, app). Requires a valid team token but is not tied to a specific site.
Parameters (2)
- domainstringrequired
The domain to check, e.g. "example.com".
- alternativesboolean
When true, also check the same second-level name across a canonical TLD set (be, com, net, eu, nl, io, dev, app) and return each one's availability + indicative price.
begin_deploy
Opens a staging session for a multi-call deploy. Use when the site is too large to fit in a single deploy_site/update_site call. Pair with add_files (one or more times) OR a single tarball upload to the returned uploadUrl, then commit_deploy. Active session limit per token: 5. Default TTL: 1 hour.
Parameters (2)
- namestringrequired
Site name to deploy to. Must already exist; multi-call sessions don't auto-create sites — use deploy_site for that, or call this against an existing site.
- modestringrequired
How commit_deploy will apply the staged files. 'replace' wipes the live site and atomic-renames the staged set into place. 'patch' layers staged files on top of the live site (kept files = live + staged; deletes via commit_deploy's `delete` array).
add_files
Append files to an open staging session. Call as many times as needed; commit_deploy applies them all at once. Validates path/extension/encoding on every call so a bad file fails fast. Same 500 MB cap as single-call deploys, but cumulative across the session.
Parameters (2)
- deployIdstringrequired
Session id returned by begin_deploy.
- filesanyrequired
Files to append to the staging scratch dir. Same wire shape as deploy_site/update_site — array form supports binary via encoding:'base64'; map form is utf8-only. Re-adding a path overwrites the previously staged version. Cumulative cap across the whole session: 500 MB.
add_file_chunk
Stream a single file across multiple calls when its content exceeds the per-MCP-call output budget. Use add_files for normal-sized files (it batches multiple files per call); fall back to add_file_chunk only for files that don't fit on their own. Mark the first chunk with isFirst=true (truncates + mkdir) and the last with isLast=true (returns assembled size). Send chunks for the same path serially — concurrent chunks interleave and corrupt the file.
Parameters (7)
- deployIdstringrequired
Session id returned by begin_deploy.
- pathstringrequired
Target path inside the site root, e.g. 'portaal-admin.html'. Same path validation as add_files.
- contentstringrequired
This chunk's bytes. Either raw UTF-8 (default) or base64-encoded — set encoding accordingly. PRACTICAL CHUNK SIZE: bounded by your LLM client's tool-output token budget, NOT by VibeDeploy's server. Empirically ~80 KB of base64 (≈60 KB raw bytes) per chunk is the safe upper bound for current Claude / GPT clients before tool output gets truncated. The server itself accepts up to 100 MB per call (Caddy cap) and 500 MB cumulative across the session. If you keep hitting truncation: split into smaller chunks, OR sidestep tool-output entirely via `deploy_from_url` (publish a tarball to github raw / gist / S3 → 1 tool call) or POST to begin_deploy's uploadUrl from your code-execution sandbox if it can reach mcp.vibedeploy.be.
- encodingstring
utf8 (default), base64 (binary files), or gzip+base64 (compress this chunk's bytes locally first; server gunzips before append). Encoding is per-chunk — you can mix across chunks of the same file (e.g. gzip+base64 for big text chunks, base64 for binary tail).
- isFirstbooleanrequired
True on the FIRST chunk of a file. Truncates any existing scratch entry at this path and creates parent directories. Subsequent chunks must set false.
- isLastbooleanrequired
True on the FINAL chunk. Triggers an assembled-size stat and refreshes session file count. Mid-stream chunks set false.
- expectedByteOffsetinteger
Optional alignment check. The byte offset where THIS chunk should start in the assembled file: 0 for isFirst, otherwise the sum of all prior chunks' decoded bytes for this path. If the server's actual offset disagrees, the call fails with MISALIGNED_CHUNK before any bytes are written — catches the classic 'split base64 on a 4-char boundary that wasn't a byte boundary' bug. Omit to skip the check.
commit_deploy
Atomically apply a staging session's files to the live site. Runs preflight + secret/malware scan against the complete staged set; on failure the session stays open and can be re-attempted or aborted. For replace-mode against a site with existing files, requires confirm:"I-want-to-replace-all-files".
Parameters (4)
- deployIdstringrequired
Session id returned by begin_deploy.
- confirmstring
Required only for replace-mode commits against a site that already has files. Pass exactly "I-want-to-replace-all-files" to acknowledge that the live files will be deleted and replaced with the staged set.
- deletearray
Patch-mode only: site-relative paths to remove from the live site as part of this commit. Useful for renames (write new path via add_files, delete old path here).
- dryRunboolean
If true, preview what commit would do without touching the live site or scratch dir. Returns the diff (filesDeployed, deletedFiles) plus would-be confirmation gate / preflight outcomes. Skips the secret/malware scan to keep the preview fast — the real commit will still scan. Recommended before any replace-mode commit on a populated site.
abort_deploy
Discard a staging session and its scratch dir. Live site is untouched. Returns immediately; cleanup is best-effort and the sweeper will retry if it fails.
Parameters (1)
- deployIdstringrequired
Session id to abort.
list_deploys
Return staging sessions for the team this token belongs to. Defaults to currently-active ones (open + committing). Up to 50 rows.
Parameters (1)
- statusstring
Filter by status. Default lists 'open' and 'committing' (the actionable ones). Pass an explicit status to inspect history.
list_history
Return the most recent 50 deploy and snapshot history entries for a site, newest first. Includes the source (how it was triggered), an optional label, the associated Longhorn snapshot name (if any), the file count, and the number of secrets detected. Any team member can read history.
Parameters (2)
- namestring
- siteIdstring
list_snapshots
List the Longhorn volume snapshots for a site. Snapshots are point-in-time backups of the site's served files. Any team member can list snapshots. Returns NO_VOLUME if the site has no volume yet (it has never been deployed).
Parameters (2)
- namestring
- siteIdstring
create_snapshot
Take a point-in-time Longhorn snapshot of a site's served files. This is an additive backup — it does not change anything served. It records a manual-snapshot history entry and runs retention cleanup. Viewers cannot create snapshots. Returns NO_VOLUME if the site has no volume yet (it has never been deployed).
Parameters (3)
- namestring
- siteIdstring
- labelstring
Optional human-readable label for this backup.
README not available yet.
Install
claude_desktop_config.json
{
"mcpServers": {
"vibedeploy": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://mcp.vibedeploy.be/mcp"
]
}
}
}Desktop config is stdio-only; this bridges via mcp-remote. Native remote: Settings > Connectors.