thumbnail-generator-mcp 1.0.16 → 1.0.18
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/dist/index.js +126 -195
- package/dist/index.js.map +1 -1
- package/package.json +2 -1
package/dist/index.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
|
3
3
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
4
4
|
import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
|
|
5
|
+
import { GoogleGenerativeAI } from "@google/generative-ai";
|
|
5
6
|
import nodeMachineId from "node-machine-id";
|
|
6
7
|
const { machineIdSync } = nodeMachineId;
|
|
7
8
|
import * as fs from "fs";
|
|
@@ -9,20 +10,17 @@ import * as path from "path";
|
|
|
9
10
|
import * as os from "os";
|
|
10
11
|
// ─── Config ─────────────────────────────────────────────────────────────────
|
|
11
12
|
const LICENSE_KEY = (process.env.LICENSE_KEY ?? "").trim().toUpperCase();
|
|
12
|
-
const
|
|
13
|
+
const GEMINI_API_KEY = process.env.GEMINI_API_KEY ?? "";
|
|
13
14
|
const VALIDATE_URL = process.env.VALIDATE_URL ??
|
|
14
15
|
"https://thumbnail.automationhackers.net/api/licenses/validate";
|
|
15
|
-
const
|
|
16
|
-
const KIE_MODEL = "nano-banana-pro";
|
|
17
|
-
const POLL_INTERVAL_MS = 4000;
|
|
18
|
-
const POLL_TIMEOUT_MS = 3 * 60 * 1000; // 3 minutes
|
|
16
|
+
const IMAGE_MODEL = "gemini-3-pro-image-preview";
|
|
19
17
|
let cachedProducts = null;
|
|
20
18
|
async function validateLicense() {
|
|
21
19
|
if (cachedProducts)
|
|
22
20
|
return cachedProducts;
|
|
23
21
|
let machineId;
|
|
24
22
|
try {
|
|
25
|
-
machineId = machineIdSync(true);
|
|
23
|
+
machineId = machineIdSync(true); // hashed, privacy-safe
|
|
26
24
|
}
|
|
27
25
|
catch {
|
|
28
26
|
machineId = `fallback-${os.hostname()}-${os.userInfo().username}`;
|
|
@@ -51,94 +49,9 @@ async function validateLicense() {
|
|
|
51
49
|
cachedProducts = data.products ?? ["front_end"];
|
|
52
50
|
return cachedProducts;
|
|
53
51
|
}
|
|
54
|
-
// ───
|
|
55
|
-
// Uploads a local file to 0x0.st (free temporary hosting) to get a public URL
|
|
56
|
-
// that kie.ai can fetch. Files persist for at least 30 days.
|
|
57
|
-
async function uploadImageForUrl(filePath) {
|
|
58
|
-
const fileBuffer = fs.readFileSync(filePath);
|
|
59
|
-
const filename = path.basename(filePath);
|
|
60
|
-
const ext = path.extname(filename).toLowerCase();
|
|
61
|
-
const mimeType = ext === ".png" ? "image/png" :
|
|
62
|
-
ext === ".webp" ? "image/webp" :
|
|
63
|
-
"image/jpeg";
|
|
64
|
-
const formData = new FormData();
|
|
65
|
-
formData.append("file", new Blob([fileBuffer], { type: mimeType }), filename);
|
|
66
|
-
const res = await fetch("https://0x0.st", {
|
|
67
|
-
method: "POST",
|
|
68
|
-
body: formData,
|
|
69
|
-
});
|
|
70
|
-
if (!res.ok) {
|
|
71
|
-
throw new Error(`Image upload failed (${res.status}): ${await res.text()}`);
|
|
72
|
-
}
|
|
73
|
-
return (await res.text()).trim();
|
|
74
|
-
}
|
|
75
|
-
// ─── kie.ai API ───────────────────────────────────────────────────────────────
|
|
76
|
-
async function createKieTask(opts) {
|
|
77
|
-
const res = await fetch(`${KIE_BASE}/jobs/createTask`, {
|
|
78
|
-
method: "POST",
|
|
79
|
-
headers: {
|
|
80
|
-
"Content-Type": "application/json",
|
|
81
|
-
"Authorization": `Bearer ${KIE_API_KEY}`,
|
|
82
|
-
},
|
|
83
|
-
body: JSON.stringify({
|
|
84
|
-
model: KIE_MODEL,
|
|
85
|
-
input: {
|
|
86
|
-
prompt: opts.prompt,
|
|
87
|
-
image_input: opts.imageUrls ?? [],
|
|
88
|
-
aspect_ratio: "16:9",
|
|
89
|
-
resolution: "4K",
|
|
90
|
-
output_format: "jpg",
|
|
91
|
-
},
|
|
92
|
-
}),
|
|
93
|
-
});
|
|
94
|
-
const data = (await res.json());
|
|
95
|
-
if (data.code !== 200 || !data.data?.taskId) {
|
|
96
|
-
throw new Error(`kie.ai task creation failed (${data.code}): ${data.msg}`);
|
|
97
|
-
}
|
|
98
|
-
return data.data.taskId;
|
|
99
|
-
}
|
|
100
|
-
async function pollKieTask(taskId) {
|
|
101
|
-
const deadline = Date.now() + POLL_TIMEOUT_MS;
|
|
102
|
-
while (Date.now() < deadline) {
|
|
103
|
-
await new Promise((r) => setTimeout(r, POLL_INTERVAL_MS));
|
|
104
|
-
const res = await fetch(`${KIE_BASE}/jobs/recordInfo?taskId=${encodeURIComponent(taskId)}`, { headers: { "Authorization": `Bearer ${KIE_API_KEY}` } });
|
|
105
|
-
const data = (await res.json());
|
|
106
|
-
if (data.code !== 200 || !data.data) {
|
|
107
|
-
throw new Error(`kie.ai poll failed (${data.code}): ${data.msg}`);
|
|
108
|
-
}
|
|
109
|
-
const { state, resultJson, failMsg, failCode } = data.data;
|
|
110
|
-
if (state === "fail") {
|
|
111
|
-
throw new Error(`kie.ai generation failed: ${failMsg ?? failCode ?? "unknown error"}`);
|
|
112
|
-
}
|
|
113
|
-
if (state === "success" && resultJson) {
|
|
114
|
-
const result = JSON.parse(resultJson);
|
|
115
|
-
if (!result.resultUrls?.length) {
|
|
116
|
-
throw new Error("kie.ai returned success but no result URLs");
|
|
117
|
-
}
|
|
118
|
-
return result.resultUrls;
|
|
119
|
-
}
|
|
120
|
-
// state === "waiting" — keep polling
|
|
121
|
-
}
|
|
122
|
-
throw new Error("kie.ai generation timed out after 3 minutes");
|
|
123
|
-
}
|
|
124
|
-
// ─── Download and save ────────────────────────────────────────────────────────
|
|
125
|
-
async function downloadToDesktop(url) {
|
|
126
|
-
const res = await fetch(url);
|
|
127
|
-
if (!res.ok) {
|
|
128
|
-
throw new Error(`Failed to download result image (${res.status})`);
|
|
129
|
-
}
|
|
130
|
-
const buffer = Buffer.from(await res.arrayBuffer());
|
|
131
|
-
const timestamp = new Date()
|
|
132
|
-
.toISOString()
|
|
133
|
-
.replace(/[:.]/g, "-")
|
|
134
|
-
.slice(0, 19);
|
|
135
|
-
const outPath = path.join(os.homedir(), "Desktop", `thumbnail-${timestamp}.jpg`);
|
|
136
|
-
fs.writeFileSync(outPath, buffer);
|
|
137
|
-
return outPath;
|
|
138
|
-
}
|
|
139
|
-
// ─── Prompt builders ──────────────────────────────────────────────────────────
|
|
52
|
+
// ─── Prompt builders ─────────────────────────────────────────────────────────
|
|
140
53
|
function buildPhotoEditPrompt(opts) {
|
|
141
|
-
const { background, textOverlay, textPosition, textColor,
|
|
54
|
+
const { background, textOverlay, textPosition, textColor, outfitChange, expression, lightingStyle, mood, videoTopic, styleReferenceIntent } = opts;
|
|
142
55
|
const lightingDirective = lightingStyle === "bright"
|
|
143
56
|
? "Bright, even studio lighting — soft shadows, no harsh contrast, clean and professional"
|
|
144
57
|
: lightingStyle === "moody"
|
|
@@ -146,11 +59,11 @@ function buildPhotoEditPrompt(opts) {
|
|
|
146
59
|
: lightingStyle === "natural"
|
|
147
60
|
? "Natural daylight — soft diffused light, no artificial feel, warm and organic"
|
|
148
61
|
: "Cinematic dramatic lighting — strong rim light from top-behind, high contrast punchy shadows, light source top-front. This is the default for high-performing thumbnails.";
|
|
149
|
-
return `TASK: Transform
|
|
150
|
-
|
|
151
|
-
${
|
|
62
|
+
return `TASK: Transform this selfie into a professional YouTube thumbnail.
|
|
63
|
+
${videoTopic ? `\nVideo context: This thumbnail is for a video about "${videoTopic}". Use this to inform the mood, background details, and overall composition.\n` : ""}
|
|
64
|
+
${styleReferenceIntent ? `STYLE REFERENCE: A reference thumbnail is attached as an additional image. Your instructions for what to take from it:\n"${styleReferenceIntent}"\nFollow these instructions precisely — copy only what is specified above from the reference, and compose everything else fresh based on the details below. Do NOT copy the reference thumbnail's person, face, or text content.\n` : ""}
|
|
152
65
|
=== PRESERVE EXACTLY — DO NOT CHANGE THESE ===
|
|
153
|
-
- Face: exact facial structure, bone structure, skin tone, eye color, eyebrows, nose shape, mouth shape, jawline — NON-NEGOTIABLE
|
|
66
|
+
- Face: exact facial structure, bone structure, skin tone, eye color, eyebrows, nose shape, mouth shape, jawline — this is NON-NEGOTIABLE
|
|
154
67
|
- Hair: exact color, length, texture, and style
|
|
155
68
|
- Any accessories already visible (glasses, earrings, jewelry, etc.)
|
|
156
69
|
- Approximate body position and pose from the original photo
|
|
@@ -169,7 +82,7 @@ ${mood ? `Overall mood/vibe: ${mood}` : ""}
|
|
|
169
82
|
|
|
170
83
|
=== ADD ===
|
|
171
84
|
Text overlay: "${textOverlay}" — massive bold block letters (Impact or Bebas Neue), ${textColor} fill, thick black outline 4–5px, hard drop shadow offset bottom-right. Place text ${textPosition} of image. Text must be readable at 320×180px (small thumbnail size).
|
|
172
|
-
Composition: person fills 60–70% of frame, positioned to leave clear negative space for the text. Face is the undisputed focal point.
|
|
85
|
+
Composition: person fills 60–70% of frame, positioned to leave clear negative space for the text. Face is the undisputed focal point of the entire image.
|
|
173
86
|
|
|
174
87
|
=== OUTPUT REQUIREMENTS ===
|
|
175
88
|
- Dimensions: exactly 1280×720 pixels (16:9 widescreen)
|
|
@@ -202,17 +115,62 @@ Requirements:
|
|
|
202
115
|
- Text must be large and immediately readable at 320×180px
|
|
203
116
|
- Do NOT add watermarks, borders, or decorative frames`;
|
|
204
117
|
}
|
|
118
|
+
// ─── Gemini image call ────────────────────────────────────────────────────────
|
|
119
|
+
async function generateImage(prompt, imageBase64, imageMimeType, refBase64, refMimeType) {
|
|
120
|
+
const genAI = new GoogleGenerativeAI(GEMINI_API_KEY);
|
|
121
|
+
const model = genAI.getGenerativeModel({
|
|
122
|
+
model: IMAGE_MODEL,
|
|
123
|
+
generationConfig: {
|
|
124
|
+
// @ts-expect-error — responseModalities not yet in types
|
|
125
|
+
responseModalities: ["Text", "Image"],
|
|
126
|
+
},
|
|
127
|
+
});
|
|
128
|
+
const parts = [];
|
|
129
|
+
if (imageBase64 && imageMimeType) {
|
|
130
|
+
parts.push({
|
|
131
|
+
inlineData: { data: imageBase64, mimeType: imageMimeType },
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
if (refBase64 && refMimeType) {
|
|
135
|
+
parts.push({
|
|
136
|
+
inlineData: { data: refBase64, mimeType: refMimeType },
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
parts.push({ text: prompt });
|
|
140
|
+
const result = await model.generateContent(parts);
|
|
141
|
+
const response = result.response;
|
|
142
|
+
for (const part of response.candidates?.[0]?.content?.parts ?? []) {
|
|
143
|
+
if (part.inlineData?.data) {
|
|
144
|
+
return {
|
|
145
|
+
base64: part.inlineData.data,
|
|
146
|
+
mimeType: part.inlineData.mimeType ?? "image/png",
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
throw new Error("Gemini returned no image. Check your API key and billing.");
|
|
151
|
+
}
|
|
205
152
|
// ─── Path resolver ────────────────────────────────────────────────────────────
|
|
153
|
+
// Accepts a full absolute path or just a filename (resolved to ~/Desktop).
|
|
154
|
+
// When the exact filename isn't found, falls back to fuzzy matching against
|
|
155
|
+
// Desktop contents — handles Claude Desktop's habit of normalizing special
|
|
156
|
+
// characters (spaces, parentheses, etc.) to underscores when reporting filenames.
|
|
206
157
|
function resolveImagePath(input) {
|
|
207
158
|
if (path.isAbsolute(input)) {
|
|
159
|
+
// If the absolute path exists (e.g. a real local path), use it directly.
|
|
208
160
|
if (fs.existsSync(input))
|
|
209
161
|
return input;
|
|
162
|
+
// Otherwise it's likely Claude Desktop's internal upload staging path
|
|
163
|
+
// (e.g. /mnt/user-data/uploads/photo.jpg) which the native MCP process
|
|
164
|
+
// cannot access. Fall back to Desktop resolution using just the filename.
|
|
210
165
|
return resolveImagePath(path.basename(input));
|
|
211
166
|
}
|
|
212
167
|
const desktop = path.join(os.homedir(), "Desktop");
|
|
213
168
|
const exact = path.join(desktop, input);
|
|
214
169
|
if (fs.existsSync(exact))
|
|
215
170
|
return exact;
|
|
171
|
+
// Normalize a filename for fuzzy comparison:
|
|
172
|
+
// lowercase, collapse any run of non-alphanumeric chars to a single underscore,
|
|
173
|
+
// strip leading/trailing underscores.
|
|
216
174
|
const normalize = (s) => s.toLowerCase().replace(/[^a-z0-9]+/g, "_").replace(/^_+|_+$/g, "");
|
|
217
175
|
const inputExt = path.extname(input).toLowerCase();
|
|
218
176
|
const inputBase = normalize(path.basename(input, path.extname(input)));
|
|
@@ -230,15 +188,30 @@ function resolveImagePath(input) {
|
|
|
230
188
|
if (matches.length === 1)
|
|
231
189
|
return path.join(desktop, matches[0]);
|
|
232
190
|
if (matches.length > 1) {
|
|
191
|
+
// Ambiguous — throw so the caller surfaces a clear error rather than picking silently
|
|
233
192
|
throw new Error(`Multiple files on your Desktop match "${input}": ${matches.join(", ")}. ` +
|
|
234
193
|
`Please rename the one you want to use so it has a unique name, then try again.`);
|
|
235
194
|
}
|
|
236
195
|
}
|
|
237
196
|
catch (err) {
|
|
197
|
+
// Re-throw ambiguity errors; swallow readdirSync failures
|
|
238
198
|
if (err instanceof Error && err.message.includes("Multiple files"))
|
|
239
199
|
throw err;
|
|
240
200
|
}
|
|
241
|
-
return exact;
|
|
201
|
+
return exact; // return original path so the error message is meaningful
|
|
202
|
+
}
|
|
203
|
+
// ─── Save to desktop ──────────────────────────────────────────────────────────
|
|
204
|
+
function saveToDesktop(base64, mimeType) {
|
|
205
|
+
const ext = mimeType.split("/")[1] ?? "png";
|
|
206
|
+
const timestamp = new Date()
|
|
207
|
+
.toISOString()
|
|
208
|
+
.replace(/[:.]/g, "-")
|
|
209
|
+
.slice(0, 19);
|
|
210
|
+
const filename = `thumbnail-${timestamp}.${ext}`;
|
|
211
|
+
const desktop = path.join(os.homedir(), "Desktop");
|
|
212
|
+
const outPath = path.join(desktop, filename);
|
|
213
|
+
fs.writeFileSync(outPath, Buffer.from(base64, "base64"));
|
|
214
|
+
return outPath;
|
|
242
215
|
}
|
|
243
216
|
// ─── MCP Server ───────────────────────────────────────────────────────────────
|
|
244
217
|
const server = new Server({ name: "thumbnail-generator", version: "1.0.0" }, { capabilities: { tools: {} } });
|
|
@@ -246,70 +219,70 @@ server.setRequestHandler(ListToolsRequestSchema, async () => ({
|
|
|
246
219
|
tools: [
|
|
247
220
|
{
|
|
248
221
|
name: "generate_thumbnail",
|
|
249
|
-
description: `Generates a YouTube thumbnail via
|
|
222
|
+
description: `Generates a YouTube thumbnail via Gemini and saves it to the user's Desktop. Called by the youtube-thumbnail-generator skill after the full intake conversation is complete. Do not call this tool directly — use the skill to collect all parameters first.`,
|
|
250
223
|
inputSchema: {
|
|
251
224
|
type: "object",
|
|
252
225
|
properties: {
|
|
253
226
|
background: {
|
|
254
227
|
type: "string",
|
|
255
|
-
description: "Cinematic, specific background description. Must include scene details, colors, time of day, and mood.",
|
|
228
|
+
description: "Cinematic, specific background description. Must include scene details, colors, time of day, and mood. Not just 'dark' — e.g. 'Dark luxury office at night, single desk lamp casting a warm pool of light, blurred city skyline visible through rain-streaked windows behind me'",
|
|
256
229
|
},
|
|
257
230
|
text_overlay: {
|
|
258
231
|
type: "string",
|
|
259
|
-
description: "The exact text to display on the thumbnail. Short
|
|
232
|
+
description: "The exact text to display on the thumbnail in massive bold letters. Short and punchy — 2–5 words, ALL CAPS (e.g. 'I LOST EVERYTHING', 'STEAL THIS FROM ME', '$10K IN 30 DAYS')",
|
|
260
233
|
},
|
|
261
234
|
text_position: {
|
|
262
235
|
type: "string",
|
|
263
236
|
enum: ["left", "right", "top", "bottom", "top-left", "top-right", "bottom-left", "bottom-right"],
|
|
264
|
-
description: "Where to place the text overlay
|
|
237
|
+
description: "Where to place the text overlay — choose based on where the person is NOT positioned to avoid overlap",
|
|
265
238
|
default: "left",
|
|
266
239
|
},
|
|
267
240
|
text_color: {
|
|
268
241
|
type: "string",
|
|
269
|
-
description: "Text color
|
|
242
|
+
description: "Text color. 'white' is most readable, 'yellow' pops on dark backgrounds, 'red' creates urgency. Always paired with a thick black outline.",
|
|
270
243
|
default: "white",
|
|
271
244
|
},
|
|
272
245
|
photo_path: {
|
|
273
246
|
type: "string",
|
|
274
|
-
description: "
|
|
247
|
+
description: "Absolute file path to the selfie/photo to use as the base image (e.g. /Users/jordan/Desktop/selfie.jpg). If omitted, Gemini generates the subject from subject_description.",
|
|
275
248
|
},
|
|
276
249
|
subject_description: {
|
|
277
250
|
type: "string",
|
|
278
|
-
description: "
|
|
251
|
+
description: "Only when photo_path is omitted. Describe the person and their expression in detail (e.g. 'professional man in his 30s, dark stubble, wearing a navy suit, jaw dropped in shock, eyes wide open, pointing at camera').",
|
|
279
252
|
},
|
|
280
253
|
expression: {
|
|
281
254
|
type: "string",
|
|
282
|
-
description: "The expression to apply or intensify. Be very specific.",
|
|
255
|
+
description: "The expression to apply or intensify on the person's face. Be very specific — Gemini performs better with explicit direction (e.g. 'jaw dropped, eyes wide, eyebrows raised as high as possible', 'huge grin, teeth showing, eyebrows up', 'disgusted face, nose wrinkled, one eyebrow raised')",
|
|
283
256
|
},
|
|
284
257
|
lighting_style: {
|
|
285
258
|
type: "string",
|
|
286
259
|
enum: ["dramatic", "bright", "moody", "natural"],
|
|
287
|
-
description: "Lighting mood: dramatic (default), bright, moody,
|
|
260
|
+
description: "Lighting mood: 'dramatic' = cinematic rim light + high contrast (default, best for most thumbnails), 'bright' = clean even studio light, 'moody' = low-key one-sided, 'natural' = soft daylight",
|
|
288
261
|
default: "dramatic",
|
|
289
262
|
},
|
|
290
263
|
mood: {
|
|
291
264
|
type: "string",
|
|
292
|
-
description: "Optional overall vibe description.",
|
|
265
|
+
description: "Optional overall vibe description to guide Gemini's artistic choices (e.g. 'high-stakes and urgent', 'aspirational and premium', 'shocking and alarming', 'confident and authoritative')",
|
|
293
266
|
},
|
|
294
267
|
video_topic: {
|
|
295
268
|
type: "string",
|
|
296
|
-
description: "The video title or topic.",
|
|
269
|
+
description: "The video title or topic — helps Gemini make contextually appropriate decisions about composition and mood (e.g. 'How I made $10k in one month dropshipping', 'I quit my corporate job — here is what happened')",
|
|
297
270
|
},
|
|
298
271
|
style_reference_path: {
|
|
299
272
|
type: "string",
|
|
300
|
-
description: "
|
|
273
|
+
description: "Optional. Absolute path to a reference thumbnail image. Must be paired with style_reference_intent — do not pass this without also passing style_reference_intent.",
|
|
301
274
|
},
|
|
302
275
|
style_reference_intent: {
|
|
303
276
|
type: "string",
|
|
304
|
-
description: "Required when style_reference_path is provided. Plain-language description of exactly what to copy from the reference.",
|
|
277
|
+
description: "Required when style_reference_path is provided. Plain-language description of exactly what to copy from the reference and what to leave fresh. Ranges from narrow ('copy only the text style: bold yellow Impact letters with black outline on the right') to complete ('exact copy of the full layout — person left, dark background with orange glow, yellow text right — swap in user face and new text'). This is derived from a conversation with the user about what they want from the reference.",
|
|
305
278
|
},
|
|
306
279
|
outfit_change: {
|
|
307
280
|
type: "string",
|
|
308
|
-
description: "Optional outfit to swap onto the person
|
|
281
|
+
description: "Optional outfit to swap onto the person in photo mode (e.g. 'dark navy slim-fit suit, no tie, white shirt', 'casual grey hoodie, relaxed fit'). Omit to keep original outfit.",
|
|
309
282
|
},
|
|
310
283
|
variations: {
|
|
311
284
|
type: "number",
|
|
312
|
-
description: "Number of variations to generate (1–4). Default 1.",
|
|
285
|
+
description: "Number of variations to generate (1–4). Default 1. Use 2–3 for A/B testing.",
|
|
313
286
|
minimum: 1,
|
|
314
287
|
maximum: 4,
|
|
315
288
|
default: 1,
|
|
@@ -322,11 +295,9 @@ server.setRequestHandler(ListToolsRequestSchema, async () => ({
|
|
|
322
295
|
}));
|
|
323
296
|
server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
324
297
|
if (request.params.name !== "generate_thumbnail") {
|
|
325
|
-
return {
|
|
326
|
-
content: [{ type: "text", text: `Unknown tool: ${request.params.name}` }],
|
|
327
|
-
isError: true,
|
|
328
|
-
};
|
|
298
|
+
return { content: [{ type: "text", text: `Unknown tool: ${request.params.name}` }], isError: true };
|
|
329
299
|
}
|
|
300
|
+
// Validate license (cached after first call)
|
|
330
301
|
try {
|
|
331
302
|
await validateLicense();
|
|
332
303
|
}
|
|
@@ -344,100 +315,59 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
344
315
|
isError: true,
|
|
345
316
|
};
|
|
346
317
|
}
|
|
318
|
+
const savedPaths = [];
|
|
347
319
|
const count = Math.min(Math.max(Math.floor(variations), 1), 4);
|
|
348
|
-
//
|
|
349
|
-
let
|
|
350
|
-
let
|
|
351
|
-
if (photo_path) {
|
|
352
|
-
const resolvedPath = resolveImagePath(photo_path);
|
|
353
|
-
try {
|
|
354
|
-
photoUrl = await uploadImageForUrl(resolvedPath);
|
|
355
|
-
}
|
|
356
|
-
catch (err) {
|
|
357
|
-
return {
|
|
358
|
-
content: [{ type: "text", text: `Could not upload selfie: ${err instanceof Error ? err.message : err}` }],
|
|
359
|
-
isError: true,
|
|
360
|
-
};
|
|
361
|
-
}
|
|
362
|
-
}
|
|
320
|
+
// Load reference photo once outside the loop — same for all variations
|
|
321
|
+
let refBase64;
|
|
322
|
+
let refMimeType;
|
|
363
323
|
if (style_reference_path) {
|
|
364
324
|
const resolvedRefPath = resolveImagePath(style_reference_path);
|
|
365
325
|
try {
|
|
366
|
-
|
|
326
|
+
const buf = fs.readFileSync(resolvedRefPath);
|
|
327
|
+
refBase64 = buf.toString("base64");
|
|
328
|
+
const ext = path.extname(resolvedRefPath).toLowerCase().replace(".", "");
|
|
329
|
+
refMimeType = ext === "jpg" ? "image/jpeg" : ext === "png" ? "image/png" : "image/jpeg";
|
|
367
330
|
}
|
|
368
331
|
catch (err) {
|
|
369
332
|
return {
|
|
370
|
-
content: [{ type: "text", text: `Could not
|
|
333
|
+
content: [{ type: "text", text: `Could not read style reference thumbnail at ${resolvedRefPath}: ${err instanceof Error ? err.message : err}` }],
|
|
371
334
|
isError: true,
|
|
372
335
|
};
|
|
373
336
|
}
|
|
374
337
|
}
|
|
375
|
-
// Image order: selfie first, reference second
|
|
376
|
-
const imageUrls = [];
|
|
377
|
-
if (photoUrl)
|
|
378
|
-
imageUrls.push(photoUrl);
|
|
379
|
-
if (referenceUrl)
|
|
380
|
-
imageUrls.push(referenceUrl);
|
|
381
|
-
const prompt = photo_path
|
|
382
|
-
? buildPhotoEditPrompt({
|
|
383
|
-
background,
|
|
384
|
-
textOverlay: text_overlay,
|
|
385
|
-
textPosition: text_position,
|
|
386
|
-
textColor: text_color,
|
|
387
|
-
hasReference: !!referenceUrl,
|
|
388
|
-
outfitChange: outfit_change,
|
|
389
|
-
expression,
|
|
390
|
-
lightingStyle: lighting_style,
|
|
391
|
-
mood,
|
|
392
|
-
videoTopic: video_topic,
|
|
393
|
-
styleReferenceIntent: referenceUrl ? style_reference_intent : undefined,
|
|
394
|
-
})
|
|
395
|
-
: buildTextOnlyPrompt({
|
|
396
|
-
subject: subject_description,
|
|
397
|
-
background,
|
|
398
|
-
textOverlay: text_overlay,
|
|
399
|
-
textPosition: text_position,
|
|
400
|
-
textColor: text_color,
|
|
401
|
-
lightingStyle: lighting_style,
|
|
402
|
-
mood,
|
|
403
|
-
videoTopic: video_topic,
|
|
404
|
-
});
|
|
405
|
-
// Create all variation tasks, then poll them sequentially
|
|
406
|
-
const taskIds = [];
|
|
407
338
|
for (let i = 0; i < count; i++) {
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
}
|
|
425
|
-
catch (err) {
|
|
426
|
-
return {
|
|
427
|
-
content: [{ type: "text", text: `kie.ai error: ${err instanceof Error ? err.message : err}` }],
|
|
428
|
-
isError: true,
|
|
429
|
-
};
|
|
339
|
+
let imageBase64;
|
|
340
|
+
let imageMimeType;
|
|
341
|
+
if (photo_path) {
|
|
342
|
+
const resolvedPhotoPath = resolveImagePath(photo_path);
|
|
343
|
+
try {
|
|
344
|
+
const buf = fs.readFileSync(resolvedPhotoPath);
|
|
345
|
+
imageBase64 = buf.toString("base64");
|
|
346
|
+
const ext = path.extname(resolvedPhotoPath).toLowerCase().replace(".", "");
|
|
347
|
+
imageMimeType = ext === "jpg" ? "image/jpeg" : ext === "png" ? "image/png" : "image/jpeg";
|
|
348
|
+
}
|
|
349
|
+
catch (err) {
|
|
350
|
+
return {
|
|
351
|
+
content: [{ type: "text", text: `Could not read photo at ${resolvedPhotoPath}: ${err instanceof Error ? err.message : err}` }],
|
|
352
|
+
isError: true,
|
|
353
|
+
};
|
|
354
|
+
}
|
|
430
355
|
}
|
|
356
|
+
const prompt = photo_path
|
|
357
|
+
? buildPhotoEditPrompt({ background, textOverlay: text_overlay, textPosition: text_position, textColor: text_color, outfitChange: outfit_change, expression, lightingStyle: lighting_style, mood, videoTopic: video_topic, styleReferenceIntent: refBase64 ? style_reference_intent : undefined })
|
|
358
|
+
: buildTextOnlyPrompt({ subject: subject_description, background, textOverlay: text_overlay, textPosition: text_position, textColor: text_color, lightingStyle: lighting_style, mood, videoTopic: video_topic });
|
|
359
|
+
let result;
|
|
431
360
|
try {
|
|
432
|
-
|
|
433
|
-
savedPaths.push(savedPath);
|
|
361
|
+
result = await generateImage(prompt, imageBase64, imageMimeType, refBase64, refMimeType);
|
|
434
362
|
}
|
|
435
363
|
catch (err) {
|
|
436
364
|
return {
|
|
437
|
-
content: [{ type: "text", text: `
|
|
365
|
+
content: [{ type: "text", text: `Gemini error: ${err instanceof Error ? err.message : err}` }],
|
|
438
366
|
isError: true,
|
|
439
367
|
};
|
|
440
368
|
}
|
|
369
|
+
const savedPath = saveToDesktop(result.base64, result.mimeType);
|
|
370
|
+
savedPaths.push(savedPath);
|
|
441
371
|
}
|
|
442
372
|
const pathList = savedPaths.map((p) => `• ${p}`).join("\n");
|
|
443
373
|
return {
|
|
@@ -453,11 +383,12 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
453
383
|
async function main() {
|
|
454
384
|
if (!LICENSE_KEY) {
|
|
455
385
|
console.error("ERROR: LICENSE_KEY environment variable is not set.");
|
|
386
|
+
console.error("Add it to your Claude Desktop config under the thumbnail-generator mcpServer env block.");
|
|
456
387
|
process.exit(1);
|
|
457
388
|
}
|
|
458
|
-
if (!
|
|
459
|
-
console.error("ERROR:
|
|
460
|
-
console.error("Get
|
|
389
|
+
if (!GEMINI_API_KEY) {
|
|
390
|
+
console.error("ERROR: GEMINI_API_KEY environment variable is not set.");
|
|
391
|
+
console.error("Get a free key at https://aistudio.google.com/app/apikey");
|
|
461
392
|
process.exit(1);
|
|
462
393
|
}
|
|
463
394
|
const transport = new StdioServerTransport();
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "thumbnail-generator-mcp",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.18",
|
|
4
4
|
"description": "YouTube thumbnail generator MCP server for Claude Desktop",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
"start": "node dist/index.js"
|
|
14
14
|
},
|
|
15
15
|
"dependencies": {
|
|
16
|
+
"@google/generative-ai": "^0.21.0",
|
|
16
17
|
"@modelcontextprotocol/sdk": "^1.0.0",
|
|
17
18
|
"node-machine-id": "^1.1.12"
|
|
18
19
|
},
|