@clipform/mcp-server 1.8.1 → 1.9.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.
Files changed (118) hide show
  1. package/dist/auth-context.js +9 -0
  2. package/dist/auth-context.js.map +1 -0
  3. package/dist/chunk-ESDD3WVD.js +24686 -0
  4. package/dist/chunk-ESDD3WVD.js.map +1 -0
  5. package/dist/chunk-YEDU3G7I.js +48 -0
  6. package/dist/chunk-YEDU3G7I.js.map +1 -0
  7. package/dist/index.js +108 -11
  8. package/dist/index.js.map +1 -1
  9. package/dist/server.js +7 -74
  10. package/dist/server.js.map +1 -1
  11. package/package.json +7 -8
  12. package/dist/__tests__/api-parity.test.d.ts +0 -1
  13. package/dist/__tests__/api-parity.test.js +0 -157
  14. package/dist/__tests__/api-parity.test.js.map +0 -1
  15. package/dist/__tests__/config-sync.test.d.ts +0 -1
  16. package/dist/__tests__/config-sync.test.js +0 -16
  17. package/dist/__tests__/config-sync.test.js.map +0 -1
  18. package/dist/index.d.ts +0 -2
  19. package/dist/lib/api-client.d.ts +0 -35
  20. package/dist/lib/api-client.js +0 -126
  21. package/dist/lib/api-client.js.map +0 -1
  22. package/dist/lib/auth-context.d.ts +0 -17
  23. package/dist/lib/auth-context.js +0 -9
  24. package/dist/lib/auth-context.js.map +0 -1
  25. package/dist/lib/config.d.ts +0 -23
  26. package/dist/lib/config.js +0 -6
  27. package/dist/lib/config.js.map +0 -1
  28. package/dist/lib/format-form.d.ts +0 -2
  29. package/dist/lib/format-form.js +0 -32
  30. package/dist/lib/format-form.js.map +0 -1
  31. package/dist/lib/render-jobs.d.ts +0 -17
  32. package/dist/lib/render-jobs.js +0 -44
  33. package/dist/lib/render-jobs.js.map +0 -1
  34. package/dist/lib/schemas.d.ts +0 -64
  35. package/dist/lib/schemas.js +0 -140
  36. package/dist/lib/schemas.js.map +0 -1
  37. package/dist/lib/session-context.d.ts +0 -1
  38. package/dist/lib/session-context.js +0 -38
  39. package/dist/lib/session-context.js.map +0 -1
  40. package/dist/prompts.d.ts +0 -2
  41. package/dist/prompts.js +0 -272
  42. package/dist/prompts.js.map +0 -1
  43. package/dist/resources.d.ts +0 -2
  44. package/dist/resources.js +0 -336
  45. package/dist/resources.js.map +0 -1
  46. package/dist/server.d.ts +0 -2
  47. package/dist/tools/add-node.d.ts +0 -2
  48. package/dist/tools/add-node.js +0 -48
  49. package/dist/tools/add-node.js.map +0 -1
  50. package/dist/tools/attach-node-audio.d.ts +0 -2
  51. package/dist/tools/attach-node-audio.js +0 -35
  52. package/dist/tools/attach-node-audio.js.map +0 -1
  53. package/dist/tools/check-render.d.ts +0 -2
  54. package/dist/tools/check-render.js +0 -47
  55. package/dist/tools/check-render.js.map +0 -1
  56. package/dist/tools/create-form.d.ts +0 -2
  57. package/dist/tools/create-form.js +0 -199
  58. package/dist/tools/create-form.js.map +0 -1
  59. package/dist/tools/delete-form.d.ts +0 -2
  60. package/dist/tools/delete-form.js +0 -26
  61. package/dist/tools/delete-form.js.map +0 -1
  62. package/dist/tools/delete-node-media.d.ts +0 -2
  63. package/dist/tools/delete-node-media.js +0 -25
  64. package/dist/tools/delete-node-media.js.map +0 -1
  65. package/dist/tools/delete-node.d.ts +0 -2
  66. package/dist/tools/delete-node.js +0 -28
  67. package/dist/tools/delete-node.js.map +0 -1
  68. package/dist/tools/generate-slideshow.d.ts +0 -2
  69. package/dist/tools/generate-slideshow.js +0 -155
  70. package/dist/tools/generate-slideshow.js.map +0 -1
  71. package/dist/tools/generate-tts.d.ts +0 -2
  72. package/dist/tools/generate-tts.js +0 -73
  73. package/dist/tools/generate-tts.js.map +0 -1
  74. package/dist/tools/generate-video.d.ts +0 -2
  75. package/dist/tools/generate-video.js +0 -119
  76. package/dist/tools/generate-video.js.map +0 -1
  77. package/dist/tools/get-form.d.ts +0 -2
  78. package/dist/tools/get-form.js +0 -25
  79. package/dist/tools/get-form.js.map +0 -1
  80. package/dist/tools/get-node-media.d.ts +0 -2
  81. package/dist/tools/get-node-media.js +0 -35
  82. package/dist/tools/get-node-media.js.map +0 -1
  83. package/dist/tools/list-assets.d.ts +0 -2
  84. package/dist/tools/list-assets.js +0 -45
  85. package/dist/tools/list-assets.js.map +0 -1
  86. package/dist/tools/list-compositions.d.ts +0 -2
  87. package/dist/tools/list-compositions.js +0 -34
  88. package/dist/tools/list-compositions.js.map +0 -1
  89. package/dist/tools/list-forms.d.ts +0 -2
  90. package/dist/tools/list-forms.js +0 -86
  91. package/dist/tools/list-forms.js.map +0 -1
  92. package/dist/tools/log-generation.d.ts +0 -2
  93. package/dist/tools/log-generation.js +0 -33
  94. package/dist/tools/log-generation.js.map +0 -1
  95. package/dist/tools/render-composition.d.ts +0 -2
  96. package/dist/tools/render-composition.js +0 -50
  97. package/dist/tools/render-composition.js.map +0 -1
  98. package/dist/tools/search-media.d.ts +0 -2
  99. package/dist/tools/search-media.js +0 -40
  100. package/dist/tools/search-media.js.map +0 -1
  101. package/dist/tools/search-music.d.ts +0 -2
  102. package/dist/tools/search-music.js +0 -40
  103. package/dist/tools/search-music.js.map +0 -1
  104. package/dist/tools/search-news.d.ts +0 -2
  105. package/dist/tools/search-news.js +0 -47
  106. package/dist/tools/search-news.js.map +0 -1
  107. package/dist/tools/set-node-logic.d.ts +0 -2
  108. package/dist/tools/set-node-logic.js +0 -54
  109. package/dist/tools/set-node-logic.js.map +0 -1
  110. package/dist/tools/update-form.d.ts +0 -2
  111. package/dist/tools/update-form.js +0 -155
  112. package/dist/tools/update-form.js.map +0 -1
  113. package/dist/tools/update-node.d.ts +0 -2
  114. package/dist/tools/update-node.js +0 -70
  115. package/dist/tools/update-node.js.map +0 -1
  116. package/dist/tools/upload-node-media.d.ts +0 -2
  117. package/dist/tools/upload-node-media.js +0 -105
  118. package/dist/tools/upload-node-media.js.map +0 -1
