Build, deploy, and operate hosted web apps on VibeKit (vibekit.bot) from any MCP client.
io.github.VibeKit-Bot/vibekit-mcp (MCP Server)
This MCP server provides an interface to build, deploy, and operate hosted web apps on VibeKit (vibekit.bot) from any MCP client. It supports deploying apps, managing hosting, and chatting with AI agents through the Model Context Protocol.
🛠️ Key Features
Build, deploy, and operate hosted web apps on VibeKit (vibekit.bot)
Deploy apps and manage hosting
Chat with AI agents from any MCP client
Exposes 36 tools via MCP
🚀 Use Cases
Remote MCP access for clients that accept a remote MCP URL (e.g., claude.ai web connectors, ChatGPT)
Building and managing VibeKit-hosted applications from an MCP client
⚡ Developer Benefits
No local install needed when using the hosted remote server
Standard MCP integration for model-context access across supported clients
⚠️ Limitations
Package is for VibeKit cloud/API access
Does not connect a local Claude Code instance to Telegram
For local-machine remote control, use vibekit-agent
Create a new hosted app from a starter template and deploy it live at <subdomain>.vibekit.bot. Call vibekit_list_templates first to pick a valid template. To deploy existing code from a GitHub repo instead, use vibekit_deploy.
Parameters2
template
string
required
Template id from vibekit_list_templates (e.g. 'landing', 'dashboard', 'blog', 'saas', 'crud-api')
subdomain
string
required
Desired subdomain — the app goes live at <subdomain>.vibekit.bot. Lowercase letters, numbers, and hyphens.
Raw schema
{
"type": "object",
"properties": {
"template": {
"type": "string",
"description": "Template id from vibekit_list_templates (e.g. 'landing', 'dashboard', 'blog', 'saas', 'crud-api')"
},
"subdomain": {
"type": "string",
"description": "Desired subdomain — the app goes live at <subdomain>.vibekit.bot. Lowercase letters, numbers, and hyphens."
}
},
"required": [
"template",
"subdomain"
]
}
vibekit_list_templates
List the starter templates available to vibekit_create_app (e.g. landing, dashboard, blog, saas, crud-api). Call this before vibekit_create_app to choose a valid template.
Parameters
No parameters.
Raw schema
{
"type": "object",
"properties": {}
}
vibekit_deploy
Deploy a GitHub repo to VibeKit hosting, live at <subdomain>.vibekit.bot (Fargate container behind nginx, SSL automatic). Use when the code already lives in a GitHub repo; for a starter template instead use vibekit_create_app.
Parameters2
repo
string
required
GitHub repo as 'owner/repo' (e.g. 'your-username/my-app')
subdomain
string
required
Desired subdomain — the app goes live at <subdomain>.vibekit.bot. Lowercase letters, numbers, and hyphens.
Raw schema
{
"type": "object",
"properties": {
"repo": {
"type": "string",
"description": "GitHub repo as 'owner/repo' (e.g. 'your-username/my-app')"
},
"subdomain": {
"type": "string",
"description": "Desired subdomain — the app goes live at <subdomain>.vibekit.bot. Lowercase letters, numbers, and hyphens."
}
},
"required": [
"repo",
"subdomain"
]
}
vibekit_redeploy
Redeploy an existing app to pull and ship the latest code. Use after pushing changes to the app's GitHub repo.
Stop a hosted app's container. The app stays in your account and can be brought back with vibekit_start_app. Use to take an app offline without deleting it.
Set or update environment variables for an app (merges with existing). The app must be restarted or redeployed for changes to take effect.
Parameters2
appId
string
required
App ID (from vibekit_list_apps)
vars
object
required
Key-value pairs to set as environment variables, e.g. { "API_KEY": "...", "NODE_ENV": "production" }
Raw schema
{
"type": "object",
"properties": {
"appId": {
"type": "string",
"description": "App ID (from vibekit_list_apps)"
},
"vars": {
"type": "object",
"description": "Key-value pairs to set as environment variables, e.g. { \"API_KEY\": \"...\", \"NODE_ENV\": \"production\" }"
}
},
"required": [
"appId",
"vars"
]
}
vibekit_delete_app
Permanently delete a hosted app — stops the container and removes its workspace, database, env vars, and subdomain. Irreversible (the GitHub repo is NOT touched). Confirm with the user before calling.
Send a message to an app's built-in AI coding agent, which reads, writes, and modifies the app's code and redeploys it. Use for 'build/make a change to my app' requests. If the agent finishes quickly you get its reply directly. Otherwise you get status:'working' — do NOT resend; instead give the user LIVE progress: poll vibekit_agent_status every few seconds and relay the current step from activity.status ('editing the homepage…', 'deploying…') until activity.done, then read vibekit_agent_history for the final reply.
Parameters2
appId
string
required
App ID (from vibekit_list_apps)
message
string
required
What you want the agent to do or change — be specific about features, design, and behavior.
Raw schema
{
"type": "object",
"properties": {
"appId": {
"type": "string",
"description": "App ID (from vibekit_list_apps)"
},
"message": {
"type": "string",
"description": "What you want the agent to do or change — be specific about features, design, and behavior."
}
},
"required": [
"appId",
"message"
]
}
vibekit_agent_status
Check whether an app's AI agent is idle or working, and get its LIVE progress. Returns activity.status = the current human-readable build step (e.g. 'editing index.html', 'deploying'), activity.steps = the steps so far, and activity.done = whether the turn finished. Poll this every few seconds while a build is running and relay activity.status to the user so they see progress. Once activity.done is true the response also includes liveCheck = a server-side fetch of the deployed page ({ url, ok, httpStatus, title }); use it to confirm the app is live and renders — do NOT curl/fetch the URL yourself, your sandbox may block it.
Get the recent chat history between the user and an app's AI agent.
Parameters2
appId
string
required
App ID (from vibekit_list_apps)
limit
number
optional
Maximum number of messages to return (default 20)
Raw schema
{
"type": "object",
"properties": {
"appId": {
"type": "string",
"description": "App ID (from vibekit_list_apps)"
},
"limit": {
"type": "number",
"description": "Maximum number of messages to return (default 20)"
}
},
"required": [
"appId"
]
}
vibekit_enable_database
Provision a Postgres database for an app (idempotent — safe if already enabled). Required before the vibekit_db_* tools work. Note: free-tier apps need the $3/mo Database add-on.
Run a read-only SQL query against an app's Postgres database and return up to 200 result rows. SELECT only — writes and DDL (INSERT/UPDATE/DELETE/ALTER/DROP/…) are rejected server-side; use vibekit_chat or vibekit_submit_task to have the agent make data or schema changes. Call vibekit_db_schema first to learn the tables. SQL string, max 5000 chars.
Parameters2
appId
string
required
App ID (from vibekit_list_apps)
sql
string
required
SQL to execute (max 5000 chars). Reads and writes both allowed.
Raw schema
{
"type": "object",
"properties": {
"appId": {
"type": "string",
"description": "App ID (from vibekit_list_apps)"
},
"sql": {
"type": "string",
"description": "SQL to execute (max 5000 chars). Reads and writes both allowed."
}
},
"required": [
"appId",
"sql"
]
}
vibekit_db_table
Browse rows of one table with pagination and optional sorting — a quick read-only alternative to hand-writing a SELECT.
Parameters4
appId
string
required
App ID (from vibekit_list_apps)
table
string
required
Table name (see vibekit_db_schema)
limit
number
optional
Max rows to return (default 50, max 200)
offset
number
optional
Row offset for pagination (default 0)
Raw schema
{
"type": "object",
"properties": {
"appId": {
"type": "string",
"description": "App ID (from vibekit_list_apps)"
},
"table": {
"type": "string",
"description": "Table name (see vibekit_db_schema)"
},
"limit": {
"type": "number",
"description": "Max rows to return (default 50, max 200)"
},
"offset": {
"type": "number",
"description": "Row offset for pagination (default 0)"
}
},
"required": [
"appId",
"table"
]
}
vibekit_list_deploys
List an app's recent deploys, newest first, with status and commit info. Find a deployId here to pass to vibekit_rollback_deploy.
Roll an app back to a previous deploy (get the deployId from vibekit_list_deploys). The container restarts on the rolled-back build; reversible by rolling forward again.
Parameters2
appId
string
required
App ID (from vibekit_list_apps)
deployId
string
required
Deploy ID to roll back to (from vibekit_list_deploys)
Raw schema
{
"type": "object",
"properties": {
"appId": {
"type": "string",
"description": "App ID (from vibekit_list_apps)"
},
"deployId": {
"type": "string",
"description": "Deploy ID to roll back to (from vibekit_list_deploys)"
}
},
"required": [
"appId",
"deployId"
]
}
vibekit_run_qa
Kick off an automated QA run (headless-browser checks) against a hosted app. Poll vibekit_qa_status for results.
Submit an autonomous coding task. The AI writes the code, commits to GitHub, and (by default) deploys to <subdomain>.vibekit.bot. Returns a taskId — poll vibekit_get_task or block with vibekit_wait_for_task. Use for 'build X' or 'change X' work against a repo.
Parameters5
task
string
required
What you want built or changed. Be specific about features, design, and behavior.
repo
string
optional
GitHub repo as 'owner/repo'. Optional — uses the user's current repo if omitted.
branch
string
optional
Git branch to work on (default 'main')
deploy
boolean
optional
Auto-deploy to <subdomain>.vibekit.bot when done (default true)
callbackUrl
string
optional
Optional webhook URL to receive a task-completion notification.
Raw schema
{
"type": "object",
"properties": {
"task": {
"type": "string",
"description": "What you want built or changed. Be specific about features, design, and behavior."
},
"repo": {
"type": "string",
"description": "GitHub repo as 'owner/repo'. Optional — uses the user's current repo if omitted."
},
"branch": {
"type": "string",
"description": "Git branch to work on (default 'main')"
},
"deploy": {
"type": "boolean",
"description": "Auto-deploy to <subdomain>.vibekit.bot when done (default true)"
},
"callbackUrl": {
"type": "string",
"description": "Optional webhook URL to receive a task-completion notification."
}
},
"required": [
"task"
]
}
vibekit_get_task
Get the status and result of a task submitted via vibekit_submit_task.
Parameters1
taskId
string
required
Task ID returned from vibekit_submit_task
Raw schema
{
"type": "object",
"properties": {
"taskId": {
"type": "string",
"description": "Task ID returned from vibekit_submit_task"
}
},
"required": [
"taskId"
]
}
vibekit_list_tasks
List recent coding tasks, optionally filtered by status.
Parameters2
limit
number
optional
Max number of tasks to return (default 10)
status
string
optional
Filter by task status
Raw schema
{
"type": "object",
"properties": {
"limit": {
"type": "number",
"description": "Max number of tasks to return (default 10)"
},
"status": {
"type": "string",
"enum": [
"pending",
"running",
"completed",
"failed"
],
"description": "Filter by task status"
}
}
}
vibekit_wait_for_task
Block until a submitted task finishes (or the timeout), polling every 5 seconds, then return its result. Use right after vibekit_submit_task when you want the final result inline.
Parameters2
taskId
string
required
Task ID to wait for (from vibekit_submit_task)
timeoutSeconds
number
optional
Max seconds to wait (default 300; the remote connector caps this at 120)
Raw schema
{
"type": "object",
"properties": {
"taskId": {
"type": "string",
"description": "Task ID to wait for (from vibekit_submit_task)"
},
"timeoutSeconds": {
"type": "number",
"description": "Max seconds to wait (default 300; the remote connector caps this at 120)"
}
},
"required": [
"taskId"
]
}
vibekit_cancel_task
Cancel a running task by taskId. No-op if it has already finished.
Create a recurring coding task that the AI runs automatically on a cron schedule (e.g. a weekly SEO pass). Use for 'every Monday, do X to my repo' requests.
Parameters4
task
string
required
What to do on each run, e.g. 'Improve SEO and page speed'
repo
string
required
GitHub repo as 'owner/repo'
cron
string
required
Cron expression, e.g. '0 9 * * 1' for every Monday at 9am UTC
name
string
optional
Friendly name for the schedule (optional)
Raw schema
{
"type": "object",
"properties": {
"task": {
"type": "string",
"description": "What to do on each run, e.g. 'Improve SEO and page speed'"
},
"repo": {
"type": "string",
"description": "GitHub repo as 'owner/repo'"
},
"cron": {
"type": "string",
"description": "Cron expression, e.g. '0 9 * * 1' for every Monday at 9am UTC"
},
"name": {
"type": "string",
"description": "Friendly name for the schedule (optional)"
}
},
"required": [
"task",
"repo",
"cron"
]
}
vibekit_list_schedules
List all of the account's scheduled recurring tasks.
Parameters
No parameters.
Raw schema
{
"type": "object",
"properties": {}
}
vibekit_delete_schedule
Delete a scheduled recurring task by scheduleId. Confirm with the user first.
Parameters1
scheduleId
string
required
Schedule ID to delete (from vibekit_list_schedules)
Get VibeKit account info: plan, credit balance, and usage.
Parameters
No parameters.
Raw schema
{
"type": "object",
"properties": {}
}
vibekit_list_skills
List available implementation skills (IDs, names, descriptions, tags) from the VibeKit skills registry. Discover skills here before fetching one with vibekit_get_skill.
Parameters1
tag
string
optional
Filter skills by tag (e.g. 'react', 'database', 'security')
Fetch the full content of a specific skill — implementation patterns, code examples, and best practices for a domain. Fetch on-demand when you need guidance on a specific topic.
Parameters1
id
string
required
Skill ID from vibekit_list_skills (e.g. 'nextjs', 'trpc', 'auth')
MCP server for VibeKit, deploy apps, manage hosting, and chat with AI agents from any MCP client.
This package is for VibeKit cloud/API access. It does not connect your local Claude Code instance to Telegram. For local-machine remote control, use vibekit-agent.
Use it remotely (no install)
VibeKit also runs as a hosted remote server, so clients that accept a remote MCP URL (claude.ai web connectors, ChatGPT, etc.) need no install:
Paste that URL into your client's "custom connector" / "remote MCP server" field. Clients that let you set headers can instead send Authorization: Bearer vk_your_api_key_here and use the bare https://mcp.vibekit.bot/mcp. See Get an API key below.
Prefer a local stdio install (e.g. Claude Desktop)? Use the steps below.
What this MCP server does with your data, concretely:
Every tool call is forwarded to the VibeKit API (https://vibekit.bot/api/v1)
over HTTPS, authenticated with the API key you configure. Tool inputs and
outputs are processed by VibeKit to run your apps and agents, under the
privacy policy above.
The server itself keeps no state: nothing is written to disk, no
analytics or telemetry are collected by this package, and your API key is
read from configuration (VIBEKIT_API_KEY / the extension's key field) and
sent only to vibekit.bot.
Data retention, third-party sharing, and deletion are governed by the
policy above. Questions: support@vibekit.bot.