vibekit-mcp 0.2.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/README.md +66 -15
  2. package/dist/index.js +381 -2
  3. package/package.json +8 -7
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # vibekit-mcp
2
2
 
3
- MCP (Model Context Protocol) server for [VibeKit](https://vibekit.bot)use AI coding tasks as native tools in Claude Desktop, Cursor, and other MCP-compatible clients.
3
+ MCP server for VibeKit — deploy apps, manage hosting, and chat with AI agents from any MCP client.
4
4
 
5
5
  ## Installation
6
6
 
@@ -14,7 +14,7 @@ npm install -g vibekit-mcp
14
14
  - Open [@the_vibe_kit_bot](https://t.me/the_vibe_kit_bot) in Telegram
15
15
  - Send `/apikey` to generate your key
16
16
 
17
- 2. Add to your Claude Desktop config (`~/Library/Application Support/Claude/claude_desktop_config.json` on macOS):
17
+ 2. Add to your MCP client config (e.g. Claude Desktop) (`~/Library/Application Support/Claude/claude_desktop_config.json` on macOS):
18
18
 
19
19
  ```json
20
20
  {
@@ -29,29 +29,80 @@ npm install -g vibekit-mcp
29
29
  }
30
30
  ```
31
31
 
32
- 3. Restart Claude Desktop
32
+ 3. Restart your MCP client
33
33
 
34
34
  ## Available Tools
35
35
 
36
+ ### Hosting
37
+
38
+ | Tool | Description |
39
+ |------|-------------|
40
+ | `vibekit_list_apps` | List all hosted apps |
41
+ | `vibekit_get_app` | Get details about a specific app |
42
+ | `vibekit_create_app` | Create new app from template |
43
+ | `vibekit_deploy` | Deploy GitHub repo to hosting |
44
+ | `vibekit_redeploy` | Redeploy app with latest code |
45
+ | `vibekit_app_logs` | Get application logs |
46
+ | `vibekit_restart_app` | Restart an app |
47
+ | `vibekit_stop_app` | Stop an app |
48
+ | `vibekit_start_app` | Start a stopped app |
49
+ | `vibekit_app_env` | Get app environment variables |
50
+ | `vibekit_set_env` | Set app environment variables |
51
+ | `vibekit_delete_app` | Delete an app permanently |
52
+
53
+ ### Agent
54
+
55
+ | Tool | Description |
56
+ |------|-------------|
57
+ | `vibekit_chat` | Chat with an app's AI agent |
58
+ | `vibekit_agent_status` | Get agent status |
59
+ | `vibekit_agent_history` | Get chat history with agent |
60
+
61
+ ### Database
62
+
63
+ | Tool | Description |
64
+ |------|-------------|
65
+ | `vibekit_enable_database` | Enable database for an app |
66
+ | `vibekit_database_status` | Get database status and connection info |
67
+
68
+ ### QA
69
+
70
+ | Tool | Description |
71
+ |------|-------------|
72
+ | `vibekit_run_qa` | Run automated QA tests |
73
+ | `vibekit_qa_status` | Get QA test results |
74
+
75
+ ### Tasks
76
+
36
77
  | Tool | Description |
37
78
  |------|-------------|
38
- | `vibekit_submit_task` | Submit a coding task. AI writes code, commits to GitHub, deploys to Vercel. |
39
- | `vibekit_get_task` | Get status/result of a task |
79
+ | `vibekit_submit_task` | Submit a coding task |
80
+ | `vibekit_get_task` | Get task status/result |
40
81
  | `vibekit_list_tasks` | List recent tasks |
41
- | `vibekit_wait_for_task` | Wait for a task to complete (polls until done) |
42
- | `vibekit_create_schedule` | Create a recurring scheduled task |
43
- | `vibekit_list_schedules` | List all scheduled tasks |
44
- | `vibekit_delete_schedule` | Delete a scheduled task |
82
+ | `vibekit_wait_for_task` | Wait for task completion |
83
+ | `vibekit_create_schedule` | Create recurring scheduled task |
84
+ | `vibekit_list_schedules` | List scheduled tasks |
85
+ | `vibekit_delete_schedule` | Delete scheduled task |
86
+
87
+ ### Account
88
+
89
+ | Tool | Description |
90
+ |------|-------------|
45
91
  | `vibekit_account` | Get account info (plan, credits, usage) |
92
+ | `vibekit_list_skills` | List implementation skills |
93
+ | `vibekit_get_skill` | Fetch specific skill content |
46
94
 
47
95
  ## Example Usage
48
96
 
49
- Once configured, you can ask Claude things like:
97
+ Once configured, you can use prompts like:
50
98
 
51
- - "Use VibeKit to build me a landing page for my startup"
52
- - "Submit a task to VibeKit: Add a contact form to my website"
53
- - "Check my VibeKit account balance"
54
- - "Create a weekly schedule to improve SEO on my repo"
99
+ - "Deploy my GitHub repo to VibeKit and create a new app"
100
+ - "Chat with the AI agent for my app about adding a contact form"
101
+ - "Show me the logs for my app and restart it if there are errors"
102
+ - "Enable a database for my app and check its status"
103
+ - "Run QA tests on my deployed app"
104
+ - "Check my VibeKit account balance and list my apps"
105
+ - "Create a weekly schedule to improve my app's performance"
55
106
 
56
107
  ## Environment Variables
57
108
 
@@ -65,4 +116,4 @@ Once configured, you can ask Claude things like:
65
116
  - [VibeKit Website](https://vibekit.bot)
66
117
  - [API Documentation](https://vibekit.bot/SKILL.md)
67
118
  - [Get API Key](https://t.me/the_vibe_kit_bot)
68
- - [GitHub](https://github.com/609NFT/vibekit)
119
+ - [GitHub](https://github.com/609NFT/vibekit)
package/dist/index.js CHANGED
@@ -38,9 +38,298 @@ async function apiRequest(method, path, body) {
38
38
  }
39
39
  // Tool definitions
40
40
  const tools = [
41
+ // Hosting & Apps
42
+ {
43
+ name: "vibekit_list_apps",
44
+ description: "List all hosted apps in your VibeKit account.",
45
+ inputSchema: {
46
+ type: "object",
47
+ properties: {},
48
+ },
49
+ },
50
+ {
51
+ name: "vibekit_get_app",
52
+ description: "Get details about a specific hosted app.",
53
+ inputSchema: {
54
+ type: "object",
55
+ properties: {
56
+ appId: {
57
+ type: "string",
58
+ description: "The app ID to get details for",
59
+ },
60
+ },
61
+ required: ["appId"],
62
+ },
63
+ },
64
+ {
65
+ name: "vibekit_create_app",
66
+ description: "Create a new hosted app from a template.",
67
+ inputSchema: {
68
+ type: "object",
69
+ properties: {
70
+ template: {
71
+ type: "string",
72
+ description: "Template to use (e.g., 'nextjs', 'react', 'express')",
73
+ },
74
+ subdomain: {
75
+ type: "string",
76
+ description: "Subdomain for the app (will be deployed to {subdomain}.vibekit.bot)",
77
+ },
78
+ },
79
+ required: ["template", "subdomain"],
80
+ },
81
+ },
82
+ {
83
+ name: "vibekit_deploy",
84
+ description: "Deploy a GitHub repo to VibeKit hosting.",
85
+ inputSchema: {
86
+ type: "object",
87
+ properties: {
88
+ repo: {
89
+ type: "string",
90
+ description: "GitHub repo in format 'owner/repo'",
91
+ },
92
+ subdomain: {
93
+ type: "string",
94
+ description: "Subdomain for the app (will be deployed to {subdomain}.vibekit.bot)",
95
+ },
96
+ },
97
+ required: ["repo", "subdomain"],
98
+ },
99
+ },
100
+ {
101
+ name: "vibekit_redeploy",
102
+ description: "Redeploy an existing hosted app to update it with latest code.",
103
+ inputSchema: {
104
+ type: "object",
105
+ properties: {
106
+ appId: {
107
+ type: "string",
108
+ description: "The app ID to redeploy",
109
+ },
110
+ },
111
+ required: ["appId"],
112
+ },
113
+ },
114
+ {
115
+ name: "vibekit_app_logs",
116
+ description: "Get application logs for debugging and monitoring.",
117
+ inputSchema: {
118
+ type: "object",
119
+ properties: {
120
+ appId: {
121
+ type: "string",
122
+ description: "The app ID to get logs for",
123
+ },
124
+ lines: {
125
+ type: "number",
126
+ description: "Number of log lines to retrieve (default: 100)",
127
+ },
128
+ },
129
+ required: ["appId"],
130
+ },
131
+ },
132
+ {
133
+ name: "vibekit_restart_app",
134
+ description: "Restart a hosted app.",
135
+ inputSchema: {
136
+ type: "object",
137
+ properties: {
138
+ appId: {
139
+ type: "string",
140
+ description: "The app ID to restart",
141
+ },
142
+ },
143
+ required: ["appId"],
144
+ },
145
+ },
146
+ {
147
+ name: "vibekit_stop_app",
148
+ description: "Stop a hosted app.",
149
+ inputSchema: {
150
+ type: "object",
151
+ properties: {
152
+ appId: {
153
+ type: "string",
154
+ description: "The app ID to stop",
155
+ },
156
+ },
157
+ required: ["appId"],
158
+ },
159
+ },
160
+ {
161
+ name: "vibekit_start_app",
162
+ description: "Start a stopped hosted app.",
163
+ inputSchema: {
164
+ type: "object",
165
+ properties: {
166
+ appId: {
167
+ type: "string",
168
+ description: "The app ID to start",
169
+ },
170
+ },
171
+ required: ["appId"],
172
+ },
173
+ },
174
+ {
175
+ name: "vibekit_app_env",
176
+ description: "Get environment variables for a hosted app.",
177
+ inputSchema: {
178
+ type: "object",
179
+ properties: {
180
+ appId: {
181
+ type: "string",
182
+ description: "The app ID to get environment variables for",
183
+ },
184
+ },
185
+ required: ["appId"],
186
+ },
187
+ },
188
+ {
189
+ name: "vibekit_set_env",
190
+ description: "Set environment variables for a hosted app.",
191
+ inputSchema: {
192
+ type: "object",
193
+ properties: {
194
+ appId: {
195
+ type: "string",
196
+ description: "The app ID to set environment variables for",
197
+ },
198
+ vars: {
199
+ type: "object",
200
+ description: "Object of key-value pairs to set as environment variables",
201
+ },
202
+ },
203
+ required: ["appId", "vars"],
204
+ },
205
+ },
206
+ {
207
+ name: "vibekit_delete_app",
208
+ description: "Delete a hosted app permanently.",
209
+ inputSchema: {
210
+ type: "object",
211
+ properties: {
212
+ appId: {
213
+ type: "string",
214
+ description: "The app ID to delete",
215
+ },
216
+ },
217
+ required: ["appId"],
218
+ },
219
+ },
220
+ // AI Agent
221
+ {
222
+ name: "vibekit_chat",
223
+ description: "Chat with an app's AI agent. The agent can read, write, and modify the app's code.",
224
+ inputSchema: {
225
+ type: "object",
226
+ properties: {
227
+ appId: {
228
+ type: "string",
229
+ description: "The app ID to chat with the agent for",
230
+ },
231
+ message: {
232
+ type: "string",
233
+ description: "Message to send to the AI agent",
234
+ },
235
+ },
236
+ required: ["appId", "message"],
237
+ },
238
+ },
239
+ {
240
+ name: "vibekit_agent_status",
241
+ description: "Get the status of an app's AI agent.",
242
+ inputSchema: {
243
+ type: "object",
244
+ properties: {
245
+ appId: {
246
+ type: "string",
247
+ description: "The app ID to get agent status for",
248
+ },
249
+ },
250
+ required: ["appId"],
251
+ },
252
+ },
253
+ {
254
+ name: "vibekit_agent_history",
255
+ description: "Get chat history with an app's AI agent.",
256
+ inputSchema: {
257
+ type: "object",
258
+ properties: {
259
+ appId: {
260
+ type: "string",
261
+ description: "The app ID to get agent history for",
262
+ },
263
+ limit: {
264
+ type: "number",
265
+ description: "Maximum number of messages to return (default: 20)",
266
+ },
267
+ },
268
+ required: ["appId"],
269
+ },
270
+ },
271
+ // Database
272
+ {
273
+ name: "vibekit_enable_database",
274
+ description: "Enable database for a hosted app.",
275
+ inputSchema: {
276
+ type: "object",
277
+ properties: {
278
+ appId: {
279
+ type: "string",
280
+ description: "The app ID to enable database for",
281
+ },
282
+ },
283
+ required: ["appId"],
284
+ },
285
+ },
286
+ {
287
+ name: "vibekit_database_status",
288
+ description: "Get database status and connection info for an app.",
289
+ inputSchema: {
290
+ type: "object",
291
+ properties: {
292
+ appId: {
293
+ type: "string",
294
+ description: "The app ID to get database status for",
295
+ },
296
+ },
297
+ required: ["appId"],
298
+ },
299
+ },
300
+ // QA
301
+ {
302
+ name: "vibekit_run_qa",
303
+ description: "Run automated QA tests on a hosted app.",
304
+ inputSchema: {
305
+ type: "object",
306
+ properties: {
307
+ appId: {
308
+ type: "string",
309
+ description: "The app ID to run QA tests for",
310
+ },
311
+ },
312
+ required: ["appId"],
313
+ },
314
+ },
315
+ {
316
+ name: "vibekit_qa_status",
317
+ description: "Get QA test results and status for an app.",
318
+ inputSchema: {
319
+ type: "object",
320
+ properties: {
321
+ appId: {
322
+ type: "string",
323
+ description: "The app ID to get QA status for",
324
+ },
325
+ },
326
+ required: ["appId"],
327
+ },
328
+ },
329
+ // Tasks (existing)
41
330
  {
42
331
  name: "vibekit_submit_task",
43
- description: "Submit a coding task to VibeKit. The AI will write code, commit to GitHub, and deploy to Vercel. Returns a task ID to poll for results.",
332
+ description: "Submit a coding task to VibeKit. The AI will write code, commit to GitHub, and deploy to {subdomain}.vibekit.bot. Returns a task ID to poll for results.",
44
333
  inputSchema: {
45
334
  type: "object",
46
335
  properties: {
@@ -166,6 +455,7 @@ const tools = [
166
455
  required: ["scheduleId"],
167
456
  },
168
457
  },
458
+ // Account
169
459
  {
170
460
  name: "vibekit_account",
171
461
  description: "Get VibeKit account info including plan, credits balance, and usage.",
@@ -206,6 +496,94 @@ const tools = [
206
496
  async function handleTool(name, args) {
207
497
  let result;
208
498
  switch (name) {
499
+ // Hosting & Apps
500
+ case "vibekit_list_apps":
501
+ result = await apiRequest("GET", "/hosting/apps");
502
+ break;
503
+ case "vibekit_get_app":
504
+ result = await apiRequest("GET", `/hosting/app/${args.appId}`);
505
+ break;
506
+ case "vibekit_create_app":
507
+ result = await apiRequest("POST", "/hosting/apps", {
508
+ template: args.template,
509
+ subdomain: args.subdomain,
510
+ });
511
+ break;
512
+ case "vibekit_deploy":
513
+ result = await apiRequest("POST", "/hosting/deploy", {
514
+ repo: args.repo,
515
+ subdomain: args.subdomain,
516
+ });
517
+ break;
518
+ case "vibekit_redeploy":
519
+ result = await apiRequest("POST", `/hosting/app/${args.appId}/redeploy`);
520
+ break;
521
+ case "vibekit_app_logs": {
522
+ let path = `/hosting/app/${args.appId}/logs`;
523
+ if (args.lines) {
524
+ path += `?lines=${args.lines}`;
525
+ }
526
+ else {
527
+ path += "?lines=100";
528
+ }
529
+ result = await apiRequest("GET", path);
530
+ break;
531
+ }
532
+ case "vibekit_restart_app":
533
+ result = await apiRequest("POST", `/hosting/app/${args.appId}/restart`);
534
+ break;
535
+ case "vibekit_stop_app":
536
+ result = await apiRequest("POST", `/hosting/app/${args.appId}/stop`);
537
+ break;
538
+ case "vibekit_start_app":
539
+ result = await apiRequest("POST", `/hosting/app/${args.appId}/start`);
540
+ break;
541
+ case "vibekit_app_env":
542
+ result = await apiRequest("GET", `/hosting/app/${args.appId}/env`);
543
+ break;
544
+ case "vibekit_set_env":
545
+ result = await apiRequest("PUT", `/hosting/app/${args.appId}/env`, {
546
+ vars: args.vars,
547
+ });
548
+ break;
549
+ case "vibekit_delete_app":
550
+ result = await apiRequest("DELETE", `/hosting/app/${args.appId}`);
551
+ break;
552
+ // AI Agent
553
+ case "vibekit_chat":
554
+ result = await apiRequest("POST", `/hosting/app/${args.appId}/agent`, {
555
+ message: args.message,
556
+ });
557
+ break;
558
+ case "vibekit_agent_status":
559
+ result = await apiRequest("GET", `/hosting/app/${args.appId}/agent/status`);
560
+ break;
561
+ case "vibekit_agent_history": {
562
+ let path = `/hosting/app/${args.appId}/agent/history`;
563
+ if (args.limit) {
564
+ path += `?limit=${args.limit}`;
565
+ }
566
+ else {
567
+ path += "?limit=20";
568
+ }
569
+ result = await apiRequest("GET", path);
570
+ break;
571
+ }
572
+ // Database
573
+ case "vibekit_enable_database":
574
+ result = await apiRequest("POST", `/hosting/app/${args.appId}/database`);
575
+ break;
576
+ case "vibekit_database_status":
577
+ result = await apiRequest("GET", `/hosting/app/${args.appId}/database`);
578
+ break;
579
+ // QA
580
+ case "vibekit_run_qa":
581
+ result = await apiRequest("POST", `/hosting/app/${args.appId}/qa`);
582
+ break;
583
+ case "vibekit_qa_status":
584
+ result = await apiRequest("GET", `/hosting/app/${args.appId}/qa`);
585
+ break;
586
+ // Tasks (existing)
209
587
  case "vibekit_submit_task":
210
588
  result = await apiRequest("POST", "/task", {
211
589
  task: args.task,
@@ -263,6 +641,7 @@ async function handleTool(name, args) {
263
641
  case "vibekit_delete_schedule":
264
642
  result = await apiRequest("DELETE", `/schedule/${args.scheduleId}`);
265
643
  break;
644
+ // Account
266
645
  case "vibekit_account":
267
646
  result = await apiRequest("GET", "/account");
268
647
  break;
@@ -327,7 +706,7 @@ async function handleTool(name, args) {
327
706
  // Main server setup
328
707
  const server = new index_js_1.Server({
329
708
  name: "vibekit-mcp",
330
- version: "0.1.0",
709
+ version: "0.4.0",
331
710
  }, {
332
711
  capabilities: {
333
712
  tools: {},
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "vibekit-mcp",
3
- "version": "0.2.0",
4
- "description": "MCP server for VibeKit — use AI coding tasks as native tools in Claude Desktop, Cursor, etc.",
3
+ "version": "0.4.0",
4
+ "description": "MCP server for VibeKit — deploy apps, manage hosting, chat with AI agents, and run coding tasks from Claude Desktop, Cursor, and other MCP clients.",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
7
7
  "vibekit-mcp": "./dist/index.js"
@@ -17,11 +17,12 @@
17
17
  "keywords": [
18
18
  "mcp",
19
19
  "vibekit",
20
- "claude",
21
- "ai",
20
+ "deploy",
21
+ "hosting",
22
+ "ai-agent",
22
23
  "coding",
23
- "tools",
24
- "anthropic"
24
+ "cursor",
25
+ "claude-desktop"
25
26
  ],
26
27
  "author": "609.sol",
27
28
  "license": "MIT",
@@ -38,4 +39,4 @@
38
39
  "@types/node": "^20.0.0",
39
40
  "typescript": "^5.0.0"
40
41
  }
41
- }
42
+ }