@@ -0,0 +1,48 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __commonJS = (cb, mod) => function __require() {
8
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
9
+ };
10
+ var __export = (target, all) => {
11
+ for (var name in all)
12
+ __defProp(target, name, { get: all[name], enumerable: true });
13
+ };
14
+ var __copyProps = (to, from, except, desc) => {
15
+ if (from && typeof from === "object" || typeof from === "function") {
16
+ for (let key of __getOwnPropNames(from))
17
+ if (!__hasOwnProp.call(to, key) && key !== except)
18
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
19
+ }
20
+ return to;
21
+ };
22
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
23
+ // If the importer is in node compatibility mode or this is not an ESM
24
+ // file that has been converted to a CommonJS file using a Babel-
25
+ // compatible transform (i.e. "__esModule" has not been set), then set
26
+ // "default" to the CommonJS "module.exports" for node compatibility.
27
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
28
+ mod
29
+ ));
30
+
31
+ // src/lib/auth-context.ts
32
+ import { AsyncLocalStorage } from "async_hooks";
33
+ var storage = new AsyncLocalStorage();
34
+ function runWithMcpAuth(ctx, fn) {
35
+ return storage.run(ctx, fn);
36
+ }
37
+ function getMcpAuth() {
38
+ return storage.getStore();
39
+ }
40
+
41
+ export {
42
+ __commonJS,
43
+ __export,
44
+ __toESM,
45
+ runWithMcpAuth,
46
+ getMcpAuth
47
+ };
48
+ //# sourceMappingURL=chunk-YEDU3G7I.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/lib/auth-context.ts"],"sourcesContent":["import { AsyncLocalStorage } from \"node:async_hooks\";\n\n/**\n * Identity of the end-user a given MCP request is acting on behalf of.\n *\n * Populated by the in-process host (apps/api) after validating an OAuth\n * Bearer on /mcp. The MCP tool layer reads it to decide which workspace\n * forms should land in and which plan tier gates apply.\n *\n * NOT populated when the server runs as a local stdio process (npx) - in\n * that mode tools fall back to edit-token based auth.\n */\nexport interface McpAuthContext {\n user_id: string;\n workspace_id: string;\n scopes: string[];\n}\n\nconst storage = new AsyncLocalStorage<McpAuthContext>();\n\nexport function runWithMcpAuth<T>(ctx: McpAuthContext, fn: () => Promise<T> | T): Promise<T> | T {\n return storage.run(ctx, fn);\n}\n\nexport function getMcpAuth(): McpAuthContext | undefined {\n return storage.getStore();\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,yBAAyB;AAkBlC,IAAM,UAAU,IAAI,kBAAkC;AAE/C,SAAS,eAAkB,KAAqB,IAA0C;AAC/F,SAAO,QAAQ,IAAI,KAAK,EAAE;AAC5B;AAEO,SAAS,aAAyC;AACvD,SAAO,QAAQ,SAAS;AAC1B;","names":[]}
package/dist/index.js CHANGED
@@ -1,16 +1,113 @@
1
1
  #!/usr/bin/env node
