@soldy_ai/mcp 0.1.6 → 0.1.8

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 CHANGED
@@ -4,9 +4,19 @@ A Model Context Protocol (MCP) server for [Soldy AI](https://soldy.ai) — gener
4
4
 
5
5
  ## Installation
6
6
 
7
- ### Claude Desktop / Cursor
7
+ ### Cursor / Claude Code (Recommended — via Skills)
8
8
 
9
- Add to your MCP configuration (`claude_desktop_config.json`):
9
+ The fastest way to set up the Soldy MCP in Cursor or Claude Code is to let the agent install it for you:
10
+
11
+ ```
12
+ npx skills add https://github.com/solgers/soldy-mcp
13
+ ```
14
+
15
+ This installs the Soldy skill which auto-configures the MCP server and provides contextual guidance to the agent.
16
+
17
+ ### Claude Desktop / Cursor (Manual)
18
+
19
+ Add to your MCP configuration (`claude_desktop_config.json` or `.cursor/mcp.json`):
10
20
 
11
21
  ```json
12
22
  {
package/dist/server.js CHANGED
@@ -121,51 +121,72 @@ If subscription is not available in your client, you can still use:
121
121
  - \`list_messages\` — get conversation history
122
122
  - \`get_project_materials\` — get generated assets
123
123
  `;
124
- const WORKFLOW_PROMPT = `# Soldy Video Ad Workflow
125
-
126
- ## Quick Start (3 steps)
127
- 1. create_project get project_id
128
- 2. send_message with your prompt + material_urls (product images/videos)
129
- 3. watch_project to subscribe read resources when notified
130
-
131
- ## Full Workflow with Brand
132
-
133
- ### Step 1: Brand Setup (recommended for best results)
134
- If the user provides a product URL or brand name:
135
- - Use extract_brand with the product/brand URL to auto-extract brand identity
136
- - Use watch_brand_task to subscribe for completion (preferred) or poll get_brand_task_result
137
- - This gives the agent brand context (colors, tone, positioning)
138
-
139
- If user already has brands: list_brands to find the right brand_id
140
-
141
- ### Step 2: Create Project
142
- - create_project with a descriptive name
143
-
144
- ### Step 3: Send Message with Materials
145
- - send_message with:
146
- - content: describe what to generate
147
- - ratio (required): "9:16" (TikTok/Reels/Shorts), "16:9" (YouTube), "1:1" (Instagram), "4:3", "3:4", "3:2", "2:3", "21:9" (ultra-wide)
148
- - material_urls: product images, videos (local paths auto-uploaded)
149
- - brand_id: the brand from step 1
150
-
151
- ### Step 4: Monitor Progress (prefer subscription over polling)
152
- - **Preferred**: watch_project → wait for resource update notifications
153
- - **Fallback**: get_project_status to poll status
154
- - If status is "pause": agent needs credits or approval → use continue_project
155
- - If status is "error": check the error, retry with send_message
156
- - If status is "completed": proceed to step 5
157
-
158
- ### Step 5: Get Results
159
- - Read resource: soldy://project/{id}/materials
160
- - Or use tool: get_project_materials
161
-
162
- ### Step 6: Iterate
163
- - send_message again to refine, change style, adjust duration, etc.
164
-
165
- ## Tips
166
- - Always pass brand_id in send_message when a brand exists
167
- - ratio is required in send_message — choose based on target platform
168
- - Product URLs in text are NOT automatically extracted — use extract_brand explicitly
169
- - Local file paths (./image.jpg, /path/to/video.mp4) are uploaded automatically
170
- - Use watch_project / watch_brand_task for real-time updates instead of polling`;
124
+ const WORKFLOW_PROMPT = `# Working with Soldy
125
+
126
+ Soldy is a **conversational creative agent**, not a one-shot job runner. A Soldy
127
+ *project* is a *conversation*. You and the user talk to Soldy over multiple turns,
128
+ just like you would talk to a human creative director — they propose, you react,
129
+ they refine. Brands are persistent memory the conversation can lean on. Iteration
130
+ is the default, not an exception.
131
+
132
+ The single most important rule: **don't dump the user's first sentence into
133
+ send_message and walk away.** That is the equivalent of forwarding a one-line
134
+ email to a creative agency and expecting a finished commercial back. It is not
135
+ how Soldy is designed to be used.
136
+
137
+ ## Mental model
138
+
139
+ - send_message is a *turn in a conversation*, not "submit job". Multiple turns
140
+ per project is the normal case — the project accumulates brand, references,
141
+ locked direction, and prior shots across every turn.
142
+ - Soldy will sometimes pause and ask for things: credits, an A/B/C creative
143
+ pick, an approval gate. When project status is "pause", Soldy is waiting on
144
+ the **user**, not on you. Surface the question; do not invent an answer.
145
+ - Generation takes minutes, not seconds. Use watch_project / watch_brand_task
146
+ if your client supports subscriptions; otherwise poll every 5–10 seconds.
147
+ Either way, keep the user informed while you wait.
148
+ - Iterate in place. If the user wants the music changed or shot 3 redone, send
149
+ another message to the same project. Never create a new project to "fix"
150
+ something — you lose the brand, the color bible, the storyboard, and the
151
+ characters.
152
+
153
+ ## Pick the depth that fits the user
154
+
155
+ The right interaction depth depends on what the user said, not on a fixed
156
+ checklist. Read the signals:
157
+
158
+ - **Vague** ("make me an ad for my coffee shop") → guide them. Offer to
159
+ extract their brand if they have a URL. Ask the questions a creative
160
+ director would ask: platform, length, tone, what the ad should *do*. Bring
161
+ proposals back to the user before committing.
162
+ - **Concrete** ("15s 9:16 comedic ad for product X, here is brand_id and the
163
+ photo") fast-path. One well-formed send_message and watch.
164
+ - **Reference-driven** ("animate this image") → use Seedance mode directly:
165
+ send_message with input_mode: "seedance" + seedance_reference_url. This
166
+ skips creative direction entirely and is the right call for "animate this"
167
+ intents.
168
+ - **Mid-conversation refinement** translate the user's feedback into an
169
+ iteration message on the same project. Don't restart.
170
+
171
+ ## Tool quick reference
172
+
173
+ - Brand memory: extract_brand → watch_brand_task → reuse brand_id forever.
174
+ - Project lifecycle: create_project, list_projects, get_project.
175
+ - Conversation: send_message (ratio is required; pass brand_id when a brand
176
+ exists; use input_mode "seedance" for direct image-to-video).
177
+ - Monitoring: watch_project (preferred) or get_project_status (poll fallback);
178
+ get_project_materials when ready.
179
+ - Control: pause_project, continue_project, stop_project. Note: Soldy itself
180
+ may put a project into "pause" — that's a *user* decision point, not a
181
+ control you should auto-resolve.
182
+
183
+ ## Boundaries
184
+
185
+ - Don't treat send_message as a one-shot job.
186
+ - Don't auto-resolve Soldy's pauses without the user.
187
+ - Don't restart projects to fix them — iterate.
188
+ - Don't expect Soldy to auto-extract product URLs from message text. Call
189
+ extract_brand explicitly.
190
+ - Don't write shot-by-shot prompts. Describe outcomes; Soldy handles
191
+ cinematography.`;
171
192
  //# 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,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,14 @@
1
1
  import type { Server } from "@modelcontextprotocol/sdk/server/index.js";
2
2
  import type { SoldyAPIClient } from "./client.js";
3
3
  /**
4
- * Bridges WebSocket project subscriptions to MCP resource update notifications.
4
+ * Bridges project subscriptions to MCP resource update notifications.
5
5
  *
6
- * When an MCP client subscribes to a resource URI (e.g. `soldy://project/{id}/status`),
7
- * this bridge connects to the API WebSocket, subscribes to the project, and forwards
8
- * relevant events as `sendResourceUpdated` notifications.
6
+ * Primary transport: WebSocket (real-time, low latency).
7
+ * Fallback transport: HTTP polling (activates automatically when WebSocket
8
+ * is unavailable or repeatedly fails to connect).
9
+ *
10
+ * Both transports emit the same `sendResourceUpdated` notifications so MCP
11
+ * clients get a consistent experience regardless of the underlying transport.
9
12
  */
10
13
  export declare class SubscriptionBridge {
11
14
  private client;
@@ -20,24 +23,38 @@ export declare class SubscriptionBridge {
20
23
  /** Brand task polling: taskId → { interval, lastStatus } */
21
24
  private brandTaskPolls;
22
25
  private static readonly BRAND_TASK_POLL_MS;
26
+ /** HTTP polling fallback state */
27
+ private pollInterval;
28
+ private static readonly PROJECT_POLL_MS;
29
+ private projectSnapshots;
30
+ private wsConsecutiveFailures;
31
+ private static readonly WS_FAILURE_THRESHOLD;
32
+ private usingPollingFallback;
33
+ private lastConnectTime;
34
+ private static readonly RAPID_CLOSE_MS;
23
35
  constructor(client: SoldyAPIClient, _apiUrl: string, apiKey: string);
24
36
  /** Attach the low-level MCP Server instance for sending notifications. */
25
37
  setServer(server: Server): void;
26
- /** Subscribe to a project's WebSocket events. Call when MCP client subscribes to a resource. */
38
+ /** Subscribe to a project's updates. Tries WebSocket first, falls back to HTTP polling. */
27
39
  subscribeProject(projectId: string): Promise<void>;
28
- /** Unsubscribe from a project. Call when no more MCP subscriptions reference it. */
40
+ /** Unsubscribe from a project. */
29
41
  unsubscribeProject(projectId: string): void;
30
42
  /** Subscribe to brand task status changes via polling. */
31
43
  subscribeBrandTask(taskId: string): void;
32
44
  /** Stop polling a brand task. */
33
45
  unsubscribeBrandTask(taskId: string): void;
34
- /** Disconnect the WebSocket and stop all polling. */
46
+ /** Disconnect all transports and stop all polling. */
35
47
  disconnect(): void;
36
48
  private ensureConnected;
37
49
  private connect;
38
50
  private scheduleReconnect;
39
51
  private sendProjectSubscribe;
40
52
  private handleMessage;
53
+ private activatePollingFallback;
54
+ private ensurePolling;
55
+ private stopPolling;
56
+ private pollAllProjects;
57
+ private pollProject;
41
58
  }
42
59
  /** Extract project_id from a soldy://project/... resource URI. */
43
60
  export declare function extractProjectId(uri: string): string | null;
@@ -1,3 +1,4 @@
1
+ import WebSocket from "ws";
1
2
  /** Events that indicate project status changed. */
2
3
  const STATUS_EVENTS = new Set([
3
4
  "RunStarted",
@@ -34,11 +35,14 @@ const MESSAGE_EVENTS = new Set([
34
35
  ...STATUS_EVENTS,
35
36
  ]);
36
37
  /**
37
- * Bridges WebSocket project subscriptions to MCP resource update notifications.
38
+ * Bridges project subscriptions to MCP resource update notifications.
38
39
  *
39
- * When an MCP client subscribes to a resource URI (e.g. `soldy://project/{id}/status`),
40
- * this bridge connects to the API WebSocket, subscribes to the project, and forwards
41
- * relevant events as `sendResourceUpdated` notifications.
40
+ * Primary transport: WebSocket (real-time, low latency).
41
+ * Fallback transport: HTTP polling (activates automatically when WebSocket
42
+ * is unavailable or repeatedly fails to connect).
43
+ *
44
+ * Both transports emit the same `sendResourceUpdated` notifications so MCP
45
+ * clients get a consistent experience regardless of the underlying transport.
42
46
  */
43
47
  export class SubscriptionBridge {
44
48
  client;
@@ -53,6 +57,15 @@ export class SubscriptionBridge {
53
57
  /** Brand task polling: taskId → { interval, lastStatus } */
54
58
  brandTaskPolls = new Map();
55
59
  static BRAND_TASK_POLL_MS = 3000;
60
+ /** HTTP polling fallback state */
61
+ pollInterval = null;
62
+ static PROJECT_POLL_MS = 3000;
63
+ projectSnapshots = new Map();
64
+ wsConsecutiveFailures = 0;
65
+ static WS_FAILURE_THRESHOLD = 3;
66
+ usingPollingFallback = false;
67
+ lastConnectTime = 0;
68
+ static RAPID_CLOSE_MS = 3000;
56
69
  constructor(client, _apiUrl, apiKey) {
57
70
  this.client = client;
58
71
  this.apiKey = apiKey;
@@ -61,18 +74,31 @@ export class SubscriptionBridge {
61
74
  setServer(server) {
62
75
  this.server = server;
63
76
  }
64
- /** Subscribe to a project's WebSocket events. Call when MCP client subscribes to a resource. */
77
+ /** Subscribe to a project's updates. Tries WebSocket first, falls back to HTTP polling. */
65
78
  async subscribeProject(projectId) {
66
79
  if (this.subscribedProjects.has(projectId))
67
80
  return;
68
81
  this.subscribedProjects.add(projectId);
69
- await this.ensureConnected();
70
- this.sendProjectSubscribe(projectId);
82
+ if (this.usingPollingFallback) {
83
+ this.ensurePolling();
84
+ return;
85
+ }
86
+ try {
87
+ await this.ensureConnected();
88
+ this.sendProjectSubscribe(projectId);
89
+ }
90
+ catch {
91
+ console.error("[SubscriptionBridge] WebSocket unavailable, activating HTTP polling fallback");
92
+ this.activatePollingFallback();
93
+ }
71
94
  }
72
- /** Unsubscribe from a project. Call when no more MCP subscriptions reference it. */
95
+ /** Unsubscribe from a project. */
73
96
  unsubscribeProject(projectId) {
74
97
  this.subscribedProjects.delete(projectId);
75
- // WebSocket protocol doesn't support unsubscribe, but we stop sending notifications
98
+ this.projectSnapshots.delete(projectId);
99
+ if (this.subscribedProjects.size === 0) {
100
+ this.stopPolling();
101
+ }
76
102
  }
77
103
  /** Subscribe to brand task status changes via polling. */
78
104
  subscribeBrandTask(taskId) {
@@ -95,7 +121,6 @@ export class SubscriptionBridge {
95
121
  this.server.sendResourceUpdated({
96
122
  uri: `soldy://brand/task/${taskId}`,
97
123
  });
98
- // Also notify brand list when a new brand is extracted
99
124
  if (task.status === "finished") {
100
125
  this.server.sendResourceUpdated({ uri: "soldy://brands" });
101
126
  if (task.brand_id) {
@@ -103,11 +128,9 @@ export class SubscriptionBridge {
103
128
  uri: `soldy://brand/${task.brand_id}`,
104
129
  });
105
130
  }
106
- // Task completed — stop polling
107
131
  this.unsubscribeBrandTask(taskId);
108
132
  }
109
133
  else if (task.status === "failed") {
110
- // Task failed — stop polling
111
134
  this.unsubscribeBrandTask(taskId);
112
135
  }
113
136
  }
@@ -127,7 +150,7 @@ export class SubscriptionBridge {
127
150
  this.brandTaskPolls.delete(taskId);
128
151
  }
129
152
  }
130
- /** Disconnect the WebSocket and stop all polling. */
153
+ /** Disconnect all transports and stop all polling. */
131
154
  disconnect() {
132
155
  if (this.reconnectTimer) {
133
156
  clearTimeout(this.reconnectTimer);
@@ -138,23 +161,34 @@ export class SubscriptionBridge {
138
161
  this.ws = null;
139
162
  }
140
163
  this.connecting = false;
141
- // Stop all brand task polls
142
- for (const [taskId, entry] of this.brandTaskPolls) {
164
+ this.stopPolling();
165
+ this.projectSnapshots.clear();
166
+ for (const [, entry] of this.brandTaskPolls) {
143
167
  clearInterval(entry.interval);
144
- this.brandTaskPolls.delete(taskId);
145
168
  }
169
+ this.brandTaskPolls.clear();
146
170
  }
171
+ // ---------------------------------------------------------------------------
172
+ // WebSocket transport
173
+ // ---------------------------------------------------------------------------
147
174
  async ensureConnected() {
148
175
  if (this.ws?.readyState === WebSocket.OPEN)
149
176
  return;
150
177
  if (this.connecting) {
151
- // Wait for ongoing connection
152
- await new Promise((resolve) => {
178
+ await new Promise((resolve, reject) => {
179
+ const timeout = setTimeout(() => reject(new Error("WebSocket connect timeout")), 15_000);
153
180
  const check = () => {
154
- if (this.ws?.readyState === WebSocket.OPEN)
181
+ if (this.ws?.readyState === WebSocket.OPEN) {
182
+ clearTimeout(timeout);
155
183
  resolve();
156
- else
184
+ }
185
+ else if (!this.connecting) {
186
+ clearTimeout(timeout);
187
+ reject(new Error("WebSocket connection failed"));
188
+ }
189
+ else {
157
190
  setTimeout(check, 100);
191
+ }
158
192
  };
159
193
  check();
160
194
  });
@@ -166,33 +200,58 @@ export class SubscriptionBridge {
166
200
  this.connecting = true;
167
201
  const wsUrl = this.client.getWebSocketUrl(this.apiKey);
168
202
  return new Promise((resolve, reject) => {
169
- const ws = new WebSocket(wsUrl);
170
- ws.onopen = () => {
203
+ let ws;
204
+ try {
205
+ ws = new WebSocket(wsUrl);
206
+ }
207
+ catch (err) {
208
+ this.connecting = false;
209
+ this.wsConsecutiveFailures++;
210
+ reject(err instanceof Error ? err : new Error("WebSocket creation failed"));
211
+ return;
212
+ }
213
+ const connectTimeout = setTimeout(() => {
214
+ this.connecting = false;
215
+ this.wsConsecutiveFailures++;
216
+ ws.close();
217
+ reject(new Error("WebSocket connect timeout"));
218
+ }, 10_000);
219
+ ws.on("open", () => {
220
+ clearTimeout(connectTimeout);
171
221
  this.ws = ws;
172
222
  this.connecting = false;
173
- this.reconnectDelay = 1000;
223
+ this.lastConnectTime = Date.now();
174
224
  console.error("[SubscriptionBridge] WebSocket connected");
175
- // Re-subscribe all projects
176
225
  for (const projectId of this.subscribedProjects) {
177
226
  this.sendProjectSubscribe(projectId);
178
227
  }
179
228
  resolve();
180
- };
181
- ws.onmessage = (event) => {
182
- this.handleMessage(String(event.data));
183
- };
184
- ws.onclose = () => {
185
- console.error("[SubscriptionBridge] WebSocket closed");
229
+ });
230
+ ws.on("message", (data) => {
231
+ this.handleMessage(String(data));
232
+ });
233
+ ws.on("close", (code) => {
234
+ const uptime = Date.now() - this.lastConnectTime;
186
235
  this.ws = null;
187
236
  this.connecting = false;
237
+ if (this.lastConnectTime > 0 &&
238
+ uptime < SubscriptionBridge.RAPID_CLOSE_MS) {
239
+ this.wsConsecutiveFailures++;
240
+ console.error(`[SubscriptionBridge] WebSocket closed (code=${code}) after ${uptime}ms (rapid disconnect #${this.wsConsecutiveFailures})`);
241
+ }
242
+ else {
243
+ console.error(`[SubscriptionBridge] WebSocket closed (code=${code})`);
244
+ }
188
245
  this.scheduleReconnect();
189
- };
190
- ws.onerror = (err) => {
191
- console.error("[SubscriptionBridge] WebSocket error:", err);
246
+ });
247
+ ws.on("error", (err) => {
248
+ clearTimeout(connectTimeout);
249
+ console.error("[SubscriptionBridge] WebSocket error:", err.message);
192
250
  this.connecting = false;
251
+ this.wsConsecutiveFailures++;
193
252
  if (!this.ws)
194
253
  reject(new Error("WebSocket connection failed"));
195
- };
254
+ });
196
255
  });
197
256
  }
198
257
  scheduleReconnect() {
@@ -200,14 +259,19 @@ export class SubscriptionBridge {
200
259
  return;
201
260
  if (this.reconnectTimer)
202
261
  return;
262
+ if (this.wsConsecutiveFailures >= SubscriptionBridge.WS_FAILURE_THRESHOLD &&
263
+ !this.usingPollingFallback) {
264
+ console.error(`[SubscriptionBridge] ${this.wsConsecutiveFailures} consecutive WebSocket failures, activating HTTP polling fallback`);
265
+ this.activatePollingFallback();
266
+ }
267
+ const delay = Math.min(this.reconnectDelay * 2 ** Math.max(0, this.wsConsecutiveFailures - 1), this.maxReconnectDelay);
203
268
  this.reconnectTimer = setTimeout(() => {
204
269
  this.reconnectTimer = null;
205
270
  this.connect().catch((err) => {
206
- console.error("[SubscriptionBridge] Reconnect failed:", err);
207
- this.reconnectDelay = Math.min(this.reconnectDelay * 2, this.maxReconnectDelay);
271
+ console.error("[SubscriptionBridge] Reconnect failed:", err.message);
208
272
  this.scheduleReconnect();
209
273
  });
210
- }, this.reconnectDelay);
274
+ }, delay);
211
275
  }
212
276
  sendProjectSubscribe(projectId) {
213
277
  if (this.ws?.readyState !== WebSocket.OPEN)
@@ -230,15 +294,20 @@ export class SubscriptionBridge {
230
294
  const projectId = msg.context?.project_id;
231
295
  if (!projectId || !this.subscribedProjects.has(projectId))
232
296
  return;
297
+ if (this.usingPollingFallback) {
298
+ console.error("[SubscriptionBridge] WebSocket recovered, stopping HTTP polling fallback");
299
+ this.stopPolling();
300
+ this.usingPollingFallback = false;
301
+ }
302
+ this.wsConsecutiveFailures = 0;
303
+ this.reconnectDelay = 1000;
233
304
  const event = msg.event;
234
305
  const runId = msg.context?.run_id;
235
- // Status change notifications
236
306
  if (STATUS_EVENTS.has(event)) {
237
307
  this.server.sendResourceUpdated({
238
308
  uri: `soldy://project/${projectId}/status`,
239
309
  });
240
310
  }
241
- // Message notifications
242
311
  if (MESSAGE_EVENTS.has(event)) {
243
312
  this.server.sendResourceUpdated({
244
313
  uri: `soldy://project/${projectId}/messages`,
@@ -249,7 +318,6 @@ export class SubscriptionBridge {
249
318
  });
250
319
  }
251
320
  }
252
- // Material notifications
253
321
  if (msg.message?.materials?.length) {
254
322
  this.server.sendResourceUpdated({
255
323
  uri: `soldy://project/${projectId}/materials`,
@@ -261,6 +329,76 @@ export class SubscriptionBridge {
261
329
  }
262
330
  }
263
331
  }
332
+ // ---------------------------------------------------------------------------
333
+ // HTTP polling fallback — activated when WebSocket is unavailable
334
+ // ---------------------------------------------------------------------------
335
+ activatePollingFallback() {
336
+ this.usingPollingFallback = true;
337
+ this.ensurePolling();
338
+ }
339
+ ensurePolling() {
340
+ if (this.pollInterval)
341
+ return;
342
+ if (this.subscribedProjects.size === 0)
343
+ return;
344
+ console.error(`[SubscriptionBridge] Starting HTTP polling for ${this.subscribedProjects.size} project(s)`);
345
+ this.pollInterval = setInterval(() => {
346
+ this.pollAllProjects();
347
+ }, SubscriptionBridge.PROJECT_POLL_MS);
348
+ this.pollAllProjects();
349
+ }
350
+ stopPolling() {
351
+ if (this.pollInterval) {
352
+ clearInterval(this.pollInterval);
353
+ this.pollInterval = null;
354
+ }
355
+ }
356
+ async pollAllProjects() {
357
+ if (!this.server)
358
+ return;
359
+ const projects = [...this.subscribedProjects];
360
+ await Promise.allSettled(projects.map((id) => this.pollProject(id)));
361
+ }
362
+ async pollProject(projectId) {
363
+ if (!this.server)
364
+ return;
365
+ try {
366
+ const [project, { total: messageCount }, materials] = await Promise.all([
367
+ this.client.getProject(projectId),
368
+ this.client.listMessages(projectId, 1, 1),
369
+ this.client.getMaterials(projectId),
370
+ ]);
371
+ if (!project)
372
+ return;
373
+ const prev = this.projectSnapshots.get(projectId);
374
+ const current = {
375
+ status: project.status,
376
+ messageCount,
377
+ materialCount: materials.length,
378
+ };
379
+ this.projectSnapshots.set(projectId, current);
380
+ if (!prev)
381
+ return;
382
+ if (current.status !== prev.status) {
383
+ this.server.sendResourceUpdated({
384
+ uri: `soldy://project/${projectId}/status`,
385
+ });
386
+ }
387
+ if (current.messageCount !== prev.messageCount) {
388
+ this.server.sendResourceUpdated({
389
+ uri: `soldy://project/${projectId}/messages`,
390
+ });
391
+ }
392
+ if (current.materialCount !== prev.materialCount) {
393
+ this.server.sendResourceUpdated({
394
+ uri: `soldy://project/${projectId}/materials`,
395
+ });
396
+ }
397
+ }
398
+ catch (err) {
399
+ console.error(`[SubscriptionBridge] Poll error (project ${projectId}):`, err instanceof Error ? err.message : err);
400
+ }
401
+ }
264
402
  }
265
403
  /** Extract project_id from a soldy://project/... resource URI. */
266
404
  export function extractProjectId(uri) {
@@ -1 +1 @@
1
- {"version":3,"file":"subscriptions.js","sourceRoot":"","sources":["../src/subscriptions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"subscriptions.js","sourceRoot":"","sources":["../src/subscriptions.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,8 @@ Required: ratio — the video aspect ratio. Choose based on target platform:
13
13
  Also supports:
14
14
  - material_urls: local file paths (auto-uploaded), GCS URLs, or external http URLs
15
15
  - brand_id: pass for brand-aware generation (get from list_brands or extract_brand)
16
+ - input_mode: "agent" (default, full production pipeline) or "seedance" (direct Seedance 2.0 video generation from a single reference image — faster, lower-level, no creative direction phase)
17
+ - seedance_reference_url: reference image for Seedance 2.0 mode. Required when input_mode="seedance". Accepts a local file path (auto-uploaded), GCS URL, or http URL. In seedance mode, \`content\` may be empty to let the agent build the prompt from the reference.
16
18
 
17
19
  The agent starts processing and project status becomes "running".
18
20
  After sending, use watch_project(project_id) to subscribe for real-time status/message/material updates. Alternatively, poll get_project_status.`, {
@@ -31,7 +33,26 @@ After sending, use watch_project(project_id) to subscribe for real-time status/m
31
33
  .string()
32
34
  .optional()
33
35
  .describe("Brand ID for generation context. Get from list_brands or extract_brand."),
34
- }, async ({ project_id, content, material_urls, ratio, brand_id }) => {
36
+ input_mode: z
37
+ .enum(["agent", "seedance"])
38
+ .optional()
39
+ .describe("'agent' (default) runs the full production pipeline. 'seedance' uses Seedance 2.0 direct video generation from a single reference image — requires seedance_reference_url."),
40
+ seedance_reference_url: z
41
+ .string()
42
+ .optional()
43
+ .describe("Reference image for Seedance 2.0. Required when input_mode='seedance'. Local file paths are auto-uploaded; GCS/http URLs pass through."),
44
+ }, async ({ project_id, content, material_urls, ratio, brand_id, input_mode, seedance_reference_url, }) => {
45
+ if (input_mode === "seedance" && !seedance_reference_url?.trim()) {
46
+ return {
47
+ content: [
48
+ {
49
+ type: "text",
50
+ text: "seedance_reference_url is required when input_mode='seedance'.",
51
+ },
52
+ ],
53
+ isError: true,
54
+ };
55
+ }
35
56
  let resolvedUrls;
36
57
  if (material_urls?.length) {
37
58
  try {
@@ -49,12 +70,36 @@ After sending, use watch_project(project_id) to subscribe for real-time status/m
49
70
  };
50
71
  }
51
72
  }
73
+ let resolvedSeedanceRef;
74
+ if (seedance_reference_url?.trim()) {
75
+ try {
76
+ const [u] = await resolveUrls(client, [
77
+ seedance_reference_url.trim(),
78
+ ]);
79
+ resolvedSeedanceRef = u;
80
+ }
81
+ catch (err) {
82
+ return {
83
+ content: [
84
+ {
85
+ type: "text",
86
+ text: `Failed to process seedance_reference_url: ${err instanceof Error ? err.message : String(err)}`,
87
+ },
88
+ ],
89
+ isError: true,
90
+ };
91
+ }
92
+ }
52
93
  const body = {
53
94
  project_id,
54
95
  content,
55
96
  options: {
56
97
  ratio,
57
98
  ...(brand_id ? { brand_id } : {}),
99
+ ...(input_mode ? { input_mode } : {}),
100
+ ...(resolvedSeedanceRef
101
+ ? { seedance_reference_url: resolvedSeedanceRef }
102
+ : {}),
58
103
  },
59
104
  };
60
105
  if (resolvedUrls?.length)
@@ -70,11 +115,12 @@ After sending, use watch_project(project_id) to subscribe for real-time status/m
70
115
  ? ` with ${resolvedUrls.length} material(s)`
71
116
  : "";
72
117
  const brandInfo = brand_id ? ` (brand: ${brand_id})` : "";
118
+ const modeInfo = input_mode === "seedance" ? " [mode: seedance 2.0]" : "";
73
119
  return {
74
120
  content: [
75
121
  {
76
122
  type: "text",
77
- text: `Message sent${matInfo}${brandInfo}, ratio: ${ratio}. Status: ${resp.data.status}\nUse watch_project to subscribe for updates, or poll with get_project_status.`,
123
+ text: `Message sent${matInfo}${brandInfo}${modeInfo}, ratio: ${ratio}. Status: ${resp.data.status}\nUse watch_project to subscribe for updates, or poll with get_project_status.`,
78
124
  },
79
125
  ],
80
126
  };
@@ -1 +1 @@
1
- {"version":3,"file":"message.js","sourceRoot":"","sources":["../../src/tools/message.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"message.js","sourceRoot":"","sources":["../../src/tools/message.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@soldy_ai/mcp",
3
- "version": "0.1.6",
3
+ "version": "0.1.8",
4
4
  "description": "Soldy AI MCP Server — video ad generation via Claude Desktop, Cursor, Claude Code",
5
5
  "type": "module",
6
6
  "bin": {
@@ -10,7 +10,6 @@
10
10
  "build": "tsc",
11
11
  "dev": "tsx src/index.ts",
12
12
  "start": "node dist/index.js",
13
- "pack:dist": "npm run build && npm pack --pack-destination ../web/public/mcp",
14
13
  "lint": "biome check src/",
15
14
  "lint:fix": "biome check --write src/"
16
15
  },
@@ -18,9 +17,11 @@
18
17
  "@modelcontextprotocol/sdk": "^1.29.0",
19
18
  "@types/node": "^22.0.0",
20
19
  "typescript": "^5.7.0",
20
+ "ws": "^8.20.0",
21
21
  "zod": "^4.0.0"
22
22
  },
23
23
  "devDependencies": {
24
+ "@types/ws": "^8.18.1",
24
25
  "tsx": "^4.19.0"
25
26
  },
26
27
  "files": [