vibekit-mcp 0.5.5 → 0.6.1
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.
- package/LICENSE +21 -0
- package/dist/index.js +28 -462
- package/package.json +4 -3
- package/tools.json +363 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 VibeKit
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/dist/index.js
CHANGED
|
@@ -10,13 +10,16 @@ const SKILLS_REGISTRY = "https://raw.githubusercontent.com/vibekit-apps/skills-r
|
|
|
10
10
|
// Skills cache (TTL: 5 minutes)
|
|
11
11
|
let skillsCache = null;
|
|
12
12
|
const CACHE_TTL = 5 * 60 * 1000;
|
|
13
|
-
if (!API_KEY) {
|
|
14
|
-
console.error("Error: VIBEKIT_API_KEY environment variable is required");
|
|
15
|
-
console.error("Get one at https://t.me/the_vibe_kit_bot with /apikey command");
|
|
16
|
-
process.exit(1);
|
|
17
|
-
}
|
|
18
13
|
// API helper
|
|
19
14
|
async function apiRequest(method, path, body) {
|
|
15
|
+
// The server boots and lists its tools without a key (so MCP introspection
|
|
16
|
+
// works); a key is only required to actually call the VibeKit API.
|
|
17
|
+
if (!API_KEY) {
|
|
18
|
+
return {
|
|
19
|
+
ok: false,
|
|
20
|
+
error: "VIBEKIT_API_KEY is required. Get one at https://t.me/the_vibe_kit_bot with the /apikey command.",
|
|
21
|
+
};
|
|
22
|
+
}
|
|
20
23
|
try {
|
|
21
24
|
const res = await fetch(`${API_BASE}${path}`, {
|
|
22
25
|
method,
|
|
@@ -36,462 +39,19 @@ async function apiRequest(method, path, body) {
|
|
|
36
39
|
return { ok: false, error: err instanceof Error ? err.message : "Unknown error" };
|
|
37
40
|
}
|
|
38
41
|
}
|
|
39
|
-
// Tool definitions
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
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)
|
|
330
|
-
{
|
|
331
|
-
name: "vibekit_submit_task",
|
|
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.",
|
|
333
|
-
inputSchema: {
|
|
334
|
-
type: "object",
|
|
335
|
-
properties: {
|
|
336
|
-
task: {
|
|
337
|
-
type: "string",
|
|
338
|
-
description: "What you want built or changed. Be specific about features, design, and behavior.",
|
|
339
|
-
},
|
|
340
|
-
repo: {
|
|
341
|
-
type: "string",
|
|
342
|
-
description: "GitHub repo in format 'owner/repo'. Optional — will use user's current repo if not specified.",
|
|
343
|
-
},
|
|
344
|
-
branch: {
|
|
345
|
-
type: "string",
|
|
346
|
-
description: "Git branch to work on. Default: main",
|
|
347
|
-
},
|
|
348
|
-
deploy: {
|
|
349
|
-
type: "boolean",
|
|
350
|
-
description: "Auto-deploy to Vercel when done. Default: true",
|
|
351
|
-
},
|
|
352
|
-
callbackUrl: {
|
|
353
|
-
type: "string",
|
|
354
|
-
description: "Webhook URL to receive task completion notification.",
|
|
355
|
-
},
|
|
356
|
-
},
|
|
357
|
-
required: ["task"],
|
|
358
|
-
},
|
|
359
|
-
},
|
|
360
|
-
{
|
|
361
|
-
name: "vibekit_get_task",
|
|
362
|
-
description: "Get the status and result of a previously submitted task.",
|
|
363
|
-
inputSchema: {
|
|
364
|
-
type: "object",
|
|
365
|
-
properties: {
|
|
366
|
-
taskId: {
|
|
367
|
-
type: "string",
|
|
368
|
-
description: "The task ID returned from vibekit_submit_task",
|
|
369
|
-
},
|
|
370
|
-
},
|
|
371
|
-
required: ["taskId"],
|
|
372
|
-
},
|
|
373
|
-
},
|
|
374
|
-
{
|
|
375
|
-
name: "vibekit_list_tasks",
|
|
376
|
-
description: "List recent tasks submitted to VibeKit.",
|
|
377
|
-
inputSchema: {
|
|
378
|
-
type: "object",
|
|
379
|
-
properties: {
|
|
380
|
-
limit: {
|
|
381
|
-
type: "number",
|
|
382
|
-
description: "Max number of tasks to return. Default: 10",
|
|
383
|
-
},
|
|
384
|
-
status: {
|
|
385
|
-
type: "string",
|
|
386
|
-
enum: ["pending", "running", "completed", "failed"],
|
|
387
|
-
description: "Filter by status",
|
|
388
|
-
},
|
|
389
|
-
},
|
|
390
|
-
},
|
|
391
|
-
},
|
|
392
|
-
{
|
|
393
|
-
name: "vibekit_wait_for_task",
|
|
394
|
-
description: "Wait for a task to complete and return the result. Polls every 5 seconds up to the timeout.",
|
|
395
|
-
inputSchema: {
|
|
396
|
-
type: "object",
|
|
397
|
-
properties: {
|
|
398
|
-
taskId: {
|
|
399
|
-
type: "string",
|
|
400
|
-
description: "The task ID to wait for",
|
|
401
|
-
},
|
|
402
|
-
timeoutSeconds: {
|
|
403
|
-
type: "number",
|
|
404
|
-
description: "Max seconds to wait. Default: 300 (5 minutes)",
|
|
405
|
-
},
|
|
406
|
-
},
|
|
407
|
-
required: ["taskId"],
|
|
408
|
-
},
|
|
409
|
-
},
|
|
410
|
-
{
|
|
411
|
-
name: "vibekit_create_schedule",
|
|
412
|
-
description: "Create a scheduled recurring task. The AI will run this task automatically on the specified schedule.",
|
|
413
|
-
inputSchema: {
|
|
414
|
-
type: "object",
|
|
415
|
-
properties: {
|
|
416
|
-
task: {
|
|
417
|
-
type: "string",
|
|
418
|
-
description: "What to do on each run. e.g., 'Improve SEO and page speed'",
|
|
419
|
-
},
|
|
420
|
-
repo: {
|
|
421
|
-
type: "string",
|
|
422
|
-
description: "GitHub repo in format 'owner/repo'",
|
|
423
|
-
},
|
|
424
|
-
cron: {
|
|
425
|
-
type: "string",
|
|
426
|
-
description: "Cron expression. e.g., '0 9 * * 1' for every Monday at 9am UTC",
|
|
427
|
-
},
|
|
428
|
-
name: {
|
|
429
|
-
type: "string",
|
|
430
|
-
description: "Friendly name for the schedule",
|
|
431
|
-
},
|
|
432
|
-
},
|
|
433
|
-
required: ["task", "repo", "cron"],
|
|
434
|
-
},
|
|
435
|
-
},
|
|
436
|
-
{
|
|
437
|
-
name: "vibekit_list_schedules",
|
|
438
|
-
description: "List all scheduled tasks.",
|
|
439
|
-
inputSchema: {
|
|
440
|
-
type: "object",
|
|
441
|
-
properties: {},
|
|
442
|
-
},
|
|
443
|
-
},
|
|
444
|
-
{
|
|
445
|
-
name: "vibekit_delete_schedule",
|
|
446
|
-
description: "Delete a scheduled task.",
|
|
447
|
-
inputSchema: {
|
|
448
|
-
type: "object",
|
|
449
|
-
properties: {
|
|
450
|
-
scheduleId: {
|
|
451
|
-
type: "string",
|
|
452
|
-
description: "The schedule ID to delete",
|
|
453
|
-
},
|
|
454
|
-
},
|
|
455
|
-
required: ["scheduleId"],
|
|
456
|
-
},
|
|
457
|
-
},
|
|
458
|
-
// Account
|
|
459
|
-
{
|
|
460
|
-
name: "vibekit_account",
|
|
461
|
-
description: "Get VibeKit account info including plan, credits balance, and usage.",
|
|
462
|
-
inputSchema: {
|
|
463
|
-
type: "object",
|
|
464
|
-
properties: {},
|
|
465
|
-
},
|
|
466
|
-
},
|
|
467
|
-
{
|
|
468
|
-
name: "vibekit_list_skills",
|
|
469
|
-
description: "List all available implementation skills. Returns skill IDs, names, descriptions, and tags. Use this to discover what skills are available before fetching specific ones.",
|
|
470
|
-
inputSchema: {
|
|
471
|
-
type: "object",
|
|
472
|
-
properties: {
|
|
473
|
-
tag: {
|
|
474
|
-
type: "string",
|
|
475
|
-
description: "Filter skills by tag (e.g., 'react', 'database', 'security')",
|
|
476
|
-
},
|
|
477
|
-
},
|
|
478
|
-
},
|
|
479
|
-
},
|
|
480
|
-
{
|
|
481
|
-
name: "vibekit_get_skill",
|
|
482
|
-
description: "Fetch the full content of a specific skill. Skills contain implementation patterns, code examples, and best practices for a domain. Fetch skills on-demand when you need guidance on a specific topic.",
|
|
483
|
-
inputSchema: {
|
|
484
|
-
type: "object",
|
|
485
|
-
properties: {
|
|
486
|
-
id: {
|
|
487
|
-
type: "string",
|
|
488
|
-
description: "Skill ID from vibekit_list_skills (e.g., 'nextjs', 'trpc', 'auth')",
|
|
489
|
-
},
|
|
490
|
-
},
|
|
491
|
-
required: ["id"],
|
|
492
|
-
},
|
|
493
|
-
},
|
|
494
|
-
];
|
|
42
|
+
// Tool definitions live in tools.json — single source of truth, also rendered
|
|
43
|
+
// dynamically into the /mcp-server marketing page so it never drifts.
|
|
44
|
+
// require() resolves relative to the compiled file location at runtime;
|
|
45
|
+
// tools.json sits at the package root next to dist/, both when installed
|
|
46
|
+
// from npm and when run via tsx in dev.
|
|
47
|
+
const fs_1 = require("fs");
|
|
48
|
+
const path_1 = require("path");
|
|
49
|
+
const TOOLS_MANIFEST_PATH = (0, path_1.join)(__dirname, "..", "tools.json");
|
|
50
|
+
const tools = JSON.parse((0, fs_1.readFileSync)(TOOLS_MANIFEST_PATH, "utf8")).map((t) => ({
|
|
51
|
+
name: t.name,
|
|
52
|
+
description: t.description,
|
|
53
|
+
inputSchema: t.inputSchema,
|
|
54
|
+
}));
|
|
495
55
|
// Tool handlers
|
|
496
56
|
async function handleTool(name, args) {
|
|
497
57
|
let result;
|
|
@@ -509,6 +69,9 @@ async function handleTool(name, args) {
|
|
|
509
69
|
subdomain: args.subdomain,
|
|
510
70
|
});
|
|
511
71
|
break;
|
|
72
|
+
case "vibekit_list_templates":
|
|
73
|
+
result = await apiRequest("GET", "/templates");
|
|
74
|
+
break;
|
|
512
75
|
case "vibekit_deploy":
|
|
513
76
|
result = await apiRequest("POST", "/hosting/deploy", {
|
|
514
77
|
repo: args.repo,
|
|
@@ -596,6 +159,9 @@ async function handleTool(name, args) {
|
|
|
596
159
|
case "vibekit_get_task":
|
|
597
160
|
result = await apiRequest("GET", `/task/${args.taskId}`);
|
|
598
161
|
break;
|
|
162
|
+
case "vibekit_cancel_task":
|
|
163
|
+
result = await apiRequest("DELETE", `/task/${args.taskId}`);
|
|
164
|
+
break;
|
|
599
165
|
case "vibekit_list_tasks": {
|
|
600
166
|
let path = "/tasks";
|
|
601
167
|
const params = new URLSearchParams();
|
|
@@ -706,7 +272,7 @@ async function handleTool(name, args) {
|
|
|
706
272
|
// Main server setup
|
|
707
273
|
const server = new index_js_1.Server({
|
|
708
274
|
name: "vibekit-mcp",
|
|
709
|
-
version: "0.
|
|
275
|
+
version: "0.6.1",
|
|
710
276
|
}, {
|
|
711
277
|
capabilities: {
|
|
712
278
|
tools: {},
|
package/package.json
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vibekit-mcp",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.1",
|
|
4
|
+
"mcpName": "io.github.609NFT/vibekit-mcp",
|
|
4
5
|
"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
6
|
"main": "dist/index.js",
|
|
6
7
|
"bin": {
|
|
@@ -8,6 +9,7 @@
|
|
|
8
9
|
},
|
|
9
10
|
"files": [
|
|
10
11
|
"dist/",
|
|
12
|
+
"tools.json",
|
|
11
13
|
"README.md"
|
|
12
14
|
],
|
|
13
15
|
"scripts": {
|
|
@@ -28,8 +30,7 @@
|
|
|
28
30
|
"license": "MIT",
|
|
29
31
|
"repository": {
|
|
30
32
|
"type": "git",
|
|
31
|
-
"url": "https://github.com/609NFT/vibekit.git"
|
|
32
|
-
"directory": "packages/mcp-server"
|
|
33
|
+
"url": "https://github.com/609NFT/vibekit-mcp.git"
|
|
33
34
|
},
|
|
34
35
|
"homepage": "https://vibekit.bot",
|
|
35
36
|
"dependencies": {
|
package/tools.json
ADDED
|
@@ -0,0 +1,363 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"category": "Hosting & Apps",
|
|
4
|
+
"name": "vibekit_list_apps",
|
|
5
|
+
"description": "List all hosted apps in your VibeKit account.",
|
|
6
|
+
"inputSchema": { "type": "object", "properties": {} }
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
"category": "Hosting & Apps",
|
|
10
|
+
"name": "vibekit_get_app",
|
|
11
|
+
"description": "Get details about a specific hosted app.",
|
|
12
|
+
"inputSchema": {
|
|
13
|
+
"type": "object",
|
|
14
|
+
"properties": {
|
|
15
|
+
"appId": { "type": "string", "description": "The app ID to get details for" }
|
|
16
|
+
},
|
|
17
|
+
"required": ["appId"]
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"category": "Hosting & Apps",
|
|
22
|
+
"name": "vibekit_create_app",
|
|
23
|
+
"description": "Create a new hosted app from a template.",
|
|
24
|
+
"inputSchema": {
|
|
25
|
+
"type": "object",
|
|
26
|
+
"properties": {
|
|
27
|
+
"template": { "type": "string", "description": "Template to use (e.g., 'nextjs', 'react', 'express')" },
|
|
28
|
+
"subdomain": { "type": "string", "description": "Subdomain for the app (will be deployed to {subdomain}.vibekit.bot)" }
|
|
29
|
+
},
|
|
30
|
+
"required": ["template", "subdomain"]
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"category": "Hosting & Apps",
|
|
35
|
+
"name": "vibekit_list_templates",
|
|
36
|
+
"description": "List available templates for vibekit_create_app (e.g. landing, dashboard, blog, saas, crud-api).",
|
|
37
|
+
"inputSchema": { "type": "object", "properties": {} }
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"category": "Hosting & Apps",
|
|
41
|
+
"name": "vibekit_deploy",
|
|
42
|
+
"description": "Deploy a GitHub repo to VibeKit hosting.",
|
|
43
|
+
"inputSchema": {
|
|
44
|
+
"type": "object",
|
|
45
|
+
"properties": {
|
|
46
|
+
"repo": { "type": "string", "description": "GitHub repo in format 'owner/repo'" },
|
|
47
|
+
"subdomain": { "type": "string", "description": "Subdomain for the app (will be deployed to {subdomain}.vibekit.bot)" }
|
|
48
|
+
},
|
|
49
|
+
"required": ["repo", "subdomain"]
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"category": "Hosting & Apps",
|
|
54
|
+
"name": "vibekit_redeploy",
|
|
55
|
+
"description": "Redeploy an existing hosted app to update it with latest code.",
|
|
56
|
+
"inputSchema": {
|
|
57
|
+
"type": "object",
|
|
58
|
+
"properties": {
|
|
59
|
+
"appId": { "type": "string", "description": "The app ID to redeploy" }
|
|
60
|
+
},
|
|
61
|
+
"required": ["appId"]
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"category": "Hosting & Apps",
|
|
66
|
+
"name": "vibekit_app_logs",
|
|
67
|
+
"description": "Get application logs for debugging and monitoring.",
|
|
68
|
+
"inputSchema": {
|
|
69
|
+
"type": "object",
|
|
70
|
+
"properties": {
|
|
71
|
+
"appId": { "type": "string", "description": "The app ID to get logs for" },
|
|
72
|
+
"lines": { "type": "number", "description": "Number of log lines to retrieve (default: 100)" }
|
|
73
|
+
},
|
|
74
|
+
"required": ["appId"]
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
"category": "Hosting & Apps",
|
|
79
|
+
"name": "vibekit_restart_app",
|
|
80
|
+
"description": "Restart a hosted app.",
|
|
81
|
+
"inputSchema": {
|
|
82
|
+
"type": "object",
|
|
83
|
+
"properties": {
|
|
84
|
+
"appId": { "type": "string", "description": "The app ID to restart" }
|
|
85
|
+
},
|
|
86
|
+
"required": ["appId"]
|
|
87
|
+
}
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"category": "Hosting & Apps",
|
|
91
|
+
"name": "vibekit_stop_app",
|
|
92
|
+
"description": "Stop a hosted app.",
|
|
93
|
+
"inputSchema": {
|
|
94
|
+
"type": "object",
|
|
95
|
+
"properties": {
|
|
96
|
+
"appId": { "type": "string", "description": "The app ID to stop" }
|
|
97
|
+
},
|
|
98
|
+
"required": ["appId"]
|
|
99
|
+
}
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
"category": "Hosting & Apps",
|
|
103
|
+
"name": "vibekit_start_app",
|
|
104
|
+
"description": "Start a stopped hosted app.",
|
|
105
|
+
"inputSchema": {
|
|
106
|
+
"type": "object",
|
|
107
|
+
"properties": {
|
|
108
|
+
"appId": { "type": "string", "description": "The app ID to start" }
|
|
109
|
+
},
|
|
110
|
+
"required": ["appId"]
|
|
111
|
+
}
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
"category": "Hosting & Apps",
|
|
115
|
+
"name": "vibekit_app_env",
|
|
116
|
+
"description": "Get environment variables for a hosted app.",
|
|
117
|
+
"inputSchema": {
|
|
118
|
+
"type": "object",
|
|
119
|
+
"properties": {
|
|
120
|
+
"appId": { "type": "string", "description": "The app ID to get environment variables for" }
|
|
121
|
+
},
|
|
122
|
+
"required": ["appId"]
|
|
123
|
+
}
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
"category": "Hosting & Apps",
|
|
127
|
+
"name": "vibekit_set_env",
|
|
128
|
+
"description": "Set environment variables for a hosted app.",
|
|
129
|
+
"inputSchema": {
|
|
130
|
+
"type": "object",
|
|
131
|
+
"properties": {
|
|
132
|
+
"appId": { "type": "string", "description": "The app ID to set environment variables for" },
|
|
133
|
+
"vars": { "type": "object", "description": "Object of key-value pairs to set as environment variables" }
|
|
134
|
+
},
|
|
135
|
+
"required": ["appId", "vars"]
|
|
136
|
+
}
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
"category": "Hosting & Apps",
|
|
140
|
+
"name": "vibekit_delete_app",
|
|
141
|
+
"description": "Delete a hosted app permanently.",
|
|
142
|
+
"inputSchema": {
|
|
143
|
+
"type": "object",
|
|
144
|
+
"properties": {
|
|
145
|
+
"appId": { "type": "string", "description": "The app ID to delete" }
|
|
146
|
+
},
|
|
147
|
+
"required": ["appId"]
|
|
148
|
+
}
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
"category": "AI Agent",
|
|
152
|
+
"name": "vibekit_chat",
|
|
153
|
+
"description": "Chat with an app's AI agent. The agent can read, write, and modify the app's code.",
|
|
154
|
+
"inputSchema": {
|
|
155
|
+
"type": "object",
|
|
156
|
+
"properties": {
|
|
157
|
+
"appId": { "type": "string", "description": "The app ID to chat with the agent for" },
|
|
158
|
+
"message": { "type": "string", "description": "Message to send to the AI agent" }
|
|
159
|
+
},
|
|
160
|
+
"required": ["appId", "message"]
|
|
161
|
+
}
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
"category": "AI Agent",
|
|
165
|
+
"name": "vibekit_agent_status",
|
|
166
|
+
"description": "Get the status of an app's AI agent.",
|
|
167
|
+
"inputSchema": {
|
|
168
|
+
"type": "object",
|
|
169
|
+
"properties": {
|
|
170
|
+
"appId": { "type": "string", "description": "The app ID to get agent status for" }
|
|
171
|
+
},
|
|
172
|
+
"required": ["appId"]
|
|
173
|
+
}
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
"category": "AI Agent",
|
|
177
|
+
"name": "vibekit_agent_history",
|
|
178
|
+
"description": "Get chat history with an app's AI agent.",
|
|
179
|
+
"inputSchema": {
|
|
180
|
+
"type": "object",
|
|
181
|
+
"properties": {
|
|
182
|
+
"appId": { "type": "string", "description": "The app ID to get agent history for" },
|
|
183
|
+
"limit": { "type": "number", "description": "Maximum number of messages to return (default: 20)" }
|
|
184
|
+
},
|
|
185
|
+
"required": ["appId"]
|
|
186
|
+
}
|
|
187
|
+
},
|
|
188
|
+
{
|
|
189
|
+
"category": "Database",
|
|
190
|
+
"name": "vibekit_enable_database",
|
|
191
|
+
"description": "Enable database for a hosted app.",
|
|
192
|
+
"inputSchema": {
|
|
193
|
+
"type": "object",
|
|
194
|
+
"properties": {
|
|
195
|
+
"appId": { "type": "string", "description": "The app ID to enable database for" }
|
|
196
|
+
},
|
|
197
|
+
"required": ["appId"]
|
|
198
|
+
}
|
|
199
|
+
},
|
|
200
|
+
{
|
|
201
|
+
"category": "Database",
|
|
202
|
+
"name": "vibekit_database_status",
|
|
203
|
+
"description": "Get database status and connection info for an app.",
|
|
204
|
+
"inputSchema": {
|
|
205
|
+
"type": "object",
|
|
206
|
+
"properties": {
|
|
207
|
+
"appId": { "type": "string", "description": "The app ID to get database status for" }
|
|
208
|
+
},
|
|
209
|
+
"required": ["appId"]
|
|
210
|
+
}
|
|
211
|
+
},
|
|
212
|
+
{
|
|
213
|
+
"category": "QA",
|
|
214
|
+
"name": "vibekit_run_qa",
|
|
215
|
+
"description": "Run automated QA tests on a hosted app.",
|
|
216
|
+
"inputSchema": {
|
|
217
|
+
"type": "object",
|
|
218
|
+
"properties": {
|
|
219
|
+
"appId": { "type": "string", "description": "The app ID to run QA tests for" }
|
|
220
|
+
},
|
|
221
|
+
"required": ["appId"]
|
|
222
|
+
}
|
|
223
|
+
},
|
|
224
|
+
{
|
|
225
|
+
"category": "QA",
|
|
226
|
+
"name": "vibekit_qa_status",
|
|
227
|
+
"description": "Get QA test results and status for an app.",
|
|
228
|
+
"inputSchema": {
|
|
229
|
+
"type": "object",
|
|
230
|
+
"properties": {
|
|
231
|
+
"appId": { "type": "string", "description": "The app ID to get QA status for" }
|
|
232
|
+
},
|
|
233
|
+
"required": ["appId"]
|
|
234
|
+
}
|
|
235
|
+
},
|
|
236
|
+
{
|
|
237
|
+
"category": "Tasks",
|
|
238
|
+
"name": "vibekit_submit_task",
|
|
239
|
+
"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.",
|
|
240
|
+
"inputSchema": {
|
|
241
|
+
"type": "object",
|
|
242
|
+
"properties": {
|
|
243
|
+
"task": { "type": "string", "description": "What you want built or changed. Be specific about features, design, and behavior." },
|
|
244
|
+
"repo": { "type": "string", "description": "GitHub repo in format 'owner/repo'. Optional — will use user's current repo if not specified." },
|
|
245
|
+
"branch": { "type": "string", "description": "Git branch to work on. Default: main" },
|
|
246
|
+
"deploy": { "type": "boolean", "description": "Auto-deploy to Vercel when done. Default: true" },
|
|
247
|
+
"callbackUrl": { "type": "string", "description": "Webhook URL to receive task completion notification." }
|
|
248
|
+
},
|
|
249
|
+
"required": ["task"]
|
|
250
|
+
}
|
|
251
|
+
},
|
|
252
|
+
{
|
|
253
|
+
"category": "Tasks",
|
|
254
|
+
"name": "vibekit_get_task",
|
|
255
|
+
"description": "Get the status and result of a previously submitted task.",
|
|
256
|
+
"inputSchema": {
|
|
257
|
+
"type": "object",
|
|
258
|
+
"properties": {
|
|
259
|
+
"taskId": { "type": "string", "description": "The task ID returned from vibekit_submit_task" }
|
|
260
|
+
},
|
|
261
|
+
"required": ["taskId"]
|
|
262
|
+
}
|
|
263
|
+
},
|
|
264
|
+
{
|
|
265
|
+
"category": "Tasks",
|
|
266
|
+
"name": "vibekit_list_tasks",
|
|
267
|
+
"description": "List recent tasks submitted to VibeKit.",
|
|
268
|
+
"inputSchema": {
|
|
269
|
+
"type": "object",
|
|
270
|
+
"properties": {
|
|
271
|
+
"limit": { "type": "number", "description": "Max number of tasks to return. Default: 10" },
|
|
272
|
+
"status": { "type": "string", "enum": ["pending", "running", "completed", "failed"], "description": "Filter by status" }
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
},
|
|
276
|
+
{
|
|
277
|
+
"category": "Tasks",
|
|
278
|
+
"name": "vibekit_wait_for_task",
|
|
279
|
+
"description": "Wait for a task to complete and return the result. Polls every 5 seconds up to the timeout.",
|
|
280
|
+
"inputSchema": {
|
|
281
|
+
"type": "object",
|
|
282
|
+
"properties": {
|
|
283
|
+
"taskId": { "type": "string", "description": "The task ID to wait for" },
|
|
284
|
+
"timeoutSeconds": { "type": "number", "description": "Max seconds to wait. Default: 300 (5 minutes)" }
|
|
285
|
+
},
|
|
286
|
+
"required": ["taskId"]
|
|
287
|
+
}
|
|
288
|
+
},
|
|
289
|
+
{
|
|
290
|
+
"category": "Tasks",
|
|
291
|
+
"name": "vibekit_cancel_task",
|
|
292
|
+
"description": "Cancel a running task by ID. No-op for tasks that have already completed.",
|
|
293
|
+
"inputSchema": {
|
|
294
|
+
"type": "object",
|
|
295
|
+
"properties": {
|
|
296
|
+
"taskId": { "type": "string", "description": "The task ID to cancel" }
|
|
297
|
+
},
|
|
298
|
+
"required": ["taskId"]
|
|
299
|
+
}
|
|
300
|
+
},
|
|
301
|
+
{
|
|
302
|
+
"category": "Schedules",
|
|
303
|
+
"name": "vibekit_create_schedule",
|
|
304
|
+
"description": "Create a scheduled recurring task. The AI will run this task automatically on the specified schedule.",
|
|
305
|
+
"inputSchema": {
|
|
306
|
+
"type": "object",
|
|
307
|
+
"properties": {
|
|
308
|
+
"task": { "type": "string", "description": "What to do on each run. e.g., 'Improve SEO and page speed'" },
|
|
309
|
+
"repo": { "type": "string", "description": "GitHub repo in format 'owner/repo'" },
|
|
310
|
+
"cron": { "type": "string", "description": "Cron expression. e.g., '0 9 * * 1' for every Monday at 9am UTC" },
|
|
311
|
+
"name": { "type": "string", "description": "Friendly name for the schedule" }
|
|
312
|
+
},
|
|
313
|
+
"required": ["task", "repo", "cron"]
|
|
314
|
+
}
|
|
315
|
+
},
|
|
316
|
+
{
|
|
317
|
+
"category": "Schedules",
|
|
318
|
+
"name": "vibekit_list_schedules",
|
|
319
|
+
"description": "List all scheduled tasks.",
|
|
320
|
+
"inputSchema": { "type": "object", "properties": {} }
|
|
321
|
+
},
|
|
322
|
+
{
|
|
323
|
+
"category": "Schedules",
|
|
324
|
+
"name": "vibekit_delete_schedule",
|
|
325
|
+
"description": "Delete a scheduled task.",
|
|
326
|
+
"inputSchema": {
|
|
327
|
+
"type": "object",
|
|
328
|
+
"properties": {
|
|
329
|
+
"scheduleId": { "type": "string", "description": "The schedule ID to delete" }
|
|
330
|
+
},
|
|
331
|
+
"required": ["scheduleId"]
|
|
332
|
+
}
|
|
333
|
+
},
|
|
334
|
+
{
|
|
335
|
+
"category": "Account",
|
|
336
|
+
"name": "vibekit_account",
|
|
337
|
+
"description": "Get VibeKit account info including plan, credits balance, and usage.",
|
|
338
|
+
"inputSchema": { "type": "object", "properties": {} }
|
|
339
|
+
},
|
|
340
|
+
{
|
|
341
|
+
"category": "Skills",
|
|
342
|
+
"name": "vibekit_list_skills",
|
|
343
|
+
"description": "List all available implementation skills. Returns skill IDs, names, descriptions, and tags. Use this to discover what skills are available before fetching specific ones.",
|
|
344
|
+
"inputSchema": {
|
|
345
|
+
"type": "object",
|
|
346
|
+
"properties": {
|
|
347
|
+
"tag": { "type": "string", "description": "Filter skills by tag (e.g., 'react', 'database', 'security')" }
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
},
|
|
351
|
+
{
|
|
352
|
+
"category": "Skills",
|
|
353
|
+
"name": "vibekit_get_skill",
|
|
354
|
+
"description": "Fetch the full content of a specific skill. Skills contain implementation patterns, code examples, and best practices for a domain. Fetch skills on-demand when you need guidance on a specific topic.",
|
|
355
|
+
"inputSchema": {
|
|
356
|
+
"type": "object",
|
|
357
|
+
"properties": {
|
|
358
|
+
"id": { "type": "string", "description": "Skill ID from vibekit_list_skills (e.g., 'nextjs', 'trpc', 'auth')" }
|
|
359
|
+
},
|
|
360
|
+
"required": ["id"]
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
]
|