2
- import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
3
- import { createServer } from "./server.js";
4
- import { setApiKey } from "./lib/api-client.js";
5
- const apiKeyArg = process.argv.find((a) => a.startsWith("--api-key="));
6
- const apiKey = apiKeyArg?.split("=")[1] || process.env.CLIPFORM_API_KEY;
2
+ import {
3
+ JSONRPCMessageSchema,
4
+ createServer,
5
+ setApiKey
6
+ } from "./chunk-ESDD3WVD.js";
7
+ import "./chunk-YEDU3G7I.js";
8
+
9
+ // ../../node_modules/@modelcontextprotocol/sdk/dist/esm/server/stdio.js
10
+ import process2 from "process";
11
+
12
+ // ../../node_modules/@modelcontextprotocol/sdk/dist/esm/shared/stdio.js
13
+ var ReadBuffer = class {
14
+ append(chunk) {
15
+ this._buffer = this._buffer ? Buffer.concat([this._buffer, chunk]) : chunk;
16
+ }
17
+ readMessage() {
18
+ if (!this._buffer) {
19
+ return null;
20
+ }
21
+ const index = this._buffer.indexOf("\n");
22
+ if (index === -1) {
23
+ return null;
24
+ }
25
+ const line = this._buffer.toString("utf8", 0, index).replace(/\r$/, "");
26
+ this._buffer = this._buffer.subarray(index + 1);
27
+ return deserializeMessage(line);
28
+ }
29
+ clear() {
30
+ this._buffer = void 0;
31
+ }
32
+ };
33
+ function deserializeMessage(line) {
34
+ return JSONRPCMessageSchema.parse(JSON.parse(line));
35
+ }
36
+ function serializeMessage(message) {
37
+ return JSON.stringify(message) + "\n";
38
+ }
39
+
40
+ // ../../node_modules/@modelcontextprotocol/sdk/dist/esm/server/stdio.js
41
+ var StdioServerTransport = class {
42
+ constructor(_stdin = process2.stdin, _stdout = process2.stdout) {
43
+ this._stdin = _stdin;
44
+ this._stdout = _stdout;
45
+ this._readBuffer = new ReadBuffer();
46
+ this._started = false;
47
+ this._ondata = (chunk) => {
48
+ this._readBuffer.append(chunk);
49
+ this.processReadBuffer();
50
+ };
51
+ this._onerror = (error) => {
52
+ this.onerror?.(error);
53
+ };
54
+ }
55
+ /**
56
+ * Starts listening for messages on stdin.
57
+ */
58
+ async start() {
59
+ if (this._started) {
60
+ throw new Error("StdioServerTransport already started! If using Server class, note that connect() calls start() automatically.");
61
+ }
62
+ this._started = true;
63
+ this._stdin.on("data", this._ondata);
64
+ this._stdin.on("error", this._onerror);
65
+ }
66
+ processReadBuffer() {
67
+ while (true) {
68
+ try {
69
+ const message = this._readBuffer.readMessage();
70
+ if (message === null) {
71
+ break;
72
+ }
73
+ this.onmessage?.(message);
74
+ } catch (error) {
75
+ this.onerror?.(error);
76
+ }
77
+ }
78
+ }
79
+ async close() {
80
+ this._stdin.off("data", this._ondata);
81
+ this._stdin.off("error", this._onerror);
82
+ const remainingDataListeners = this._stdin.listenerCount("data");
83
+ if (remainingDataListeners === 0) {
84
+ this._stdin.pause();
85
+ }
86
+ this._readBuffer.clear();
87
+ this.onclose?.();
88
+ }
89
+ send(message) {
90
+ return new Promise((resolve) => {
91
+ const json = serializeMessage(message);
92
+ if (this._stdout.write(json)) {
93
+ resolve();
94
+ } else {
95
+ this._stdout.once("drain", resolve);
96
+ }
97
+ });
98
+ }
99
+ };
100
+
101
+ // src/index.ts
102
+ var apiKeyArg = process.argv.find((a) => a.startsWith("--api-key="));
103
+ var apiKey = apiKeyArg?.split("=")[1] || process.env.CLIPFORM_API_KEY;
7
104
  if (apiKey) {
8
- setApiKey(apiKey);
105
+ setApiKey(apiKey);
9
106
  }
