clipugc 1.2.1 → 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 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
+ [![smithery badge](https://smithery.ai/badge/clipugc/clipugc)](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
- The same block works in Claude Desktop's `claude_desktop_config.json`. If you would
78
- rather not run `clipugc auth login` on that machine, add an `env` block with
79
- `CLIPUGC_API_KEY` set to a key from the dashboard.
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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"}
@@ -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. */
@@ -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;AAE5C,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,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"}
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.1",
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",