@ulmeanua/kie-mcp 0.1.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 (52) hide show
  1. package/INSTALL.md +159 -0
  2. package/LICENSE +21 -0
  3. package/README.md +128 -0
  4. package/dist/client.d.ts +14 -0
  5. package/dist/client.d.ts.map +1 -0
  6. package/dist/client.js +115 -0
  7. package/dist/client.js.map +1 -0
  8. package/dist/config.d.ts +12 -0
  9. package/dist/config.d.ts.map +1 -0
  10. package/dist/config.js +42 -0
  11. package/dist/config.js.map +1 -0
  12. package/dist/downloader.d.ts +15 -0
  13. package/dist/downloader.d.ts.map +1 -0
  14. package/dist/downloader.js +87 -0
  15. package/dist/downloader.js.map +1 -0
  16. package/dist/endpoints.d.ts +8 -0
  17. package/dist/endpoints.d.ts.map +1 -0
  18. package/dist/endpoints.js +183 -0
  19. package/dist/endpoints.js.map +1 -0
  20. package/dist/index.d.ts +4 -0
  21. package/dist/index.d.ts.map +1 -0
  22. package/dist/index.js +25 -0
  23. package/dist/index.js.map +1 -0
  24. package/dist/poller.d.ts +10 -0
  25. package/dist/poller.d.ts.map +1 -0
  26. package/dist/poller.js +44 -0
  27. package/dist/poller.js.map +1 -0
  28. package/dist/registry.d.ts +5 -0
  29. package/dist/registry.d.ts.map +1 -0
  30. package/dist/registry.js +271 -0
  31. package/dist/registry.js.map +1 -0
  32. package/dist/server.d.ts +10 -0
  33. package/dist/server.d.ts.map +1 -0
  34. package/dist/server.js +57 -0
  35. package/dist/server.js.map +1 -0
  36. package/dist/store.d.ts +36 -0
  37. package/dist/store.d.ts.map +1 -0
  38. package/dist/store.js +108 -0
  39. package/dist/store.js.map +1 -0
  40. package/dist/tools.d.ts +14 -0
  41. package/dist/tools.d.ts.map +1 -0
  42. package/dist/tools.js +446 -0
  43. package/dist/tools.js.map +1 -0
  44. package/dist/types.d.ts +54 -0
  45. package/dist/types.d.ts.map +1 -0
  46. package/dist/types.js +24 -0
  47. package/dist/types.js.map +1 -0
  48. package/dist/version.d.ts +3 -0
  49. package/dist/version.d.ts.map +1 -0
  50. package/dist/version.js +3 -0
  51. package/dist/version.js.map +1 -0
  52. package/package.json +63 -0