10
- const server = createServer();
11
- const transport = new StdioServerTransport();
107
+ var server = createServer();
108
+ var transport = new StdioServerTransport();
12
109
  await server.connect(transport);
13
- console.error(apiKey
14
- ? "Clipform MCP Server running on stdio (API key authenticated)"
15
- : "Clipform MCP Server running on stdio (anonymous mode)");
110
+ console.error(
111
+ apiKey ? "Clipform MCP Server running on stdio (API key authenticated)" : "Clipform MCP Server running on stdio (anonymous mode)"
112
+ );
16
113
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC;AACvE,MAAM,MAAM,GAAG,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;AAExE,IAAI,MAAM,EAAE,CAAC;IACX,SAAS,CAAC,MAAM,CAAC,CAAC;AACpB,CAAC;AAED,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;AAC9B,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;AAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAChC,OAAO,CAAC,KAAK,CACX,MAAM;IACJ,CAAC,CAAC,8DAA8D;IAChE,CAAC,CAAC,uDAAuD,CAC5D,CAAC"}
1
+ {"version":3,"sources":["../../../node_modules/@modelcontextprotocol/sdk/src/server/stdio.ts","../../../node_modules/@modelcontextprotocol/sdk/src/shared/stdio.ts","../src/index.ts"],"sourcesContent":[null,null,"#!/usr/bin/env node\nimport { StdioServerTransport } from \"@modelcontextprotocol/sdk/server/stdio.js\";\nimport { createServer } from \"./server.js\";\nimport { setApiKey } from \"./lib/api-client.js\";\n\nconst apiKeyArg = process.argv.find((a) => a.startsWith(\"--api-key=\"));\nconst apiKey = apiKeyArg?.split(\"=\")[1] || process.env.CLIPFORM_API_KEY;\n\nif (apiKey) {\n setApiKey(apiKey);\n}\n\nconst server = createServer();\nconst transport = new StdioServerTransport();\nawait server.connect(transport);\nconsole.error(\n apiKey\n ? \"Clipform MCP Server running on stdio (API key authenticated)\"\n : \"Clipform MCP Server running on stdio (anonymous mode)\"\n);\n"],"mappings":";;;;;;;;;AAAA,OAAOA,cAAa;;;ACKd,IAAO,aAAP,MAAiB;EAGnB,OAAO,OAAa;AAChB,SAAK,UAAU,KAAK,UAAU,OAAO,OAAO,CAAC,KAAK,SAAS,KAAK,CAAC,IAAI;EACzE;EAEA,cAAW;AACP,QAAI,CAAC,KAAK,SAAS;AACf,aAAO;IACX;AAEA,UAAM,QAAQ,KAAK,QAAQ,QAAQ,IAAI;AACvC,QAAI,UAAU,IAAI;AACd,aAAO;IACX;AAEA,UAAM,OAAO,KAAK,QAAQ,SAAS,QAAQ,GAAG,KAAK,EAAE,QAAQ,OAAO,EAAE;AACtE,SAAK,UAAU,KAAK,QAAQ,SAAS,QAAQ,CAAC;AAC9C,WAAO,mBAAmB,IAAI;EAClC;EAEA,QAAK;AACD,SAAK,UAAU;EACnB;;AAGE,SAAU,mBAAmB,MAAY;AAC3C,SAAO,qBAAqB,MAAM,KAAK,MAAM,IAAI,CAAC;AACtD;AAEM,SAAU,iBAAiB,SAAuB;AACpD,SAAO,KAAK,UAAU,OAAO,IAAI;AACrC;;;AD3BM,IAAO,uBAAP,MAA2B;EAI7B,YACY,SAAmBC,SAAQ,OAC3B,UAAoBA,SAAQ,QAAM;AADlC,SAAA,SAAA;AACA,SAAA,UAAA;AALJ,SAAA,cAA0B,IAAI,WAAU;AACxC,SAAA,WAAW;AAYnB,SAAA,UAAU,CAAC,UAAiB;AACxB,WAAK,YAAY,OAAO,KAAK;AAC7B,WAAK,kBAAiB;IAC1B;AACA,SAAA,WAAW,CAAC,UAAgB;AACxB,WAAK,UAAU,KAAK;IACxB;EAbG;;;;EAkBH,MAAM,QAAK;AACP,QAAI,KAAK,UAAU;AACf,YAAM,IAAI,MACN,+GAA+G;IAEvH;AAEA,SAAK,WAAW;AAChB,SAAK,OAAO,GAAG,QAAQ,KAAK,OAAO;AACnC,SAAK,OAAO,GAAG,SAAS,KAAK,QAAQ;EACzC;EAEQ,oBAAiB;AACrB,WAAO,MAAM;AACT,UAAI;AACA,cAAM,UAAU,KAAK,YAAY,YAAW;AAC5C,YAAI,YAAY,MAAM;AAClB;QACJ;AAEA,aAAK,YAAY,OAAO;MAC5B,SAAS,OAAO;AACZ,aAAK,UAAU,KAAc;MACjC;IACJ;EACJ;EAEA,MAAM,QAAK;AAEP,SAAK,OAAO,IAAI,QAAQ,KAAK,OAAO;AACpC,SAAK,OAAO,IAAI,SAAS,KAAK,QAAQ;AAGtC,UAAM,yBAAyB,KAAK,OAAO,cAAc,MAAM;AAC/D,QAAI,2BAA2B,GAAG;AAG9B,WAAK,OAAO,MAAK;IACrB;AAGA,SAAK,YAAY,MAAK;AACtB,SAAK,UAAS;EAClB;EAEA,KAAK,SAAuB;AACxB,WAAO,IAAI,QAAQ,aAAU;AACzB,YAAM,OAAO,iBAAiB,OAAO;AACrC,UAAI,KAAK,QAAQ,MAAM,IAAI,GAAG;AAC1B,gBAAO;MACX,OAAO;AACH,aAAK,QAAQ,KAAK,SAAS,OAAO;MACtC;IACJ,CAAC;EACL;;;;AErFJ,IAAM,YAAY,QAAQ,KAAK,KAAK,CAAC,MAAM,EAAE,WAAW,YAAY,CAAC;AACrE,IAAM,SAAS,WAAW,MAAM,GAAG,EAAE,CAAC,KAAK,QAAQ,IAAI;AAEvD,IAAI,QAAQ;AACV,YAAU,MAAM;AAClB;AAEA,IAAM,SAAS,aAAa;AAC5B,IAAM,YAAY,IAAI,qBAAqB;AAC3C,MAAM,OAAO,QAAQ,SAAS;AAC9B,QAAQ;AAAA,EACN,SACI,iEACA;AACN;","names":["process","process"]}
package/dist/server.js CHANGED
@@ -1,75 +1,8 @@
1
- import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
- // Form CRUD tools
3
- import { registerCreateFormTool } from "./tools/create-form.js";
4
- import { registerListFormsTool } from "./tools/list-forms.js";
5
- import { registerGetFormTool } from "./tools/get-form.js";
6
- import { registerUpdateFormTool } from "./tools/update-form.js";
7
- import { registerDeleteFormTool } from "./tools/delete-form.js";
8
- // Node CRUD tools
9
- import { registerAddNodeTool } from "./tools/add-node.js";
10
- import { registerUpdateNodeTool } from "./tools/update-node.js";
11
- import { registerDeleteNodeTool } from "./tools/delete-node.js";
12
- // Node media & logic tools
13
- import { registerUploadNodeMediaTool } from "./tools/upload-node-media.js";
14
- import { registerGetNodeMediaTool } from "./tools/get-node-media.js";
15
- import { registerDeleteNodeMediaTool } from "./tools/delete-node-media.js";
16
- import { registerSetNodeLogicTool } from "./tools/set-node-logic.js";
17
- import { registerAttachNodeAudioTool } from "./tools/attach-node-audio.js";
18
- // Audit logging
19
- import { registerLogGenerationTool } from "./tools/log-generation.js";
20
- // Content research tools
21
- import { registerSearchNewsTool } from "./tools/search-news.js";
22
- // Creative tools
23
- import { registerGenerateTtsTool } from "./tools/generate-tts.js";
24
- import { registerGenerateSlideshowTool } from "./tools/generate-slideshow.js";
25
- import { registerSearchMediaTool } from "./tools/search-media.js";
26
- import { registerRenderCompositionTool } from "./tools/render-composition.js";
27
- import { registerSearchMusicTool } from "./tools/search-music.js";
28
- import { registerListCompositionsTool } from "./tools/list-compositions.js";
29
- import { registerListAssetsTool } from "./tools/list-assets.js";
30
- import { registerGenerateVideoTool } from "./tools/generate-video.js";
31
- import { registerCheckRenderTool } from "./tools/check-render.js";
32
- // Prompts & Resources
33
- import { registerPrompts } from "./prompts.js";
34
- import { registerResources } from "./resources.js";
35
- export function createServer() {
36
- const server = new McpServer({
37
- name: "clipform-mcp-server",
38
- version: "1.8.0",
39
- });
40
- // Form CRUD
41
- registerCreateFormTool(server);
42
- registerListFormsTool(server);
43
- registerGetFormTool(server);
44
- registerUpdateFormTool(server);
45
- registerDeleteFormTool(server);
46
- // Node CRUD
47
- registerAddNodeTool(server);
48
- registerUpdateNodeTool(server);
49
- registerDeleteNodeTool(server);
50
- // Node media & logic
51
- registerUploadNodeMediaTool(server);
52
- registerGetNodeMediaTool(server);
53
- registerDeleteNodeMediaTool(server);
54
- registerSetNodeLogicTool(server);
55
- registerAttachNodeAudioTool(server);
56
- // Audit logging
57
- registerLogGenerationTool(server);
58
- // Content research
59
- registerSearchNewsTool(server);
60
- // Creative tools
61
- registerGenerateTtsTool(server);
62
- registerGenerateSlideshowTool(server);
63
- registerGenerateVideoTool(server);
64
- registerSearchMediaTool(server);
65
- registerRenderCompositionTool(server);
66
- registerSearchMusicTool(server);
67
- registerListCompositionsTool(server);
68
- registerListAssetsTool(server);
69
- registerCheckRenderTool(server);
70
- // Prompts & Resources
71
- registerPrompts(server);
72
- registerResources(server);
73
- return server;
74
- }
1
+ import {
2
+ createServer
3
+ } from "./chunk-ESDD3WVD.js";
4
+ import "./chunk-YEDU3G7I.js";
5
+ export {
6
+ createServer
7
+ };
75
8
  //# sourceMappingURL=server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@clipform/mcp-server",
