@clipform/mcp-server 1.9.0 → 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.
@@ -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
@@ -1 +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":[]}
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,12 +1,104 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
+ JSONRPCMessageSchema,
3
4
  createServer,
4
5
  setApiKey
5
- } from "./chunk-BWCZX7XY.js";
6
- import "./chunk-MYWOSQ66.js";
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
+ };
7
100
 
8
101
  // src/index.ts
9
- import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
10
102
  var apiKeyArg = process.argv.find((a) => a.startsWith("--api-key="));
11
103
  var apiKey = apiKeyArg?.split("=")[1] || process.env.CLIPFORM_API_KEY;
12
104
  if (apiKey) {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["#!/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":";;;;;;;;AACA,SAAS,4BAA4B;AAIrC,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":[]}
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,7 +1,7 @@
1
1
  import {
2
2
  createServer
3
- } from "./chunk-BWCZX7XY.js";
4
- import "./chunk-MYWOSQ66.js";
3
+ } from "./chunk-ESDD3WVD.js";
4
+ import "./chunk-YEDU3G7I.js";
5
5
  export {
6
6
  createServer
7
7
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@clipform/mcp-server",
3
- "version": "1.9.0",
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",
@@ -24,11 +24,9 @@
24
24
  "type-check": "tsc --noEmit",
25
25
  "test": "vitest run"
26
26
  },
27
- "dependencies": {
28
- "@modelcontextprotocol/sdk": "^1.12.1",
29
- "zod": "^3.24.4"
30
- },
31
27
  "devDependencies": {
28
+ "@modelcontextprotocol/sdk": "^1.12.1",
29
+ "zod": "^3.24.4",
32
30
  "tsup": "^8.5.1",
33
31
  "tsx": "^4.19.4",
34
32
  "typescript": "^5.2.2",