clipugc 1.2.0 → 1.2.2
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/LICENSE +21 -0
- package/README.md +59 -5
- package/dist/index.js +0 -0
- package/dist/mcp/extras.d.ts +14 -0
- package/dist/mcp/extras.js +110 -0
- package/dist/mcp/extras.js.map +1 -0
- package/dist/mcp/server.js +2 -0
- package/dist/mcp/server.js.map +1 -1
- package/package.json +3 -1
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 ClipUGC
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -43,6 +43,9 @@ Prefer flags? Everything below works standalone — the skills just drive the sa
|
|
|
43
43
|
|
|
44
44
|
## Use from Claude Code / Cursor
|
|
45
45
|
|
|
46
|
+
[](https://smithery.ai/servers/clipugc/clipugc)
|
|
47
|
+
Listed on the [MCP Registry](https://registry.modelcontextprotocol.io/?search=clipugc) and [Smithery](https://smithery.ai/servers/clipugc/clipugc).
|
|
48
|
+
|
|
46
49
|
The CLI is also an MCP server. `clipugc mcp` speaks the Model Context Protocol over
|
|
47
50
|
stdio, so any MCP client can create characters, looks, clips and merged ads as tools,
|
|
48
51
|
without shelling out to the commands above.
|
|
@@ -58,9 +61,17 @@ clipugc auth login
|
|
|
58
61
|
**Claude Code**
|
|
59
62
|
|
|
60
63
|
```bash
|
|
61
|
-
claude mcp add clipugc -- npx -y clipugc mcp
|
|
64
|
+
claude mcp add clipugc -- npx -y clipugc@latest mcp
|
|
62
65
|
```
|
|
63
66
|
|
|
67
|
+
`@latest` matters: without it npx reuses any `clipugc` already installed on
|
|
68
|
+
your machine, and a global install older than 1.2.0 has no `mcp` command, so
|
|
69
|
+
Claude Code reports "Connection closed". If you still see that, update the old
|
|
70
|
+
install with `npm i -g clipugc@latest`, or run `npx -y clipugc@latest mcp` once in
|
|
71
|
+
a terminal so the download finishes (Ctrl+C after "11 tools ready"). Do not add
|
|
72
|
+
it from inside a checkout of this repo: there npx resolves `clipugc` to the
|
|
73
|
+
local project instead of the npm package.
|
|
74
|
+
|
|
64
75
|
**Cursor** (Settings > MCP, or `.cursor/mcp.json` in your project)
|
|
65
76
|
|
|
66
77
|
```json
|
|
@@ -68,15 +79,33 @@ claude mcp add clipugc -- npx -y clipugc mcp
|
|
|
68
79
|
"mcpServers": {
|
|
69
80
|
"clipugc": {
|
|
70
81
|
"command": "npx",
|
|
71
|
-
"args": ["-y", "clipugc", "mcp"]
|
|
82
|
+
"args": ["-y", "clipugc@latest", "mcp"]
|
|
72
83
|
}
|
|
73
84
|
}
|
|
74
85
|
}
|
|
75
86
|
```
|
|
76
87
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
88
|
+
If you would rather not run `clipugc auth login` on that machine, add an `env` block
|
|
89
|
+
with `CLIPUGC_API_KEY` set to a key from the dashboard.
|
|
90
|
+
|
|
91
|
+
**Claude Desktop**
|
|
92
|
+
|
|
93
|
+
Claude Desktop installs the server as an extension, so there is no config file to edit
|
|
94
|
+
and no Node install needed beyond the app itself:
|
|
95
|
+
|
|
96
|
+
1. Download [clipugc.mcpb](https://github.com/clipugc/ClipUGC-CLI/releases/latest/download/clipugc.mcpb)
|
|
97
|
+
from the latest GitHub release.
|
|
98
|
+
2. Double-click the file, or open Claude Desktop, go to **Settings > Extensions**,
|
|
99
|
+
and choose **Install Extension** (Advanced settings on some versions).
|
|
100
|
+
3. Paste your ClipUGC API key when asked. Create one in the
|
|
101
|
+
[dashboard](https://clipugc.com/dashboard) under API Keys.
|
|
102
|
+
|
|
103
|
+
The extension runs the same `clipugc mcp` server as above. To build the bundle
|
|
104
|
+
yourself, run `npm run build:mcpb` (see "Local development").
|
|
105
|
+
|
|
106
|
+
Prompts: `make_ugc_video`, `new_ai_influencer`, `hook_ideas` (ready-made starts for the
|
|
107
|
+
common jobs). Resources: `clipugc://pipeline` (the order of calls) and `clipugc://pricing`
|
|
108
|
+
(documented credit costs; `get_credits` has the live table).
|
|
80
109
|
|
|
81
110
|
Tools: `list_characters`, `create_character`, `generate_image`, `list_images`,
|
|
82
111
|
`create_clip`, `create_motion_clip`, `merge_ad`, `get_video`, `download_video`,
|
|
@@ -277,8 +306,33 @@ npm ci
|
|
|
277
306
|
npm run build # compile TypeScript to dist/
|
|
278
307
|
npm test # run the vitest suite
|
|
279
308
|
npm run dev # run from source (tsx src/index.ts)
|
|
309
|
+
npm run build:mcpb # build the Claude Desktop extension: dist-mcpb/clipugc.mcpb
|
|
310
|
+
# also writes dist-mcpb/clipugc-smithery.mcpb for `smithery mcp publish`
|
|
280
311
|
```
|
|
281
312
|
|
|
313
|
+
`manifest.json` and `icon.png` at the repo root describe the Claude Desktop
|
|
314
|
+
extension. The build script stages `dist/`, `package.json` and a production-only
|
|
315
|
+
`node_modules/` in `dist-mcpb/stage/`, validates the manifest and packs the bundle.
|
|
316
|
+
Its version, name and tool list must match `package.json` and the MCP server; the
|
|
317
|
+
tests check that.
|
|
318
|
+
|
|
319
|
+
## Privacy Policy
|
|
320
|
+
|
|
321
|
+
This CLI and the Claude Desktop extension do not collect anything themselves.
|
|
322
|
+
There is no analytics, no telemetry and no crash reporting in the code.
|
|
323
|
+
|
|
324
|
+
What leaves your machine: your prompts and tool arguments, the files you choose
|
|
325
|
+
to upload (photos, app screen recordings, driver videos) and your API key. They are
|
|
326
|
+
sent only to `clipugc.com` over HTTPS, and only to run the request you made. The
|
|
327
|
+
API key is stored in `~/.config/clipugc/config.json` (CLI) or in Claude Desktop's
|
|
328
|
+
extension settings, and is never sent anywhere else.
|
|
329
|
+
|
|
330
|
+
How the ClipUGC service stores and handles that data, including retention and the
|
|
331
|
+
AI providers it uses to render videos, is described in the ClipUGC privacy policy:
|
|
332
|
+
<https://clipugc.com/privacy-policy>.
|
|
333
|
+
|
|
334
|
+
Questions or deletion requests: <clipugc@gmail.com>.
|
|
335
|
+
|
|
282
336
|
## License
|
|
283
337
|
|
|
284
338
|
MIT
|
package/dist/index.js
CHANGED
|
File without changes
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prompts and resources for the `clipugc mcp` server.
|
|
3
|
+
*
|
|
4
|
+
* Tools do the work (see ./tools.ts). Prompts give a client a ready-made way to start the
|
|
5
|
+
* common jobs, and resources let it read the pipeline and pricing notes without spending a
|
|
6
|
+
* tool call. Prices quoted here are the documented defaults; get_credits returns the live ones.
|
|
7
|
+
*/
|
|
8
|
+
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
9
|
+
export declare const PROMPT_NAMES: readonly ["make_ugc_video", "new_ai_influencer", "hook_ideas"];
|
|
10
|
+
export declare const RESOURCE_URIS: readonly ["clipugc://pipeline", "clipugc://pricing"];
|
|
11
|
+
export declare const PIPELINE_GUIDE = "ClipUGC pipeline for one UGC video\n\n1. get_credits. Stop and tell the user if the balance cannot cover the plan below.\n2. Pick the face: list_characters with scope \"discover\" for a public influencer, or\n create_character with a plain description for a new private one (its first photo is\n generated automatically; poll list_images until a photo is completed).\n3. Optional: generate_image for another look of the same face (a place, an outfit).\n4. create_clip with the completed image id, a prompt for what she says or does, and\n duration 5 or 10. Poll get_video with the returned id until status is completed.\n5. Optional: merge_ad with the clip id, the path to the app screen recording and a hook\n line (list_hooks suggests some). Poll get_video with kind \"ad\" and the merged_video_id.\n6. download_video with the id (kind \"clip\" or \"ad\") and an output path.\n\nIds: clip ids and merged video ids are separate id spaces. Generation tools return right\naway; nothing blocks. A failed job refunds exactly what it charged.";
|
|
12
|
+
export declare const PRICING_NOTES = "ClipUGC credit costs (documented defaults; get_credits returns the live table)\n\nimage (a photo of a character): 2\nclip, 5 seconds: 7\nclip, 10 seconds: 13\nclip with a scene (character staged in a place first): 9 for 5 seconds, 15 for 10 seconds\nmotion clip: 3 per second of the driver video, capped at 30 seconds\nmerge (app recording plus hook on a finished clip): free\nlisting, status, download and hook suggestions: free\n\nPlans: Professional is 150 credits a month for $14.99, about 11 ten-second videos.\nCredits: https://clipugc.com/dashboard";
|
|
13
|
+
/** Register the prompts and resources on a server built by createMcpServer(). */
|
|
14
|
+
export declare function registerExtras(server: McpServer): void;
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prompts and resources for the `clipugc mcp` server.
|
|
3
|
+
*
|
|
4
|
+
* Tools do the work (see ./tools.ts). Prompts give a client a ready-made way to start the
|
|
5
|
+
* common jobs, and resources let it read the pipeline and pricing notes without spending a
|
|
6
|
+
* tool call. Prices quoted here are the documented defaults; get_credits returns the live ones.
|
|
7
|
+
*/
|
|
8
|
+
import { z } from 'zod';
|
|
9
|
+
export const PROMPT_NAMES = ['make_ugc_video', 'new_ai_influencer', 'hook_ideas'];
|
|
10
|
+
export const RESOURCE_URIS = ['clipugc://pipeline', 'clipugc://pricing'];
|
|
11
|
+
export const PIPELINE_GUIDE = `ClipUGC pipeline for one UGC video
|
|
12
|
+
|
|
13
|
+
1. get_credits. Stop and tell the user if the balance cannot cover the plan below.
|
|
14
|
+
2. Pick the face: list_characters with scope "discover" for a public influencer, or
|
|
15
|
+
create_character with a plain description for a new private one (its first photo is
|
|
16
|
+
generated automatically; poll list_images until a photo is completed).
|
|
17
|
+
3. Optional: generate_image for another look of the same face (a place, an outfit).
|
|
18
|
+
4. create_clip with the completed image id, a prompt for what she says or does, and
|
|
19
|
+
duration 5 or 10. Poll get_video with the returned id until status is completed.
|
|
20
|
+
5. Optional: merge_ad with the clip id, the path to the app screen recording and a hook
|
|
21
|
+
line (list_hooks suggests some). Poll get_video with kind "ad" and the merged_video_id.
|
|
22
|
+
6. download_video with the id (kind "clip" or "ad") and an output path.
|
|
23
|
+
|
|
24
|
+
Ids: clip ids and merged video ids are separate id spaces. Generation tools return right
|
|
25
|
+
away; nothing blocks. A failed job refunds exactly what it charged.`;
|
|
26
|
+
export const PRICING_NOTES = `ClipUGC credit costs (documented defaults; get_credits returns the live table)
|
|
27
|
+
|
|
28
|
+
image (a photo of a character): 2
|
|
29
|
+
clip, 5 seconds: 7
|
|
30
|
+
clip, 10 seconds: 13
|
|
31
|
+
clip with a scene (character staged in a place first): 9 for 5 seconds, 15 for 10 seconds
|
|
32
|
+
motion clip: 3 per second of the driver video, capped at 30 seconds
|
|
33
|
+
merge (app recording plus hook on a finished clip): free
|
|
34
|
+
listing, status, download and hook suggestions: free
|
|
35
|
+
|
|
36
|
+
Plans: Professional is 150 credits a month for $14.99, about 11 ten-second videos.
|
|
37
|
+
Credits: https://clipugc.com/dashboard`;
|
|
38
|
+
/** Register the prompts and resources on a server built by createMcpServer(). */
|
|
39
|
+
export function registerExtras(server) {
|
|
40
|
+
server.registerPrompt('make_ugc_video', {
|
|
41
|
+
title: 'Make a UGC video for an app',
|
|
42
|
+
description: 'Walks the model through the whole ClipUGC pipeline for one video: pick or create the influencer, make the clip, add the app recording, download.',
|
|
43
|
+
argsSchema: {
|
|
44
|
+
app: z.string().describe('What the app does, in one or two sentences.'),
|
|
45
|
+
message: z.string().optional().describe('What she should say or do in the clip. Leave empty to let the model write it.'),
|
|
46
|
+
recording: z.string().optional().describe('Local path to the app screen recording to add, if any.'),
|
|
47
|
+
},
|
|
48
|
+
}, ({ app, message, recording }) => ({
|
|
49
|
+
messages: [
|
|
50
|
+
{
|
|
51
|
+
role: 'user',
|
|
52
|
+
content: {
|
|
53
|
+
type: 'text',
|
|
54
|
+
text: `Make one UGC video for this app: ${app}\n` +
|
|
55
|
+
(message ? `She should say or do: ${message}\n` : 'Write a short, natural line for her to say about the app.\n') +
|
|
56
|
+
(recording ? `Add this app recording with merge_ad: ${recording}\n` : 'No app recording; stop after the clip.\n') +
|
|
57
|
+
`\nFollow this order and tell me each id as you get it:\n${PIPELINE_GUIDE}`,
|
|
58
|
+
},
|
|
59
|
+
},
|
|
60
|
+
],
|
|
61
|
+
}));
|
|
62
|
+
server.registerPrompt('new_ai_influencer', {
|
|
63
|
+
title: 'Create a new AI influencer',
|
|
64
|
+
description: 'Creates a private ClipUGC character from a plain description and waits for her first photo.',
|
|
65
|
+
argsSchema: {
|
|
66
|
+
description: z.string().describe('Who she is: age range, style, setting, mood. Plain words.'),
|
|
67
|
+
},
|
|
68
|
+
}, ({ description }) => ({
|
|
69
|
+
messages: [
|
|
70
|
+
{
|
|
71
|
+
role: 'user',
|
|
72
|
+
content: {
|
|
73
|
+
type: 'text',
|
|
74
|
+
text: `Create a private ClipUGC character described as: ${description}\n` +
|
|
75
|
+
'Use create_character, then poll list_images for that character until a photo has status completed, ' +
|
|
76
|
+
'and show me the character id and the image id. Call get_credits first and stop if the balance is under 2.',
|
|
77
|
+
},
|
|
78
|
+
},
|
|
79
|
+
],
|
|
80
|
+
}));
|
|
81
|
+
server.registerPrompt('hook_ideas', {
|
|
82
|
+
title: 'Hook line ideas for an app',
|
|
83
|
+
description: 'Asks ClipUGC for hook lines (the first words on screen) for an app, then picks the strongest three.',
|
|
84
|
+
argsSchema: {
|
|
85
|
+
app: z.string().describe('What the app does and who it is for.'),
|
|
86
|
+
},
|
|
87
|
+
}, ({ app }) => ({
|
|
88
|
+
messages: [
|
|
89
|
+
{
|
|
90
|
+
role: 'user',
|
|
91
|
+
content: {
|
|
92
|
+
type: 'text',
|
|
93
|
+
text: `Call list_hooks with this context: ${app}\n` +
|
|
94
|
+
'Then pick the three strongest lines, say why each works in one sentence, and keep every line under 150 characters.',
|
|
95
|
+
},
|
|
96
|
+
},
|
|
97
|
+
],
|
|
98
|
+
}));
|
|
99
|
+
server.registerResource('pipeline', 'clipugc://pipeline', {
|
|
100
|
+
title: 'ClipUGC pipeline',
|
|
101
|
+
description: 'The order of tool calls for one UGC video, with polling and id rules.',
|
|
102
|
+
mimeType: 'text/plain',
|
|
103
|
+
}, async (uri) => ({ contents: [{ uri: uri.href, mimeType: 'text/plain', text: PIPELINE_GUIDE }] }));
|
|
104
|
+
server.registerResource('pricing', 'clipugc://pricing', {
|
|
105
|
+
title: 'ClipUGC credit costs',
|
|
106
|
+
description: 'Documented credit cost of each action and the plan that covers it. get_credits has the live table.',
|
|
107
|
+
mimeType: 'text/plain',
|
|
108
|
+
}, async (uri) => ({ contents: [{ uri: uri.href, mimeType: 'text/plain', text: PRICING_NOTES }] }));
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=extras.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extras.js","sourceRoot":"","sources":["../../src/mcp/extras.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp/server.js
CHANGED
|
@@ -10,6 +10,7 @@ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'
|
|
|
10
10
|
import { getVersion } from '../version.js';
|
|
11
11
|
import { getConfigPath, resolveApiBaseUrl, resolveApiKey } from '../utils/config.js';
|
|
12
12
|
import { TOOLS, runTool } from './tools.js';
|
|
13
|
+
import { registerExtras } from './extras.js';
|
|
13
14
|
export const MCP_SERVER_NAME = 'clipugc';
|
|
14
15
|
/** Build the server with every tool registered. Shared by `clipugc mcp` and the tests. */
|
|
15
16
|
export function createMcpServer() {
|
|
@@ -28,6 +29,7 @@ export function createMcpServer() {
|
|
|
28
29
|
annotations: tool.annotations,
|
|
29
30
|
}, async (args) => runTool(tool, args));
|
|
30
31
|
}
|
|
32
|
+
registerExtras(server);
|
|
31
33
|
return server;
|
|
32
34
|
}
|
|
33
35
|
/** Start the stdio server and resolve when the client disconnects. */
|
package/dist/mcp/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACrF,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACrF,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,CAAC,MAAM,eAAe,GAAG,SAAS,CAAC;AAEzC,0FAA0F;AAC1F,MAAM,UAAU,eAAe;IAC7B,MAAM,MAAM,GAAG,IAAI,SAAS,CAC1B,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,EAChD;QACE,YAAY,EACV,uGAAuG;YACvG,sHAAsH;YACtH,wHAAwH;YACxH,wHAAwH;YACxH,0EAA0E;KAC7E,CACF,CAAC;IAEF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,CAAC,YAAY,CACjB,IAAI,CAAC,IAAI,EACT;YACE,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;SAC9B,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CACpC,CAAC;IACJ,CAAC;IAED,cAAc,CAAC,MAAM,CAAC,CAAC;IAEvB,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,sEAAsE;AACtE,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAe,EAAQ,EAAE;QAC5C,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;IACzB,CAAC,CAAC;IACF,OAAO,CAAC,GAAG,GAAG,QAAQ,CAAC;IACvB,OAAO,CAAC,IAAI,GAAG,QAAQ,CAAC;IACxB,OAAO,CAAC,KAAK,GAAG,QAAQ,CAAC;IACzB,OAAO,CAAC,IAAI,GAAG,QAAQ,CAAC;IAExB,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;IACjC,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAE7C,MAAM,MAAM,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;QAC3C,MAAM,CAAC,MAAM,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEhC,MAAM,MAAM,GAAG,MAAM,aAAa,EAAE,CAAC;IACrC,MAAM,OAAO,GAAG,MAAM,iBAAiB,EAAE,CAAC;IAC1C,OAAO,CAAC,KAAK,CAAC,eAAe,UAAU,EAAE,KAAK,KAAK,CAAC,MAAM,+BAA+B,OAAO,GAAG,CAAC,CAAC;IACrG,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CACX,yCAAyC,aAAa,EAAE,0BAA0B;YAChF,qDAAqD,CACxD,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,CAAC;AACf,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "clipugc",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.2",
|
|
4
4
|
"description": "Official CLI for ClipUGC — create AI characters, generate looks, and produce UGC-style videos for your mobile app from the terminal.",
|
|
5
5
|
"mcpName": "io.github.clipugc/clipugc",
|
|
6
6
|
"type": "module",
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
],
|
|
13
13
|
"scripts": {
|
|
14
14
|
"build": "tsc",
|
|
15
|
+
"build:mcpb": "bash scripts/build-mcpb.sh",
|
|
15
16
|
"dev": "tsx src/index.ts",
|
|
16
17
|
"start": "node dist/index.js",
|
|
17
18
|
"test": "vitest run",
|
|
@@ -40,6 +41,7 @@
|
|
|
40
41
|
"zod": "4.5.4"
|
|
41
42
|
},
|
|
42
43
|
"devDependencies": {
|
|
44
|
+
"@anthropic-ai/mcpb": "^2.1.2",
|
|
43
45
|
"@types/fs-extra": "^11.0.4",
|
|
44
46
|
"@types/node": "^22.13.10",
|
|
45
47
|
"tsx": "^4.19.3",
|