3
- "version": "1.8.1",
3
+ "version": "1.9.1",
4
4
  "description": "MCP server for building and managing Clipform video forms",
5
5
  "license": "MIT",
6
6
  "homepage": "https://clipform.io",
@@ -9,7 +9,7 @@
9
9
  "exports": {
10
10
  ".": "./dist/index.js",
11
11
  "./server": "./dist/server.js",
12
- "./auth-context": "./dist/lib/auth-context.js"
12
+ "./auth-context": "./dist/auth-context.js"
13
13
  },
14
14
  "bin": {
15
15
  "mcp-server-clipform": "dist/index.js"
@@ -20,15 +20,14 @@
20
20
  "scripts": {
21
21
  "start": "node dist/index.js",
22
22
  "dev": "tsx watch src/index.ts",
23
- "build": "tsc",
23
+ "build": "tsup",
24
+ "type-check": "tsc --noEmit",
24
25
  "test": "vitest run"
25
26
  },
26
- "dependencies": {
27
- "@modelcontextprotocol/sdk": "^1.12.1",
28
- "@vid-master/config": "*",
29
- "zod": "^3.24.4"
30
- },
31
27
  "devDependencies": {
28
+ "@modelcontextprotocol/sdk": "^1.12.1",
29
+ "zod": "^3.24.4",
30
+ "tsup": "^8.5.1",
32
31
  "tsx": "^4.19.4",
33
32
  "typescript": "^5.2.2",
34
33
  "vitest": "^3.1.1"
@@ -1 +0,0 @@
1
- export {};
@@ -1,157 +0,0 @@
1
- /**
2
- * Verifies that MCP tool input schemas expose all fields that the
3
- * corresponding API endpoints accept. When a new field is added to an
4
- * API route, add it to the map below — the test will fail if the MCP
5
- * tool doesn't expose it yet.
6
- *
7
- * Companion to config-sync.test.ts (which checks node types / contact fields).
8
- */
9
- import { describe, it, expect } from "vitest";
10
- import { registerUpdateFormTool } from "../tools/update-form.js";
11
- import { registerAddNodeTool } from "../tools/add-node.js";
12
- import { registerUpdateNodeTool } from "../tools/update-node.js";
13
- import { registerUploadNodeMediaTool } from "../tools/upload-node-media.js";
14
- import { registerCreateFormTool } from "../tools/create-form.js";
15
- // ---------------------------------------------------------------------------
16
- // Helpers
17
- // ---------------------------------------------------------------------------
18
- /** Mock McpServer that captures the inputSchema from registerTool */
19
- function captureSchema(registerFn) {
20
- let captured = {};
21
- const mockServer = {
22
- registerTool: (_name, def, _handler) => {
23
- captured = def.inputSchema;
24
- },
25
- };
26
- registerFn(mockServer);
27
- return captured;
28
- }
29
- /** Extract top-level field names from a captured Zod inputSchema */
30
- function fieldNames(schema) {
31
- return Object.keys(schema);
32
- }
33
- /** Extract field names from a Zod object schema's .shape */
34
- function shapeFields(zodSchema) {
35
- const shape = zodSchema?._def?.shape;
36
- if (typeof shape === "function")
37
- return Object.keys(shape());
38
- if (shape)
39
- return Object.keys(shape);
40
- return [];
41
- }
42
- /**
43
- * Unwrap Zod wrappers (.optional(), .nullable(), .default()) to get the
44
- * underlying schema. Follows the innerType chain.
45
- */
46
- function unwrap(schema) {
47
- while (schema?._def?.innerType) {
48
- schema = schema._def.innerType;
49
- }
50
- return schema;
51
- }
52
- /** Extract element shape fields from a Zod array schema (possibly wrapped in .optional()) */
53
- function arrayElementFields(zodSchema) {
54
- // Unwrap .optional() / .nullable() / .default()
55
- const arraySchema = unwrap(zodSchema);
56
- // z.array(z.object({...}))._def.type is the z.object
57
- const elemType = arraySchema?._def?.type;
58
- if (elemType)
59
- return shapeFields(elemType);
60
- return [];
61
- }
62
- // ---------------------------------------------------------------------------
63
- // API field map — source of truth for what each API endpoint accepts.
64
- // Update this when adding fields to API routes.
65
- // ---------------------------------------------------------------------------
66
- /**
67
- * Fields that are MCP-internal (auth/routing, not API body fields).
68
- * These are excluded from parity checks.
69
- */
70
- const MCP_ONLY_FIELDS = ["form_id", "node_id", "workspace_id"];
71
- const API_PARITY = {
72
- "update-form": {
73
- register: registerUpdateFormTool,
74
- /** Body fields accepted by PATCH /forms/:formId (apps/api/src/routes/v1/forms/update-form.ts) */
75
- apiBodyFields: ["title", "is_published", "show_step_counter", "disable_back_navigation", "total_steps", "primary_color", "background_color", "font_family"],
76
- },
77
- "create-form": {
78
- register: registerCreateFormTool,
79
- /** Fields the create tool should expose (beyond title/questions which are core) */
80
- apiBodyFields: ["title", "questions", "show_step_counter", "disable_back_navigation", "primary_color", "background_color", "font_family"],
81
- },
82
- "add-node": {
83
- register: registerAddNodeTool,
84
- apiBodyFields: ["question", "after_node_id"],
85
- /** Nested: fields inside the node object */
86
- nodeFields: ["type", "prompt", "label", "required", "config", "options"],
87
- /** Nested: fields inside each option */
88
- optionFields: ["content", "score", "scores"],
89
- },
90
- "update-node": {
91
- register: registerUpdateNodeTool,
92
- apiBodyFields: ["prompt", "label", "type", "required", "config", "options"],
93
- optionFields: ["content", "score", "scores"],
94
- },
95
- "upload-node-media": {
96
- register: registerUploadNodeMediaTool,
97
- /** Body fields accepted by POST /forms/:formId/nodes/:nodeId/media (nested inside items[]) */
98
- apiBodyFields: ["items"],
99
- mediaItemFields: ["node_id", "media_type", "media_source", "url", "captions", "show_captions"],
100
- },
101
- };
102
- // ---------------------------------------------------------------------------
103
- // Tests
104
- // ---------------------------------------------------------------------------
105
- describe("api-parity", () => {
106
- for (const [toolName, spec] of Object.entries(API_PARITY)) {
107
- describe(toolName, () => {
108
- const schema = captureSchema(spec.register);
109
- const mcpFields = fieldNames(schema).filter((f) => !MCP_ONLY_FIELDS.includes(f));
110
- it("exposes all API body fields", () => {
111
- for (const field of spec.apiBodyFields) {
112
- if (MCP_ONLY_FIELDS.includes(field))
113
- continue;
114
- expect(mcpFields, `MCP tool "${toolName}" is missing API field "${field}"`).toContain(field);
115
- }
116
- });
117
- if ("nodeFields" in spec) {
118
- it("node schema exposes all API node fields", () => {
119
- const nodeSchema = schema.question;
120
- const nFields = shapeFields(nodeSchema);
121
- for (const field of spec.nodeFields) {
122
- expect(nFields, `NodeSchema is missing field "${field}"`).toContain(field);
123
- }
124
- });
125
- }
126
- if ("mediaItemFields" in spec) {
127
- it("media item schema exposes all API media fields", () => {
128
- const itemFields = arrayElementFields(schema.items);
129
- for (const field of spec.mediaItemFields) {
130
- expect(itemFields, `MediaItemSchema is missing field "${field}"`).toContain(field);
131
- }
132
- });
133
- }
134
- if ("optionFields" in spec) {
135
- it("option schema exposes all API option fields", () => {
136
- // For add-question: schema.question is a Zod object with shape().options
137
- // For update-question: schema.options is directly on the inputSchema
138
- let optionsSchema;
139
- if (schema.question) {
140
- // Nested inside NodeSchema
141
- const qShape = schema.question._def?.shape;
142
- const shape = typeof qShape === "function" ? qShape() : qShape;
143
- optionsSchema = shape?.options;
144
- }
145
- else {
146
- optionsSchema = schema.options;
147
- }
148
- const optFields = arrayElementFields(optionsSchema);
149
- for (const field of spec.optionFields) {
150
- expect(optFields, `OptionSchema is missing field "${field}"`).toContain(field);
151
- }
152
- });
153
- }
154
- });
155
- }
156
- });
157
- //# sourceMappingURL=api-parity.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"api-parity.test.js","sourceRoot":"","sources":["../../src/__tests__/api-parity.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,16 +0,0 @@
1
- /**
2
- * Verifies that the MCP server's config re-exports match @vid-master/config.
3
- * This ensures the re-export path is working correctly.
4
- */
5
- import { describe, it, expect } from "vitest";
6
- import { NODE_TYPES as SOURCE_NODE_TYPES, CONTACT_FIELDS as SOURCE_CONTACT_FIELDS, } from "@vid-master/config";
7
- import { NODE_TYPES as MCP_NODE_TYPES, CONTACT_FIELDS as MCP_CONTACT_FIELDS, } from "../lib/config.js";
8
- describe("config-sync", () => {
9
- it("NODE_TYPES re-export matches @vid-master/config", () => {
10
- expect(MCP_NODE_TYPES).toBe(SOURCE_NODE_TYPES);
11
- });
12
- it("CONTACT_FIELDS re-export matches @vid-master/config", () => {
13
- expect(MCP_CONTACT_FIELDS).toBe(SOURCE_CONTACT_FIELDS);
14
- });
15
- });
16
- //# sourceMappingURL=config-sync.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config-sync.test.js","sourceRoot":"","sources":["../../src/__tests__/config-sync.test.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EACL,UAAU,IAAI,iBAAiB,EAC/B,cAAc,IAAI,qBAAqB,GACxC,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,UAAU,IAAI,cAAc,EAC5B,cAAc,IAAI,kBAAkB,GACrC,MAAM,kBAAkB,CAAC;AAE1B,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,MAAM,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
package/dist/index.d.ts DELETED
@@ -1,2 +0,0 @@
1
- #!/usr/bin/env node
2
- export {};
@@ -1,35 +0,0 @@
1
- export declare function setApiKey(key: string): void;
2
- export declare function getApiKey(): string | undefined;
3
- interface ApiOptions {
4
- method?: string;
5
- body?: Record<string, unknown>;
6
- params?: Record<string, string>;
7
- }
8
- type ApiResult = {
9
- ok: true;
10
- data: Record<string, unknown>;
11
- } | {
12
- ok: false;
13
- status: number;
14
- error: string;
15
- };
16
- export declare function callApi(path: string, options?: ApiOptions): Promise<ApiResult>;
17
- /**
18
- * Call an internal API endpoint (formgen, media, etc.)
19
- * Uses INTERNAL_SECRET for auth and INTERNAL_API_URL as base.
20
- */
21
- export declare function callInternalApi(path: string, options?: ApiOptions): Promise<ApiResult>;
22
- export declare function errorResult(message: string): {
23
- content: {
24
- type: "text";
25
- text: string;
26
- }[];
27
- isError: boolean;
28
- };
29
- export declare function textResult(text: string): {
30
- content: {
31
- type: "text";
32
- text: string;
33
- }[];
34
- };
35
- export {};