package/dist/tools.js ADDED
@@ -0,0 +1,446 @@
1
+ import { z } from 'zod';
2
+ import { pollUntilTerminal } from './poller.js';
3
+ import { hashIdempotency } from './store.js';
4
+ import { getEndpointFor, listModelsByKind, MODEL_REGISTRY } from './registry.js';
5
+ function modelListFor(kind) {
6
+ return listModelsByKind(kind)
7
+ .map((m) => `${m.id} — ${m.description}`)
8
+ .join(' | ');
9
+ }
10
+ async function executeSubmission(ctx, spec, validatedInput, callBackUrl, wait, download) {
11
+ const idempotencyKey = hashIdempotency(spec.id, validatedInput);
12
+ const existing = ctx.store.findByIdempotencyKey(idempotencyKey);
13
+ if (existing && existing.state === 'success' && download) {
14
+ return {
15
+ task_id: existing.task_id,
16
+ model: existing.model,
17
+ kind: spec.kind,
18
+ endpoint_family: existing.family,
19
+ estimated_cost_usd: existing.cost_usd ?? 0,
20
+ state: existing.state,
21
+ result_urls: safeParseArray(existing.result_urls),
22
+ asset_paths: safeParseArray(existing.asset_paths),
23
+ cost_usd: existing.cost_usd ?? undefined,
24
+ cache_hit: true,
25
+ };
26
+ }
27
+ const endpoint = getEndpointFor(spec);
28
+ const estimatedCost = Number(spec.estimateCostUsd(validatedInput).toFixed(4));
29
+ if (ctx.config.costBudgetUsd !== null) {
30
+ const sessionStartHint = Date.now() - 24 * 60 * 60 * 1000;
31
+ const spent = ctx.store.totalCostUsd(sessionStartHint);
32
+ if (spent + estimatedCost > ctx.config.costBudgetUsd) {
33
+ throw new Error(`cost budget exceeded: spent $${spent.toFixed(2)} + estimate $${estimatedCost.toFixed(2)} > budget $${ctx.config.costBudgetUsd.toFixed(2)}`);
34
+ }
35
+ }
36
+ const { taskId } = await ctx.client.createTask(endpoint, spec.id, validatedInput, callBackUrl, { idempotencyKey });
37
+ ctx.store.insert({
38
+ task_id: taskId,
39
+ model: spec.id,
40
+ family: spec.family,
41
+ state: 'waiting',
42
+ result_urls: '[]',
43
+ asset_paths: '[]',
44
+ credits_consumed: null,
45
+ cost_usd: estimatedCost,
46
+ error_code: null,
47
+ error_message: null,
48
+ idempotency_key: idempotencyKey,
49
+ });
50
+ if (!wait) {
51
+ return {
52
+ task_id: taskId,
53
+ model: spec.id,
54
+ kind: spec.kind,
55
+ endpoint_family: spec.family,
56
+ estimated_cost_usd: estimatedCost,
57
+ state: 'waiting',
58
+ status_hint: `Call kie_wait or kie_status with task_id="${taskId}" + model="${spec.id}" to retrieve.`,
59
+ };
60
+ }
61
+ const finalStatus = await pollUntilTerminal(ctx.client, endpoint, taskId, {
62
+ intervalMs: ctx.config.pollIntervalMs,
63
+ maxMs: ctx.config.pollMaxMs,
64
+ });
65
+ return finalize(ctx, spec, taskId, estimatedCost, finalStatus, download);
66
+ }
67
+ async function finalize(ctx, spec, taskId, estimatedCost, status, download) {
68
+ let assetPaths = [];
69
+ if (download && status.state === 'success' && status.resultUrls.length) {
70
+ const results = await ctx.downloader.downloadAll(status.resultUrls, taskId);
71
+ assetPaths = results.map((r) => r.path);
72
+ }
73
+ const finalCostUsd = typeof status.creditsConsumed === 'number'
74
+ ? Number((status.creditsConsumed * 0.005).toFixed(4))
75
+ : estimatedCost;
76
+ ctx.store.update(taskId, {
77
+ state: status.state,
78
+ result_urls: JSON.stringify(status.resultUrls),
79
+ asset_paths: JSON.stringify(assetPaths),
80
+ credits_consumed: status.creditsConsumed ?? null,
81
+ cost_usd: finalCostUsd,
82
+ error_code: status.errorCode ?? null,
83
+ error_message: status.errorMessage ?? null,
84
+ });
85
+ return {
86
+ task_id: taskId,
87
+ model: spec.id,
88
+ kind: spec.kind,
89
+ endpoint_family: spec.family,
90
+ estimated_cost_usd: estimatedCost,
91
+ state: status.state,
92
+ result_urls: status.resultUrls,
93
+ asset_paths: assetPaths,
94
+ credits_consumed: status.creditsConsumed,
95
+ cost_usd: finalCostUsd,
96
+ cost_time_ms: status.costTimeMs,
97
+ error: status.errorMessage
98
+ ? { code: status.errorCode, message: status.errorMessage }
99
+ : undefined,
100
+ };
101
+ }
102
+ function safeParseArray(json) {
103
+ try {
104
+ const v = JSON.parse(json);
105
+ return Array.isArray(v) ? v.filter((x) => typeof x === 'string') : [];
106
+ }
107
+ catch {
108
+ return [];
109
+ }
110
+ }
111
+ function buildSubmitTool(name, kindLabel, acceptedKinds, ctx) {
112
+ const acceptedModels = Object.values(MODEL_REGISTRY).filter((m) => acceptedKinds.includes(m.kind));
113
+ const modelIds = acceptedModels.map((m) => m.id);
114
+ const hintModels = modelListFor(acceptedKinds[0]);
115
+ return {
116
+ name,
117
+ description: `Generate ${kindLabel} via kie.ai. By default waits for the task to finish and downloads the asset locally; returns asset_paths. Set wait:false for async (returns task_id only). Models: ${hintModels}`,
118
+ inputSchema: {
119
+ type: 'object',
120
+ properties: {
121
+ model: { type: 'string', enum: modelIds },
122
+ input: {
123
+ type: 'object',
124
+ description: 'Model-specific input. See kie.ai docs for fields per model.',
125
+ },
126
+ wait: {
127
+ type: 'boolean',
128
+ description: 'If true (default), poll until success/fail and download asset.',
129
+ default: true,
130
+ },
131
+ download: {
132
+ type: 'boolean',
133
+ description: 'If true (default), download result URLs to KIE_OUTPUT_DIR.',
134
+ default: true,
135
+ },
136
+ callBackUrl: { type: 'string', format: 'uri' },
137
+ },
138
+ required: ['model', 'input'],
139
+ additionalProperties: false,
140
+ },
141
+ async handle(args) {
142
+ const parsed = z
143
+ .object({
144
+ model: z.string().min(1),
145
+ input: z.record(z.unknown()),
146
+ wait: z.boolean().optional().default(true),
147
+ download: z.boolean().optional().default(true),
148
+ callBackUrl: z.string().url().optional(),
149
+ })
150
+ .parse(args);
151
+ const spec = MODEL_REGISTRY[parsed.model];
152
+ if (!spec)
153
+ throw new Error(`unknown model: ${parsed.model}`);
154
+ if (!acceptedKinds.includes(spec.kind)) {
155
+ throw new Error(`model ${parsed.model} is kind=${spec.kind}, not accepted by ${name} (expects ${acceptedKinds.join('|')})`);
156
+ }
157
+ const validatedInput = spec.inputSchema.parse(parsed.input);
158
+ return executeSubmission(ctx, spec, validatedInput, parsed.callBackUrl, parsed.wait, parsed.download);
159
+ },
160
+ };
161
+ }
162
+ function buildStatusTool(ctx) {
163
+ return {
164
+ name: 'kie_status',
165
+ description: 'Get current status of a kie.ai task by id (does not wait).',
166
+ inputSchema: {
167
+ type: 'object',
168
+ properties: {
169
+ task_id: { type: 'string', minLength: 1 },
170
+ model: { type: 'string', enum: Object.keys(MODEL_REGISTRY) },
171
+ },
172
+ required: ['task_id', 'model'],
173
+ additionalProperties: false,
174
+ },
175
+ async handle(args) {
176
+ const parsed = z
177
+ .object({ task_id: z.string().min(1), model: z.string().min(1) })
178
+ .parse(args);
179
+ const spec = MODEL_REGISTRY[parsed.model];
180
+ if (!spec)
181
+ throw new Error(`unknown model: ${parsed.model}`);
182
+ const endpoint = getEndpointFor(spec);
183
+ const status = await ctx.client.getTaskStatus(endpoint, parsed.task_id);
184
+ return {
185
+ task_id: status.taskId,
186
+ state: status.state,
187
+ result_urls: status.resultUrls,
188
+ credits_consumed: status.creditsConsumed,
189
+ cost_time_ms: status.costTimeMs,
190
+ error: status.errorMessage
191
+ ? { code: status.errorCode, message: status.errorMessage }
192
+ : undefined,
193
+ };
194
+ },
195
+ };
196
+ }
197
+ function buildWaitTool(ctx) {
198
+ return {
199
+ name: 'kie_wait',
200
+ description: 'Wait for an existing kie.ai task to reach a terminal state (success/fail). Downloads asset if successful. Use when you submitted with wait:false and want to retrieve later.',
201
+ inputSchema: {
202
+ type: 'object',
203
+ properties: {
204
+ task_id: { type: 'string', minLength: 1 },
205
+ model: { type: 'string', enum: Object.keys(MODEL_REGISTRY) },
206
+ download: { type: 'boolean', default: true },
207
+ timeout_ms: { type: 'number', minimum: 1000 },
208
+ },
209
+ required: ['task_id', 'model'],
210
+ additionalProperties: false,
211
+ },
212
+ async handle(args) {
213
+ const parsed = z
214
+ .object({
215
+ task_id: z.string().min(1),
216
+ model: z.string().min(1),
217
+ download: z.boolean().optional().default(true),
218
+ timeout_ms: z.number().int().positive().optional(),
219
+ })
220
+ .parse(args);
221
+ const spec = MODEL_REGISTRY[parsed.model];
222
+ if (!spec)
223
+ throw new Error(`unknown model: ${parsed.model}`);
224
+ const endpoint = getEndpointFor(spec);
225
+ const finalStatus = await pollUntilTerminal(ctx.client, endpoint, parsed.task_id, {
226
+ intervalMs: ctx.config.pollIntervalMs,
227
+ maxMs: parsed.timeout_ms ?? ctx.config.pollMaxMs,
228
+ });
229
+ const existing = ctx.store.get(parsed.task_id);
230
+ const estimatedCost = existing?.cost_usd ?? 0;
231
+ return finalize(ctx, spec, parsed.task_id, estimatedCost, finalStatus, parsed.download);
232
+ },
233
+ };
234
+ }
235
+ function buildAssetsTool(ctx) {
236
+ return {
237
+ name: 'kie_assets',
238
+ description: 'List downloaded kie.ai assets. Optional filters by model or state. Returns task_id, model, state, asset_paths, cost.',
239
+ inputSchema: {
240
+ type: 'object',
241
+ properties: {
242
+ model: { type: 'string', enum: Object.keys(MODEL_REGISTRY) },
243
+ state: { type: 'string', enum: ['waiting', 'queueing', 'generating', 'success', 'fail'] },
244
+ limit: { type: 'number', minimum: 1, maximum: 500, default: 50 },
245
+ },
246
+ additionalProperties: false,
247
+ },
248
+ async handle(args) {
249
+ const parsed = z
250
+ .object({
251
+ model: z.string().optional(),
252
+ state: z.enum(['waiting', 'queueing', 'generating', 'success', 'fail']).optional(),
253
+ limit: z.number().int().min(1).max(500).optional().default(50),
254
+ })
255
+ .parse(args);
256
+ const rows = ctx.store.list({ state: parsed.state, limit: parsed.limit });
257
+ const filtered = parsed.model ? rows.filter((r) => r.model === parsed.model) : rows;
258
+ return filtered.map((r) => ({
259
+ task_id: r.task_id,
260
+ model: r.model,
261
+ family: r.family,
262
+ state: r.state,
263
+ result_urls: safeParseArray(r.result_urls),
264
+ asset_paths: safeParseArray(r.asset_paths),
265
+ credits_consumed: r.credits_consumed,
266
+ cost_usd: r.cost_usd,
267
+ created_at: new Date(r.created_at).toISOString(),
268
+ updated_at: new Date(r.updated_at).toISOString(),
269
+ error: r.error_message
270
+ ? { code: r.error_code ?? undefined, message: r.error_message }
271
+ : undefined,
272
+ }));
273
+ },
274
+ };
275
+ }
276
+ function buildModelsTool() {
277
+ return {
278
+ name: 'kie_models',
279
+ description: 'List all registered kie.ai models with kind, endpoint family, and description.',
280
+ inputSchema: {
281
+ type: 'object',
282
+ properties: {
283
+ kind: { type: 'string', enum: ['image', 'video', 'music', 'speech', 'sfx'] },
284
+ },
285
+ additionalProperties: false,
286
+ },
287
+ async handle(args) {
288
+ const parsed = z
289
+ .object({ kind: z.enum(['image', 'video', 'music', 'speech', 'sfx']).optional() })
290
+ .parse(args);
291
+ const all = Object.values(MODEL_REGISTRY);
292
+ const filtered = parsed.kind ? all.filter((m) => m.kind === parsed.kind) : all;
293
+ return filtered.map((m) => ({
294
+ id: m.id,
295
+ kind: m.kind,
296
+ family: m.family,
297
+ description: m.description,
298
+ }));
299
+ },
300
+ };
301
+ }
302
+ const COMPARE_CONCURRENCY = 4;
303
+ function buildCompareTool(ctx) {
304
+ return {
305
+ name: 'kie_compare',
306
+ description: 'Run the same prompt across multiple kie.ai models in parallel and return a grid of results. Max 4 concurrent. Useful for "show me Flux vs Nano Banana vs GPT Image 2" style picking.',
307
+ inputSchema: {
308
+ type: 'object',
309
+ properties: {
310
+ prompt: { type: 'string', minLength: 1 },
311
+ models: {
312
+ type: 'array',
313
+ items: { type: 'string', enum: Object.keys(MODEL_REGISTRY) },
314
+ minItems: 2,
315
+ maxItems: 8,
316
+ },
317
+ extra_input: {
318
+ type: 'object',
319
+ description: 'Additional input merged with {prompt} into each model call (e.g. aspect_ratio).',
320
+ },
321
+ wait: { type: 'boolean', default: true },
322
+ download: { type: 'boolean', default: true },
323
+ },
324
+ required: ['prompt', 'models'],
325
+ additionalProperties: false,
326
+ },
327
+ async handle(args) {
328
+ const parsed = z
329
+ .object({
330
+ prompt: z.string().min(1),
331
+ models: z.array(z.string()).min(2).max(8),
332
+ extra_input: z.record(z.unknown()).optional(),
333
+ wait: z.boolean().optional().default(true),
334
+ download: z.boolean().optional().default(true),
335
+ })
336
+ .parse(args);
337
+ const specs = [];
338
+ for (const id of parsed.models) {
339
+ const s = MODEL_REGISTRY[id];
340
+ if (!s)
341
+ throw new Error(`unknown model: ${id}`);
342
+ specs.push(s);
343
+ }
344
+ const kinds = new Set(specs.map((s) => s.kind));
345
+ if (kinds.size > 1) {
346
+ throw new Error(`kie_compare requires all models to share the same kind; got: ${[...kinds].join(', ')}`);
347
+ }
348
+ // Build per-model validated input (each model may accept slightly different param shape)
349
+ const tasks = specs.map((spec) => {
350
+ const rawInput = { prompt: parsed.prompt, ...(parsed.extra_input ?? {}) };
351
+ const validated = safeValidate(spec, rawInput);
352
+ return { spec, validated };
353
+ });
354
+ const results = [];
355
+ for (let i = 0; i < tasks.length; i += COMPARE_CONCURRENCY) {
356
+ const slice = tasks.slice(i, i + COMPARE_CONCURRENCY);
357
+ const settled = await Promise.allSettled(slice.map(({ spec, validated }) => executeSubmission(ctx, spec, validated, undefined, parsed.wait, parsed.download)));
358
+ for (let j = 0; j < settled.length; j++) {
359
+ const r = settled[j];
360
+ const spec = slice[j].spec;
361
+ if (r.status === 'fulfilled') {
362
+ results.push({ ...r.value, model: spec.id, ok: true });
363
+ }
364
+ else {
365
+ results.push({
366
+ model: spec.id,
367
+ ok: false,
368
+ error: r.reason instanceof Error ? r.reason.message : String(r.reason),
369
+ });
370
+ }
371
+ }
372
+ }
373
+ const totalCost = results
374
+ .filter((r) => r.ok)
375
+ .reduce((acc, r) => acc + Number(r.cost_usd ?? 0), 0);
376
+ return {
377
+ prompt: parsed.prompt,
378
+ models_attempted: parsed.models.length,
379
+ models_succeeded: results.filter((r) => r.ok).length,
380
+ total_cost_usd: Number(totalCost.toFixed(4)),
381
+ results,
382
+ };
383
+ },
384
+ };
385
+ }
386
+ function safeValidate(spec, input) {
387
+ try {
388
+ return spec.inputSchema.parse(input);
389
+ }
390
+ catch (err) {
391
+ const msg = err instanceof Error ? err.message : String(err);
392
+ throw new Error(`input invalid for model ${spec.id}: ${msg}`);
393
+ }
394
+ }
395
+ function buildCostReportTool(ctx) {
396
+ return {
397
+ name: 'kie_cost_report',
398
+ description: 'Show cost telemetry. Aggregates total $ spent and per-model breakdown. Optional window in hours.',
399
+ inputSchema: {
400
+ type: 'object',
401
+ properties: {
402
+ hours: {
403
+ type: 'number',
404
+ minimum: 0.1,
405
+ maximum: 8760,
406
+ description: 'Look back N hours. Omit for all-time total.',
407
+ },
408
+ },
409
+ additionalProperties: false,
410
+ },
411
+ async handle(args) {
412
+ const parsed = z.object({ hours: z.number().positive().optional() }).parse(args);
413
+ const sinceMs = parsed.hours ? Date.now() - parsed.hours * 3_600_000 : undefined;
414
+ const total = ctx.store.totalCostUsd(sinceMs);
415
+ const byModel = ctx.store.costByModel(sinceMs);
416
+ return {
417
+ window: parsed.hours ? `last ${parsed.hours}h` : 'all-time',
418
+ total_usd: Number(total.toFixed(4)),
419
+ budget_usd: ctx.config.costBudgetUsd,
420
+ remaining_usd: ctx.config.costBudgetUsd !== null
421
+ ? Number((ctx.config.costBudgetUsd - total).toFixed(4))
422
+ : null,
423
+ by_model: byModel.map((r) => ({
424
+ model: r.model,
425
+ count: r.count,
426
+ total_usd: Number(r.total_usd.toFixed(4)),
427
+ })),
428
+ };
429
+ },
430
+ };
431
+ }
432
+ export function buildKieTools(ctx) {
433
+ return [
434
+ buildSubmitTool('kie_image', 'image', ['image'], ctx),
435
+ buildSubmitTool('kie_video', 'video', ['video'], ctx),
436
+ buildSubmitTool('kie_music', 'music', ['music'], ctx),
437
+ buildSubmitTool('kie_speech', 'speech/sfx', ['speech', 'sfx'], ctx),
438
+ buildCompareTool(ctx),
439
+ buildWaitTool(ctx),
440
+ buildStatusTool(ctx),
441
+ buildAssetsTool(ctx),
442
+ buildCostReportTool(ctx),
443
+ buildModelsTool(),
444
+ ];
445
+ }
446
+ //# sourceMappingURL=tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ import { z } from 'zod';
2
+ export type MediaKind = 'image' | 'video' | 'music' | 'speech' | 'sfx';
3
+ export type EndpointFamily = 'unified' | 'veo' | 'runway' | 'suno' | 'gpt4o' | 'elevenlabs';
4
+ export type TaskState = 'waiting' | 'queueing' | 'generating' | 'success' | 'fail';
5
+ export interface RawKieResponse<T = unknown> {
6
+ code: number;
7
+ msg: string;
8
+ data: T | null;
9
+ }
10
+ export interface CreateTaskResult {
11
+ taskId: string;
12
+ }
13
+ export interface NormalizedTaskStatus {
14
+ taskId: string;
15
+ state: TaskState;
16
+ resultUrls: string[];
17
+ errorCode?: string;
18
+ errorMessage?: string;
19
+ costTimeMs?: number;
20
+ creditsConsumed?: number;
21
+ raw: unknown;
22
+ }
23
+ export interface KieRequestOptions {
24
+ signal?: AbortSignal;
25
+ idempotencyKey?: string;
26
+ }
27
+ export declare const TaskStateZ: z.ZodEnum<["waiting", "queueing", "generating", "success", "fail"]>;
28
+ export declare const HttpVerbZ: z.ZodEnum<["GET", "POST"]>;
29
+ export interface EndpointSpec {
30
+ family: EndpointFamily;
31
+ createPath: string;
32
+ statusPath: (taskId: string) => string;
33
+ buildCreateBody: (model: string, input: Record<string, unknown>, callBackUrl?: string) => unknown;
34
+ parseStatus: (raw: unknown) => NormalizedTaskStatus;
35
+ }
36
+ export interface ModelSpec {
37
+ id: string;
38
+ kind: MediaKind;
39
+ family: EndpointFamily;
40
+ description: string;
41
+ inputSchema: z.ZodTypeAny;
42
+ estimateCostUsd: (input: Record<string, unknown>) => number;
43
+ }
44
+ export declare class KieApiError extends Error {
45
+ readonly status: number;
46
+ readonly code: number | null;
47
+ readonly body?: unknown | undefined;
48
+ constructor(status: number, code: number | null, message: string, body?: unknown | undefined);
49
+ }
50
+ export declare class KieTransientError extends Error {
51
+ readonly cause?: unknown | undefined;
52
+ constructor(message: string, cause?: unknown | undefined);
53
+ }
54
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;AAEvE,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,YAAY,CAAC;AAE5F,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,UAAU,GAAG,YAAY,GAAG,SAAS,GAAG,MAAM,CAAC;AAEnF,MAAM,WAAW,cAAc,CAAC,CAAC,GAAG,OAAO;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,SAAS,CAAC;IACjB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,GAAG,EAAE,OAAO,CAAC;CACd;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,eAAO,MAAM,UAAU,qEAAmE,CAAC;AAE3F,eAAO,MAAM,SAAS,4BAA0B,CAAC;AAEjD,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,cAAc,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;IACvC,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;IAClG,WAAW,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,oBAAoB,CAAC;CACrD;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,cAAc,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,CAAC,CAAC,UAAU,CAAC;IAC1B,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,CAAC;CAC7D;AAED,qBAAa,WAAY,SAAQ,KAAK;aAElB,MAAM,EAAE,MAAM;aACd,IAAI,EAAE,MAAM,GAAG,IAAI;aAEnB,IAAI,CAAC,EAAE,OAAO;gBAHd,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GAAG,IAAI,EACnC,OAAO,EAAE,MAAM,EACC,IAAI,CAAC,EAAE,OAAO,YAAA;CAKjC;AAED,qBAAa,iBAAkB,SAAQ,KAAK;aACG,KAAK,CAAC,EAAE,OAAO;gBAAhD,OAAO,EAAE,MAAM,EAAkB,KAAK,CAAC,EAAE,OAAO,YAAA;CAI7D"}
package/dist/types.js ADDED
@@ -0,0 +1,24 @@
1
+ import { z } from 'zod';
2
+ export const TaskStateZ = z.enum(['waiting', 'queueing', 'generating', 'success', 'fail']);
3
+ export const HttpVerbZ = z.enum(['GET', 'POST']);
4
+ export class KieApiError extends Error {
5
+ status;
6
+ code;
7
+ body;
8
+ constructor(status, code, message, body) {
9
+ super(message);
10
+ this.status = status;
11
+ this.code = code;
12
+ this.body = body;
13
+ this.name = 'KieApiError';
14
+ }
15
+ }
16
+ export class KieTransientError extends Error {
17
+ cause;
18
+ constructor(message, cause) {
19
+ super(message);
20
+ this.cause = cause;
21
+ this.name = 'KieTransientError';
22
+ }
23
+ }
24
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAkCxB,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;AAE3F,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;AAmBjD,MAAM,OAAO,WAAY,SAAQ,KAAK;IAElB;IACA;IAEA;IAJlB,YACkB,MAAc,EACd,IAAmB,EACnC,OAAe,EACC,IAAc;QAE9B,KAAK,CAAC,OAAO,CAAC,CAAC;QALC,WAAM,GAAN,MAAM,CAAQ;QACd,SAAI,GAAJ,IAAI,CAAe;QAEnB,SAAI,GAAJ,IAAI,CAAU;QAG9B,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;IAC5B,CAAC;CACF;AAED,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IACG;IAA7C,YAAY,OAAe,EAAkB,KAAe;QAC1D,KAAK,CAAC,OAAO,CAAC,CAAC;QAD4B,UAAK,GAAL,KAAK,CAAU;QAE1D,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF"}
@@ -0,0 +1,3 @@
1
+ export declare const PKG_NAME = "@ulmeanua/kie-mcp";
2
+ export declare const PKG_VERSION = "0.1.0";
3
+ //# sourceMappingURL=version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,QAAQ,sBAAsB,CAAC;AAC5C,eAAO,MAAM,WAAW,UAAU,CAAC"}
@@ -0,0 +1,3 @@
1
+ export const PKG_NAME = '@ulmeanua/kie-mcp';
2
+ export const PKG_VERSION = '0.1.0';
3
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,QAAQ,GAAG,mBAAmB,CAAC;AAC5C,MAAM,CAAC,MAAM,WAAW,GAAG,OAAO,CAAC"}
package/package.json ADDED
@@ -0,0 +1,63 @@
1
+ {
2
+ "name": "@ulmeanua/kie-mcp",
3
+ "version": "0.1.0",
4
+ "description": "MCP server for Kie.ai. Sync-wait, auto-download, batch compare, cost telemetry. Five umbrella tools (kie_image, kie_video, kie_music, kie_speech, kie_compare) dispatch across 30+ providers.",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "bin": {
8
+ "kie-mcp": "dist/index.js"
9
+ },
10
+ "files": [
11
+ "dist",
12
+ "README.md",
13
+ "INSTALL.md",
14
+ "LICENSE"
15
+ ],
16
+ "repository": {
17
+ "type": "git",
18
+ "url": "git+https://github.com/ulmeanuadrian/kie-mcp.git"
19
+ },
20
+ "bugs": {
21
+ "url": "https://github.com/ulmeanuadrian/kie-mcp/issues"
22
+ },
23
+ "homepage": "https://github.com/ulmeanuadrian/kie-mcp#readme",
24
+ "publishConfig": {
25
+ "access": "public"
26
+ },
27
+ "scripts": {
28
+ "build": "tsc",
29
+ "dev": "tsx --env-file=.env src/index.ts",
30
+ "start": "node --env-file=.env dist/index.js",
31
+ "test": "jest --testPathPattern=tests",
32
+ "eval": "jest --testPathPattern=evals --runInBand",
33
+ "eval:live": "KIE_EVAL_LIVE=1 jest --testPathPattern=evals --runInBand",
34
+ "typecheck": "tsc --noEmit"
35
+ },
36
+ "keywords": [
37
+ "mcp",
38
+ "model-context-protocol",
39
+ "kie",
40
+ "ai-media",
41
+ "video-generation",
42
+ "image-generation",
43
+ "music-generation",
44
+ "tts"
45
+ ],
46
+ "author": "Adrian Ulmeanu",
47
+ "license": "MIT",
48
+ "engines": {
49
+ "node": ">=20.0.0"
50
+ },
51
+ "dependencies": {
52
+ "@modelcontextprotocol/sdk": "^1.0.0",
53
+ "zod": "^3.23.8"
54
+ },
55
+ "devDependencies": {
56
+ "@types/jest": "^29.5.13",
57
+ "@types/node": "^22.7.4",
58
+ "jest": "^29.7.0",
59
+ "ts-jest": "^29.2.5",
60
+ "tsx": "^4.19.1",
61
+ "typescript": "^5.6.2"
62
+ }
63
+ }