velora-mcp-server 1.0.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 +120 -0
  2. package/build/index.js +360 -0
  3. package/package.json +43 -0
package/README.md ADDED
@@ -0,0 +1,120 @@
1
+ # Velora MCP Server
2
+
3
+ Official [Model Context Protocol (MCP)](https://modelcontextprotocol.io) server for [Velora AI Video Studio](https://velorastudio.in).
4
+
5
+ Connect any MCP-compatible AI assistant (Claude, Cursor, Windsurf, etc.) to Velora's data — so it can help users choose plans, estimate costs, and discover AI models **without leaving their workflow**.
6
+
7
+ ---
8
+
9
+ ## 🚀 Quick Install (via Smithery)
10
+
11
+ The easiest way to install is through [Smithery](https://smithery.ai/server/velora-mcp-server):
12
+
13
+ ```bash
14
+ npx -y @smithery/cli install velora-mcp-server --client claude
15
+ ```
16
+
17
+ ---
18
+
19
+ ## 🛠️ Manual Install
20
+
21
+ ### Claude Desktop
22
+
23
+ Add this to your `claude_desktop_config.json`:
24
+
25
+ ```json
26
+ {
27
+ "mcpServers": {
28
+ "velora": {
29
+ "command": "npx",
30
+ "args": ["-y", "velora-mcp-server"]
31
+ }
32
+ }
33
+ }
34
+ ```
35
+
36
+ **Config file location:**
37
+ - **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
38
+ - **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
39
+
40
+ ### Cursor / Windsurf
41
+
42
+ Add to your MCP settings:
43
+
44
+ ```json
45
+ {
46
+ "velora": {
47
+ "command": "npx",
48
+ "args": ["-y", "velora-mcp-server"]
49
+ }
50
+ }
51
+ ```
52
+
53
+ ---
54
+
55
+ ## 🔧 Available Tools
56
+
57
+ ### `get_velora_plans`
58
+ Returns all Velora subscription plans with pricing, credit allocations, features, and storage limits.
59
+
60
+ **Parameters:**
61
+ - `plan_id` *(optional)*: Filter to a specific plan (`free`, `starter`, `creator`, `studio`, `enterprise`)
62
+
63
+ **Example prompts:**
64
+ - *"What's included in the Velora Creator plan?"*
65
+ - *"Compare all Velora plans"*
66
+ - *"How much does Velora Studio cost?"*
67
+
68
+ ---
69
+
70
+ ### `estimate_video_cost`
71
+ Estimates how many AI Video Credits are needed to generate a clip.
72
+
73
+ **Parameters:**
74
+ - `model` *(required)*: The AI model name (e.g. `kling_3_0`, `veo3_1`, `sora_2`, `wan2_5`)
75
+ - `duration_seconds` *(required)*: Clip length in seconds (1–15)
76
+
77
+ **Example prompts:**
78
+ - *"How many credits does a 10-second Sora 2 video cost on Velora?"*
79
+ - *"What plan do I need to generate Veo 3.1 videos?"*
80
+
81
+ ---
82
+
83
+ ### `list_ai_models`
84
+ Lists all AI video and image generation models available on Velora, grouped by quality tier, with credit costs.
85
+
86
+ **Parameters:**
87
+ - `category` *(optional)*: `video`, `image`, or `all` (default: `all`)
88
+
89
+ **Example prompts:**
90
+ - *"What AI video models does Velora support?"*
91
+ - *"Show me budget video models on Velora"*
92
+ - *"What image generation models are available?"*
93
+
94
+ ---
95
+
96
+ ## 💡 Why This Exists
97
+
98
+ When you connect this MCP server to your AI assistant:
99
+
100
+ - Any AI can **accurately answer questions** about Velora pricing, without hallucinating
101
+ - Users planning video projects get **instant cost estimates** from inside Claude/Cursor
102
+ - Velora gets discovered **organically** by developers and creators using AI tools daily
103
+
104
+ ---
105
+
106
+ ## 📦 Running Locally
107
+
108
+ ```bash
109
+ git clone https://github.com/Jivan1727/velora-backend
110
+ cd mcp-server
111
+ npm install
112
+ npm run build
113
+ node build/index.js
114
+ ```
115
+
116
+ ## 🔗 Links
117
+
118
+ - **Website**: https://velorastudio.in
119
+ - **Pricing**: https://velorastudio.in/pricing
120
+ - **Contact / Enterprise**: office@velorastudio.in
package/build/index.js ADDED
@@ -0,0 +1,360 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js");
5
+ const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
6
+ const zod_1 = require("zod");
7
+ // ─── Velora Plan Data (source of truth) ──────────────────────────────────────
8
+ const PLANS = [
9
+ {
10
+ id: "free",
11
+ name: "Free",
12
+ tagline: "Try Velora free. Perfect for exploring AI video.",
13
+ price_inr: 0,
14
+ price_usd: 0,
15
+ compute_credits: 200,
16
+ video_credits: 0,
17
+ el_minutes: 0,
18
+ storage: "1 GB",
19
+ export: "720p with watermark",
20
+ features: [
21
+ "Script editor & subtitle styling",
22
+ "Standard Stock Library",
23
+ "Standard voices",
24
+ "2 videos per month",
25
+ "720p export with watermark",
26
+ "1 min Premium voice trial",
27
+ ],
28
+ },
29
+ {
30
+ id: "starter",
31
+ name: "Starter",
32
+ tagline: "Great for creators wanting quality video without limits.",
33
+ price_inr: 899,
34
+ price_usd: 14.99,
35
+ compute_credits: 1600,
36
+ video_credits: 60,
37
+ el_minutes: 15,
38
+ storage: "5 GB",
39
+ export: "1080p, no watermark",
40
+ features: [
41
+ "Script editor & subtitle styling",
42
+ "Enhanced Music Library",
43
+ "Enhanced Stock Library",
44
+ "Standard & Enhanced voices",
45
+ "Premium voices (ElevenLabs — 15 min/mo)",
46
+ "All AI video models (Kling, Wan, Seedance + more)",
47
+ "Text / URL / Image / Audio / PPT to Video",
48
+ "1080p export, no watermark",
49
+ "Credit top-ups available",
50
+ ],
51
+ },
52
+ {
53
+ id: "creator",
54
+ name: "Creator",
55
+ tagline: "Best for professionals publishing daily at scale.",
56
+ price_inr: 2999,
57
+ price_usd: 49.99,
58
+ compute_credits: 6000,
59
+ video_credits: 200,
60
+ el_minutes: 40,
61
+ storage: "15 GB",
62
+ export: "1080p, no watermark",
63
+ features: [
64
+ "All Starter features",
65
+ "Autopilot Agent (Full Automation)",
66
+ "Social Media Integrations",
67
+ "AI Director Pre-Production",
68
+ "Motion effects & priority queue",
69
+ "AI image generation (multi-model)",
70
+ "Strict facial consistency mode",
71
+ "Summarize Video & AI Video Editor",
72
+ "B-roll generation",
73
+ "Upload your own music",
74
+ "Record (webcam & screen)",
75
+ "Premium voices (ElevenLabs — 40 min/mo)",
76
+ "Credit top-ups available",
77
+ ],
78
+ },
79
+ {
80
+ id: "studio",
81
+ name: "Studio",
82
+ tagline: "Built for professional teams and content studios.",
83
+ price_inr: 8999,
84
+ price_usd: 119.99,
85
+ compute_credits: 18000,
86
+ video_credits: 600,
87
+ el_minutes: 110,
88
+ storage: "30 GB",
89
+ export: "4K, no watermark",
90
+ features: [
91
+ "All Creator features",
92
+ "Veo 3.1 AI video generation",
93
+ "Bulk video generation",
94
+ "Brand kits & Team collaboration",
95
+ "Premium Curated Media Library",
96
+ "Video templates library",
97
+ "Custom AI voice cloning",
98
+ "Premium voices (ElevenLabs — 110 min/mo)",
99
+ "Credit top-ups available",
100
+ ],
101
+ },
102
+ {
103
+ id: "enterprise",
104
+ name: "Enterprise",
105
+ tagline: "For large teams, agencies & companies with custom needs.",
106
+ price_inr: -1,
107
+ price_usd: -1,
108
+ compute_credits: -1,
109
+ video_credits: -1,
110
+ el_minutes: -1,
111
+ storage: "Custom",
112
+ export: "4K, no watermark",
113
+ features: [
114
+ "All Studio features",
115
+ "All AI video & image models",
116
+ "API access",
117
+ "Priority enterprise support",
118
+ "Custom AI voice cloning",
119
+ "Unlimited videos/month",
120
+ "Premium Curated Media Library, B-roll & music",
121
+ "Credit top-ups available",
122
+ ],
123
+ contact_sales: true,
124
+ contact_email: "office@velorastudio.in",
125
+ },
126
+ ];
127
+ // ─── AI Video Model Credit Costs ─────────────────────────────────────────────
128
+ // Format: { model_id: { 5: credits_5s, 10: credits_10s, 15: credits_15s } }
129
+ const VIDEO_MODEL_COSTS = {
130
+ grok_video: { 5: 2, 10: 5, 15: 8 },
131
+ seedance_1_0_fast: { 5: 2, 10: 3, 15: 5 },
132
+ seedance_2_0: { 5: 25, 10: 50, 15: 75 },
133
+ seedance_2_0_fast: { 5: 15, 10: 30, 15: 45 },
134
+ ltx_2_3_fast: { 5: 10, 10: 20, 15: 30 },
135
+ ltx_2_3_pro: { 5: 10, 10: 20, 15: 30 },
136
+ wan2_5: { 5: 10, 10: 20, 15: 28 },
137
+ wan2_6: { 5: 10, 10: 20, 15: 28 },
138
+ hailuo_2_3: { 5: 6, 10: 7, 15: 12 },
139
+ seedance_1_5_pro: { 5: 4, 10: 7, 15: 10 },
140
+ pika: { 5: 7, 10: 7, 15: 7 },
141
+ mochi_2: { 5: 5, 10: 10, 15: 15 },
142
+ pixverse: { 5: 7, 10: 12, 15: 12 },
143
+ luma_ray_2: { 5: 11, 10: 22, 15: 33 },
144
+ kling2_5: { 5: 10, 10: 16, 15: 24 },
145
+ kling_3_0: { 5: 10, 10: 18, 15: 26 },
146
+ kling_o3: { 5: 10, 10: 18, 15: 26 },
147
+ kling_3_0_pro: { 5: 12, 10: 20, 15: 28 },
148
+ kling_o1: { 5: 14, 10: 25, 15: 38 },
149
+ omni_human: { 5: 20, 10: 38, 15: 56 },
150
+ veo3_1: { 5: 8, 10: 16, 15: 24 },
151
+ veo3_1_fast: { 5: 6, 10: 12, 15: 18 },
152
+ sora_2: { 5: 14, 10: 28, 15: 40 },
153
+ sora_2_pro: { 5: 36, 10: 72, 15: 107 },
154
+ runway_gen_4: { 5: 15, 10: 30, 15: 45 },
155
+ runway_gen_4_5: { 5: 15, 10: 30, 15: 45 },
156
+ grok_video_i2v: { 5: 8, 10: 16, 15: 24 },
157
+ };
158
+ // ─── AI Image Model Credit Costs ─────────────────────────────────────────────
159
+ const IMAGE_MODEL_COSTS = {
160
+ z_image_turbo: 5,
161
+ wan_image: 5,
162
+ gpt_image_1_5: 5,
163
+ nano_banana: 20,
164
+ nano_banana_pro: 20,
165
+ grok_image: 20,
166
+ flux2_flex: 20,
167
+ gpt_image_1: 10,
168
+ seedream_4_0: 5,
169
+ seedream_4_5: 8,
170
+ nano_banana_2: 10,
171
+ qwen_2: 40,
172
+ flux2_klein_4b: 20,
173
+ flux2_klein_9b: 40,
174
+ flux_kontext_pro: 40,
175
+ flux2_pro: 50,
176
+ gpt_image_1_5_high: 50,
177
+ flux2_max: 70,
178
+ flux_kontext_max: 80,
179
+ ideogram_3: 80,
180
+ imagen_4: 160,
181
+ };
182
+ // ─── MCP Server setup ─────────────────────────────────────────────────────────
183
+ const server = new mcp_js_1.McpServer({
184
+ name: "velora-mcp-server",
185
+ version: "1.0.0",
186
+ });
187
+ // ─── Tool: get_velora_plans ───────────────────────────────────────────────────
188
+ server.tool("get_velora_plans", "Get all Velora AI Video Studio subscription plans with their pricing (INR & USD), credit allocations, features, and storage limits. Use this to help users choose the right plan or answer questions about Velora pricing.", {
189
+ plan_id: zod_1.z
190
+ .string()
191
+ .optional()
192
+ .describe("Optional: filter to a specific plan ID (free, starter, creator, studio, enterprise). Omit to get all plans."),
193
+ }, async ({ plan_id }) => {
194
+ const results = plan_id
195
+ ? PLANS.filter((p) => p.id === plan_id)
196
+ : PLANS;
197
+ if (results.length === 0) {
198
+ return {
199
+ content: [
200
+ {
201
+ type: "text",
202
+ text: `Plan "${plan_id}" not found. Available plans: free, starter, creator, studio, enterprise.`,
203
+ },
204
+ ],
205
+ };
206
+ }
207
+ const formatted = results.map((p) => {
208
+ const price = p.price_inr === -1
209
+ ? "Custom pricing — contact office@velorastudio.in"
210
+ : `₹${p.price_inr.toLocaleString("en-IN")}/month (≈ $${p.price_usd}/month)`;
211
+ const credits = p.compute_credits === -1
212
+ ? "Custom credit allocation"
213
+ : [
214
+ `⚡ ${p.compute_credits.toLocaleString()} Compute Credits`,
215
+ `🎬 ${p.video_credits} AI Video Credits`,
216
+ `🎙️ ${p.el_minutes > 0 ? p.el_minutes + " min/mo ElevenLabs Premium Voice" : "No premium voice"}`,
217
+ ].join("\n ");
218
+ return `## ${p.name} Plan
219
+ Tagline: ${p.tagline}
220
+ Price: ${price}
221
+ Credits:
222
+ ${credits}
223
+ Storage: ${p.storage}
224
+ Export: ${p.export}
225
+ Features:
226
+ ${p.features.map((f) => ` - ${f}`).join("\n")}`;
227
+ });
228
+ return {
229
+ content: [
230
+ {
231
+ type: "text",
232
+ text: `# Velora AI Video Studio — Plans\nWebsite: https://velorastudio.in | Pricing: https://velorastudio.in/pricing\n\n` +
233
+ formatted.join("\n\n---\n\n"),
234
+ },
235
+ ],
236
+ };
237
+ });
238
+ // ─── Tool: estimate_video_cost ────────────────────────────────────────────────
239
+ server.tool("estimate_video_cost", "Estimate the number of AI Video Credits required to generate a video clip on Velora. Provide the model name and duration. Also returns the equivalent plan recommendation.", {
240
+ model: zod_1.z
241
+ .string()
242
+ .describe("The AI video model to use. Examples: kling_3_0, veo3_1, sora_2, wan2_5, seedance_2_0, grok_video, hailuo_2_3, pika, luma_ray_2, runway_gen_4"),
243
+ duration_seconds: zod_1.z
244
+ .number()
245
+ .int()
246
+ .min(1)
247
+ .max(15)
248
+ .describe("Duration of the clip in seconds. Valid values: 1-15."),
249
+ }, async ({ model, duration_seconds }) => {
250
+ const normalized = model.toLowerCase().replace(/-/g, "_").replace(/\./g, "_");
251
+ const pricing = VIDEO_MODEL_COSTS[normalized];
252
+ if (!pricing) {
253
+ const available = Object.keys(VIDEO_MODEL_COSTS).join(", ");
254
+ return {
255
+ content: [
256
+ {
257
+ type: "text",
258
+ text: `Model "${model}" not found. Available models: ${available}`,
259
+ },
260
+ ],
261
+ };
262
+ }
263
+ const tier = duration_seconds <= 5 ? 5 : duration_seconds <= 10 ? 10 : 15;
264
+ const cost = pricing[tier];
265
+ // Find suitable plans
266
+ const suitablePlans = PLANS.filter((p) => p.video_credits === -1 || p.video_credits >= cost);
267
+ const planNames = suitablePlans.map((p) => p.name).join(", ");
268
+ return {
269
+ content: [
270
+ {
271
+ type: "text",
272
+ text: [
273
+ `# Video Cost Estimate`,
274
+ `Model: ${model}`,
275
+ `Duration: ${duration_seconds}s (billed at ${tier}s tier)`,
276
+ `Cost: **${cost} AI Video Credits**`,
277
+ ``,
278
+ `## Suitable Plans`,
279
+ `${planNames}`,
280
+ ``,
281
+ `## Credit Top-Ups Available`,
282
+ `- 100 AI Video Credits: ₹699`,
283
+ `- 300 AI Video Credits: ₹1,999`,
284
+ `- 1,000 AI Video Credits: ₹6,499`,
285
+ ``,
286
+ `Sign up at https://velorastudio.in`,
287
+ ].join("\n"),
288
+ },
289
+ ],
290
+ };
291
+ });
292
+ // ─── Tool: list_ai_models ─────────────────────────────────────────────────────
293
+ server.tool("list_ai_models", "List all AI video and image generation models available on Velora, along with their credit costs per duration tier. Useful for helping users pick the best model for their budget and quality needs.", {
294
+ category: zod_1.z
295
+ .enum(["video", "image", "all"])
296
+ .optional()
297
+ .default("all")
298
+ .describe("Filter by model category: 'video', 'image', or 'all'."),
299
+ }, async ({ category }) => {
300
+ const lines = ["# Velora — Available AI Models\n"];
301
+ if (category === "video" || category === "all") {
302
+ lines.push("## 🎬 AI Video Models\n");
303
+ lines.push("Format: Model Name → 5s cost / 10s cost / 15s cost (AI Video Credits)\n");
304
+ const videoGroups = {
305
+ "🏆 Premium (Best Quality)": [
306
+ "sora_2", "sora_2_pro", "veo3_1", "veo3_1_fast", "kling_3_0", "kling_o3", "kling_3_0_pro", "kling_o1", "omni_human"
307
+ ],
308
+ "⚡ Standard (Great Quality)": [
309
+ "kling2_5", "seedance_2_0", "seedance_2_0_fast", "seedance_1_5_pro", "luma_ray_2", "hailuo_2_3", "wan2_5", "wan2_6", "runway_gen_4", "runway_gen_4_5"
310
+ ],
311
+ "💰 Budget (Fast & Affordable)": [
312
+ "grok_video", "grok_video_i2v", "pika", "pixverse", "mochi_2", "ltx_2_3_fast", "ltx_2_3_pro", "seedance_1_0_fast"
313
+ ],
314
+ };
315
+ for (const [groupName, models] of Object.entries(videoGroups)) {
316
+ lines.push(`### ${groupName}`);
317
+ for (const m of models) {
318
+ const pricing = VIDEO_MODEL_COSTS[m];
319
+ if (pricing) {
320
+ lines.push(`- ${m}: ${pricing[5]} cr / ${pricing[10]} cr / ${pricing[15]} cr`);
321
+ }
322
+ }
323
+ lines.push("");
324
+ }
325
+ }
326
+ if (category === "image" || category === "all") {
327
+ lines.push("## 🖼️ AI Image Models\n");
328
+ lines.push("Format: Model Name → credits per image\n");
329
+ const imageTiers = {
330
+ "Budget (5-10 cr)": ["z_image_turbo", "wan_image", "gpt_image_1_5", "seedream_4_0", "gpt_image_1", "seedream_4_5", "nano_banana_2"],
331
+ "Standard (20-50 cr)": ["nano_banana", "nano_banana_pro", "grok_image", "flux2_flex", "flux2_klein_4b", "qwen_2", "flux2_klein_9b", "flux_kontext_pro", "flux2_pro"],
332
+ "Premium (70-160 cr)": ["flux2_max", "flux_kontext_max", "ideogram_3", "imagen_4"],
333
+ };
334
+ for (const [tierName, models] of Object.entries(imageTiers)) {
335
+ lines.push(`### ${tierName}`);
336
+ for (const m of models) {
337
+ const cost = IMAGE_MODEL_COSTS[m];
338
+ if (cost !== undefined) {
339
+ lines.push(`- ${m}: ${cost} Compute Credits`);
340
+ }
341
+ }
342
+ lines.push("");
343
+ }
344
+ }
345
+ lines.push("---");
346
+ lines.push("Sign up at https://velorastudio.in | Pricing: https://velorastudio.in/pricing");
347
+ return {
348
+ content: [{ type: "text", text: lines.join("\n") }],
349
+ };
350
+ });
351
+ // ─── Start server ─────────────────────────────────────────────────────────────
352
+ async function main() {
353
+ const transport = new stdio_js_1.StdioServerTransport();
354
+ await server.connect(transport);
355
+ console.error("Velora MCP Server running on stdio");
356
+ }
357
+ main().catch((err) => {
358
+ console.error("Fatal error:", err);
359
+ process.exit(1);
360
+ });
package/package.json ADDED
@@ -0,0 +1,43 @@
1
+ {
2
+ "name": "velora-mcp-server",
3
+ "version": "1.0.0",
4
+ "description": "Official Velora AI Video Studio MCP Server — exposes Velora's plans, pricing, and AI model data to any MCP-compatible AI assistant.",
5
+ "main": "build/index.js",
6
+ "bin": {
7
+ "velora-mcp-server": "build/index.js"
8
+ },
9
+ "scripts": {
10
+ "build": "tsc",
11
+ "start": "node build/index.js",
12
+ "dev": "ts-node src/index.ts",
13
+ "prepare": "npm run build"
14
+ },
15
+ "keywords": [
16
+ "mcp",
17
+ "model-context-protocol",
18
+ "velora",
19
+ "ai-video",
20
+ "video-generation",
21
+ "ai-tools"
22
+ ],
23
+ "author": "Velora AI <office@velorastudio.in>",
24
+ "license": "MIT",
25
+ "dependencies": {
26
+ "@modelcontextprotocol/sdk": "^1.12.0"
27
+ },
28
+ "devDependencies": {
29
+ "@types/node": "^20.0.0",
30
+ "typescript": "^5.0.0",
31
+ "ts-node": "^10.9.0"
32
+ },
33
+ "engines": {
34
+ "node": ">=18.0.0"
35
+ },
36
+ "files": [
37
+ "build/**/*",
38
+ "README.md"
39
+ ],
40
+ "publishConfig": {
41
+ "access": "public"
42
+ }
43
+ }