ayphic-mcp-server 1.1.0 → 1.2.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/index.js +41 -14
- package/package.json +4 -1
package/index.js
CHANGED
|
@@ -281,7 +281,7 @@ const MCP_TOOLS = [
|
|
|
281
281
|
properties: {
|
|
282
282
|
code: {
|
|
283
283
|
type: 'string',
|
|
284
|
-
description: 'REQUIRED: Full Remotion React component code (export const GeneratedMotion = (props) => { const frame = Remotion.useCurrentFrame(); const { fps = 30 } = Remotion.useVideoConfig(); ... return <div style={{...}}>...</div>; }). Use Remotion hooks and inline CSS styling.'
|
|
284
|
+
description: 'REQUIRED: Full Remotion React component code (export const GeneratedMotion = (props) => { const frame = Remotion.useCurrentFrame(); const { fps = 30 } = Remotion.useVideoConfig(); const { title = "Default", primaryColor = "#007AFF" } = props?.style || props || {}; ... return <div style={{...}}>...</div>; }). Use Remotion hooks, props for customizable values, and inline CSS styling.'
|
|
285
285
|
},
|
|
286
286
|
configSchema: {
|
|
287
287
|
type: 'array',
|
|
@@ -375,13 +375,13 @@ const MCP_TOOLS = [
|
|
|
375
375
|
},
|
|
376
376
|
{
|
|
377
377
|
name: 'get_transcript',
|
|
378
|
-
description: '
|
|
378
|
+
description: 'Inspect speech text and retrieve authentic word-level timestamps (seconds) from video/audio. Use this tool to read what was spoken, inspect timestamps, find filler words (ums, ahs) to cut with split_item, or detect pauses for silence removal. (NOTE: For adding captions directly to the timeline, call `captions` directly).',
|
|
379
379
|
inputSchema: {
|
|
380
380
|
type: 'object',
|
|
381
381
|
properties: {
|
|
382
382
|
itemId: {
|
|
383
383
|
type: 'string',
|
|
384
|
-
description: 'Optional ID of the clip to
|
|
384
|
+
description: 'Optional ID of the clip to inspect (e.g. "clip2"). If omitted, automatically targets the main video on track V1.'
|
|
385
385
|
},
|
|
386
386
|
mediaUrl: {
|
|
387
387
|
type: 'string',
|
|
@@ -392,23 +392,35 @@ const MCP_TOOLS = [
|
|
|
392
392
|
},
|
|
393
393
|
{
|
|
394
394
|
name: 'captions',
|
|
395
|
-
description: 'Add, style, or remove animated captions/subtitles across the video timeline
|
|
395
|
+
description: 'DIRECT CAPTIONS TOOL: Add, style, generate, or remove animated captions/subtitles across the video timeline in one single step. Call this tool directly (e.g. `template: "beast"` or `template: "hustle"`). It automatically extracts audio from the timeline/clip, transcribes speech with word-level timestamps, and places stylized captions on track C1. Presets: "beast", "hustle", "viral-stack", "grape", "poppin", "soft-ai", "gaming-stream", "simple-one-word", "pop", "karaoke", "podcast", "custom". Use `action: "delete"` to remove all captions.',
|
|
396
396
|
inputSchema: {
|
|
397
397
|
type: 'object',
|
|
398
398
|
properties: {
|
|
399
|
-
transcription: {
|
|
400
|
-
type: 'object',
|
|
401
|
-
description: 'The authentic transcription object returned from get_transcript containing { text, words, segments, lines, captions }. Pass this directly from get_transcript.'
|
|
402
|
-
},
|
|
403
399
|
template: {
|
|
404
400
|
type: 'string',
|
|
405
|
-
enum: ['viral-stack', 'viral-stacked', 'stacked', 'beast', 'hustle', 'pop', 'soft-ai', 'gaming-stream', 'karaoke', 'grape', 'poppin', 'kinetic-01', 'kinetic-02', 'aarit', 'podcast'],
|
|
406
|
-
description: 'Visual subtitle preset theme. Recommended: "
|
|
401
|
+
enum: ['viral-stack', 'viral-stacked', 'stacked', 'beast', 'hustle', 'pop', 'soft-ai', 'gaming-stream', 'karaoke', 'grape', 'poppin', 'kinetic-01', 'kinetic-02', 'aarit', 'podcast', 'custom'],
|
|
402
|
+
description: 'Visual subtitle preset theme. Recommended: "beast" (MrBeast bold uppercase highlight), "hustle" (green glow), "viral-stack" (stacked kinetic typography), "pop" (spring bounce).'
|
|
403
|
+
},
|
|
404
|
+
itemId: {
|
|
405
|
+
type: 'string',
|
|
406
|
+
description: 'Optional ID of specific clip to transcribe. If omitted, transcribes the main video on track V1.'
|
|
407
|
+
},
|
|
408
|
+
trackId: {
|
|
409
|
+
type: 'string',
|
|
410
|
+
description: 'Optional track ID (e.g. "V1"). Default is "V1".'
|
|
411
|
+
},
|
|
412
|
+
text: {
|
|
413
|
+
type: 'string',
|
|
414
|
+
description: 'Optional explicit custom quote text if provided by user in prompt. If transcribing spoken video, leave blank so audio is automatically transcribed.'
|
|
415
|
+
},
|
|
416
|
+
transcription: {
|
|
417
|
+
type: 'object',
|
|
418
|
+
description: 'Optional direct transcription object if already available containing { text, words, segments }.'
|
|
407
419
|
},
|
|
408
420
|
action: {
|
|
409
421
|
type: 'string',
|
|
410
422
|
enum: ['generate', 'delete', 'remove', 'clear'],
|
|
411
|
-
description: 'Action to perform.
|
|
423
|
+
description: 'Action to perform. Default is "generate". Use "delete"/"remove"/"clear" to remove all captions from the timeline.'
|
|
412
424
|
},
|
|
413
425
|
code: {
|
|
414
426
|
type: 'string',
|
|
@@ -417,12 +429,12 @@ const MCP_TOOLS = [
|
|
|
417
429
|
words: {
|
|
418
430
|
type: 'array',
|
|
419
431
|
items: { type: 'object' },
|
|
420
|
-
description: '
|
|
432
|
+
description: 'Optional array of word-level timing objects [{ text: string, start: number, end: number }].'
|
|
421
433
|
},
|
|
422
434
|
captions: {
|
|
423
435
|
type: 'array',
|
|
424
436
|
items: { type: 'object' },
|
|
425
|
-
description: '
|
|
437
|
+
description: 'Optional array of timed caption segments [{ text: string, start: number, end: number, words: array }].'
|
|
426
438
|
},
|
|
427
439
|
fontSize: {
|
|
428
440
|
type: ['number', 'string'],
|
|
@@ -608,8 +620,23 @@ async function executeAyphicTool(toolName, params) {
|
|
|
608
620
|
|
|
609
621
|
const data = await response.json();
|
|
610
622
|
const isError = data.success === false || data.applied === false || !!data.error;
|
|
623
|
+
|
|
624
|
+
if (isError) {
|
|
625
|
+
const errorMsg = data.error || data.message || 'Tool execution failed';
|
|
626
|
+
return {
|
|
627
|
+
isError: true,
|
|
628
|
+
content: [
|
|
629
|
+
{
|
|
630
|
+
type: 'text',
|
|
631
|
+
text: `Error: ${errorMsg}`
|
|
632
|
+
}
|
|
633
|
+
]
|
|
634
|
+
};
|
|
635
|
+
}
|
|
636
|
+
|
|
637
|
+
// Return the full structured result from data (including transcripts, bounding boxes, overlaps, elements, etc.)
|
|
611
638
|
return {
|
|
612
|
-
isError,
|
|
639
|
+
isError: false,
|
|
613
640
|
content: [
|
|
614
641
|
{
|
|
615
642
|
type: 'text',
|
package/package.json
CHANGED
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ayphic-mcp-server",
|
|
3
|
-
"version": "1.1
|
|
3
|
+
"version": "1.2.1",
|
|
4
4
|
"description": "Model Context Protocol (MCP) Server for Ayphic AI Video Editor",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"bin": {
|
|
8
8
|
"ayphic-mcp": "./index.js"
|
|
9
9
|
},
|
|
10
|
+
"files": [
|
|
11
|
+
"index.js"
|
|
12
|
+
],
|
|
10
13
|
"scripts": {
|
|
11
14
|
"start": "node index.js"
|
|
12
15
|
},
|