creavit-studio-mcp 1.3.8 → 1.3.9
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/README.md +27 -3
- package/package.json +1 -1
- package/src/tools/editorTools.mjs +68 -0
- package/src/tools/systemTools.mjs +1 -1
package/README.md
CHANGED
|
@@ -7,6 +7,11 @@ and **see the canvas** to verify the result.
|
|
|
7
7
|
|
|
8
8
|
macOS only (Creavit Studio is a macOS app). Requires Node 18+.
|
|
9
9
|
|
|
10
|
+
> This MCP server is client-agnostic — any MCP client can drive the app.
|
|
11
|
+
> That is separate from the **in-app Agent panel**, which shells out to a CLI
|
|
12
|
+
> installed on your Mac and detects only Claude Code and Codex
|
|
13
|
+
> (see `electron/aiAgent/agentCatalog.cjs`).
|
|
14
|
+
|
|
10
15
|
## Install
|
|
11
16
|
|
|
12
17
|
### Claude Code
|
|
@@ -50,9 +55,9 @@ npx creavit-studio-mcp --doctor
|
|
|
50
55
|
```
|
|
51
56
|
|
|
52
57
|
```
|
|
53
|
-
creavit-studio v1.
|
|
58
|
+
creavit-studio v1.3.9
|
|
54
59
|
|
|
55
|
-
✓
|
|
60
|
+
✓ 104 MCP tools defined
|
|
56
61
|
✓ Offline project reading available (.crvt files readable without the app)
|
|
57
62
|
✓ Connected to the app (v3.0.5, pid 61068)
|
|
58
63
|
Open windows: 2
|
|
@@ -106,7 +111,8 @@ files directly and work with the app closed.
|
|
|
106
111
|
`creavit_editor_set_settings`, `creavit_editor_list_zooms`,
|
|
107
112
|
`creavit_editor_add_zoom`, `creavit_editor_update_zoom`,
|
|
108
113
|
`creavit_editor_remove_zoom`, `creavit_editor_segments`,
|
|
109
|
-
`creavit_editor_set_segments`, `
|
|
114
|
+
`creavit_editor_set_segments`, `creavit_editor_timeline`,
|
|
115
|
+
`creavit_editor_canvas_elements`, `creavit_editor_seek`,
|
|
110
116
|
`creavit_editor_playback`, `creavit_editor_screenshot`,
|
|
111
117
|
`creavit_editor_export`, `creavit_editor_history`
|
|
112
118
|
|
|
@@ -162,6 +168,24 @@ Timeline & assets: `creavit_motion_segments`, `creavit_motion_library`,
|
|
|
162
168
|
**Recording** — `creavit_devices_list`, `creavit_recording_status`,
|
|
163
169
|
`creavit_recording_start`, `creavit_recording_stop`
|
|
164
170
|
|
|
171
|
+
`creavit_recording_start` treats `cameraEnabled`, `micEnabled`, and
|
|
172
|
+
`systemAudioEnabled` as authoritative. Passing `false` updates both capture and
|
|
173
|
+
the recorder UI; disabling the camera also stops and hides its live window.
|
|
174
|
+
|
|
175
|
+
### Every timeline track and canvas element
|
|
176
|
+
|
|
177
|
+
`creavit_editor_segments` remains the compact clip/cut API. For the complete
|
|
178
|
+
editor use `creavit_editor_timeline action=list`: it discovers clips, steps,
|
|
179
|
+
zooms, layouts, perspectives, titles, sounds, shortcuts, masks, motion scenes,
|
|
180
|
+
code snippets, media/GIFs, subtitles, and manual-cursor segments. Pass
|
|
181
|
+
`detail=full` to read complete objects, then use get/add/update/remove/replace on
|
|
182
|
+
one returned track type.
|
|
183
|
+
|
|
184
|
+
`creavit_editor_canvas_elements action=list` returns every transformable item on
|
|
185
|
+
the main canvas. Each item advertises its exact `supports` array and coordinate
|
|
186
|
+
units. Updating the advertised fields can move, resize/scale, rotate, change
|
|
187
|
+
opacity, or hide an element without guessing its internal state shape.
|
|
188
|
+
|
|
165
189
|
**Browser walkthrough** — `creavit_browser_open`, `creavit_browser_inspect`,
|
|
166
190
|
`creavit_browser_focus`, `creavit_browser_interact`, `creavit_browser_scroll`,
|
|
167
191
|
`creavit_browser_close`, `creavit_record_url_walkthrough`
|
package/package.json
CHANGED
|
@@ -126,6 +126,32 @@ export function editorTools() {
|
|
|
126
126
|
inputSchema: schema(),
|
|
127
127
|
}),
|
|
128
128
|
|
|
129
|
+
bridgeTool({
|
|
130
|
+
name: "creavit_editor_perspective_poses",
|
|
131
|
+
command: "editor.listPerspectivePoses",
|
|
132
|
+
description:
|
|
133
|
+
"Lists the balanced perspective poses (flat, desk, hero, peek-up, lean/iso/float left-right) with their angles. Read this before setting a pose so you pick a real one.",
|
|
134
|
+
inputSchema: schema(),
|
|
135
|
+
}),
|
|
136
|
+
|
|
137
|
+
bridgeTool({
|
|
138
|
+
name: "creavit_editor_perspective_pose",
|
|
139
|
+
command: "editor.setPerspectivePose",
|
|
140
|
+
description:
|
|
141
|
+
"Gives a perspective range a balanced camera angle and computes its pivot from a focus point — prefer this over writing raw tiltX/tiltY/skew, which is how lopsided angles happen. `pose` picks the look, `strength` (0..2) makes it subtle or dramatic, `focus` is the canvas point the tilt pivots around as {x,y} in 0..1 (e.g. the UI element the viewer should look at). Add `endPose`/`focusEnd` to animate from one angle/pivot to another across the range. Call creavit_project_save afterwards.",
|
|
142
|
+
inputSchema: schema({
|
|
143
|
+
id: S.string("Perspective range id"),
|
|
144
|
+
index: S.number("Range index when id is unknown (default 0)"),
|
|
145
|
+
pose: S.string("flat | desk | hero | peek-up | lean-left | lean-right | iso-left | iso-right | float-left | float-right"),
|
|
146
|
+
endPose: S.string("Pose the range animates towards"),
|
|
147
|
+
strength: S.number("0..2, default 1"),
|
|
148
|
+
focus: S.object("Pivot point {x,y} normalized 0..1"),
|
|
149
|
+
focusEnd: S.object("Pivot point the origin travels to"),
|
|
150
|
+
scale: S.number("Plane scale at the start"),
|
|
151
|
+
scaleEnd: S.number("Plane scale at the end"),
|
|
152
|
+
}),
|
|
153
|
+
}),
|
|
154
|
+
|
|
129
155
|
bridgeTool({
|
|
130
156
|
name: "creavit_editor_reframe",
|
|
131
157
|
command: "editor.reframe",
|
|
@@ -304,6 +330,48 @@ export function editorTools() {
|
|
|
304
330
|
),
|
|
305
331
|
}),
|
|
306
332
|
|
|
333
|
+
bridgeTool({
|
|
334
|
+
name: "creavit_editor_timeline",
|
|
335
|
+
command: "editor.timelineSegments",
|
|
336
|
+
description:
|
|
337
|
+
"Unified access to EVERY editor timeline track, not just video clips: clips, steps, zooms, layouts, perspectives, titles, sound effects, shortcuts, sensitive masks, motion scenes, code snippets, media/GIFs, subtitles and manual-cursor segments. action='list' discovers track types/counts; use detail='full' to read complete objects. get/add/update/remove/replace target one `type`. Updates are deep-merged so nested transform/style objects are preserved. Call creavit_project_save afterwards.",
|
|
338
|
+
inputSchema: schema({
|
|
339
|
+
action: S.string("list, get, add, update, remove or replace (default list)", {
|
|
340
|
+
enum: ["list", "get", "add", "update", "remove", "replace"],
|
|
341
|
+
}),
|
|
342
|
+
types: S.array("Track types to include when listing", { type: "string" }),
|
|
343
|
+
type: S.string("Target track type for get/add/update/remove/replace"),
|
|
344
|
+
id: S.string("Segment id"),
|
|
345
|
+
index: S.number("Zero-based segment index when it has no id"),
|
|
346
|
+
segment: S.object("Complete segment object to add"),
|
|
347
|
+
patch: S.object("Fields to update; nested objects are deep-merged"),
|
|
348
|
+
segments: S.array("Complete replacement list", { type: "object" }),
|
|
349
|
+
detail: S.string("summary or full (list only)", {
|
|
350
|
+
enum: ["summary", "full"],
|
|
351
|
+
}),
|
|
352
|
+
}),
|
|
353
|
+
}),
|
|
354
|
+
|
|
355
|
+
bridgeTool({
|
|
356
|
+
name: "creavit_editor_canvas_elements",
|
|
357
|
+
command: "editor.canvasElements",
|
|
358
|
+
description:
|
|
359
|
+
"Lists or transforms every editable element on the MAIN editor canvas: screen, camera, captured windows, GIF/image/video overlays, code snippets, titles, motion scenes and sensitive masks. action='list' returns each element's id, transform, units and exact `supports` fields. action='update' can move (x/y), resize (width/height/size/scale), rotate and change opacity where that element advertises support. Motion Studio's internal layers remain available through creavit_motion_elements / creavit_motion_element_update.",
|
|
360
|
+
inputSchema: schema({
|
|
361
|
+
action: S.string("list, get or update (default list)", {
|
|
362
|
+
enum: ["list", "get", "update"],
|
|
363
|
+
}),
|
|
364
|
+
type: S.string(
|
|
365
|
+
"screen, camera, window, gif, media, codeSnippet, title, motion or sensitive",
|
|
366
|
+
),
|
|
367
|
+
id: S.string("Canvas element id"),
|
|
368
|
+
index: S.number("Index among elements of that type"),
|
|
369
|
+
patch: S.object(
|
|
370
|
+
"Transform fields advertised by the element's supports array, e.g. {x,y,width,height,scale,size,rotation,opacity,visible}",
|
|
371
|
+
),
|
|
372
|
+
}),
|
|
373
|
+
}),
|
|
374
|
+
|
|
307
375
|
bridgeTool({
|
|
308
376
|
name: "creavit_editor_seek",
|
|
309
377
|
command: "editor.seek",
|
|
@@ -74,7 +74,7 @@ export function systemTools() {
|
|
|
74
74
|
name: "creavit_recording_start",
|
|
75
75
|
command: "recording.start",
|
|
76
76
|
description:
|
|
77
|
-
"Starts a screen recording idempotently: retries while starting share the same native operation, and calling it while active does not restart. Get source IDs from creavit_devices_list first. For a multi-step website recording, use ONE creavit_record_url_walkthrough call instead of this manual tool.",
|
|
77
|
+
"Starts a screen recording idempotently: retries while starting share the same native operation, and calling it while active does not restart. cameraEnabled, micEnabled and systemAudioEnabled are authoritative booleans: false also updates the recorder UI/state and cameraEnabled:false stops/hides the live camera window before capture. Get source IDs from creavit_devices_list first. For a multi-step website recording, use ONE creavit_record_url_walkthrough call instead of this manual tool.",
|
|
78
78
|
inputSchema: schema({
|
|
79
79
|
options: S.object(
|
|
80
80
|
"Recording options: {sourceType:'display'|'window'|'area', sourceId, cameraEnabled, micEnabled, systemAudioEnabled, delayMs, area:{x,y,width,height}}. cameraEnabled:false also turns the camera off and hides its window, so it does not appear in a screen recording; cameraEnabled:true opens and starts it.",
|