super-feedback-mcp 0.2.2 → 0.2.5

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
@@ -1,6 +1,6 @@
1
- # Super Feedback MCP Server
1
+ # SuperFeedback MCP Server
2
2
 
3
- An MCP (Model Context Protocol) server that enables AI agents in Cursor to query and resolve client feedback from Super Feedback projects.
3
+ An MCP (Model Context Protocol) server that enables AI agents in Cursor to query and resolve client feedback from SuperFeedback projects.
4
4
 
5
5
  ## Installation
6
6
 
@@ -57,7 +57,7 @@ Or if published to npm:
57
57
  *At least one of `ACCESS_CODE` or `ADMIN_CODE` is required. For full functionality (read + resolve), provide both.
58
58
 
59
59
  **Where to find these codes:**
60
- - Go to your Super Feedback dashboard
60
+ - Go to your SuperFeedback dashboard
61
61
  - Select your project
62
62
  - Click "Settings" or the gear icon
63
63
  - Copy the "Access Code" and "Admin Code"
@@ -121,7 +121,7 @@ The agent will:
121
121
 
122
122
  ## How It Works
123
123
 
124
- The MCP server connects to your Super Feedback project via the Convex API using your access code. It transforms the raw feedback data into AI-friendly format with:
124
+ The MCP server connects to your SuperFeedback project via the Convex API using your access code. It transforms the raw feedback data into AI-friendly format with:
125
125
 
126
126
  - **Element identification**: Multiple selector strategies (ID, test ID, CSS path, XPath)
127
127
  - **Route mapping**: Extracts page path and suggests likely source files
@@ -150,7 +150,7 @@ Make sure you've set the `SUPER_FEEDBACK_ACCESS_CODE` in your MCP config's `env`
150
150
 
151
151
  ### "API error: 401"
152
152
 
153
- Your access code is invalid or expired. Check your project settings in Super Feedback.
153
+ Your access code is invalid or expired. Check your project settings in SuperFeedback.
154
154
 
155
155
  ### "API error: 404"
156
156
 
package/dist/index.js CHANGED
@@ -39,7 +39,7 @@ async function callConvexAPI(endpoint, options) {
39
39
  // Create MCP server
40
40
  const server = new McpServer({
41
41
  name: "super-feedback",
42
- version: "0.2.2",
42
+ version: "0.2.5",
43
43
  });
44
44
  // Tool 1: Get feedback summary (lightweight overview)
45
45
  server.registerTool("get_feedback_summary", {
@@ -207,8 +207,33 @@ Use this after get_feedback_summary to dive into a specific comment.`,
207
207
  text += `\n ${change.property}: ${change.oldValue} → ${change.newValue}`;
208
208
  });
209
209
  }
210
+ // Note if there are images attached
211
+ if (c.imageUrls && c.imageUrls.length > 0) {
212
+ text += `\n\nšŸ–¼ļø Attached Images: ${c.imageUrls.length} image(s)`;
213
+ }
214
+ // Fetch images and convert to base64 for MCP ImageContent
215
+ const imageContents = [];
216
+ if (c.imageUrls && c.imageUrls.length > 0) {
217
+ for (const url of c.imageUrls) {
218
+ try {
219
+ const imgResponse = await fetch(url);
220
+ if (imgResponse.ok) {
221
+ const buffer = await imgResponse.arrayBuffer();
222
+ const base64 = Buffer.from(buffer).toString("base64");
223
+ const mimeType = imgResponse.headers.get("content-type") || "image/png";
224
+ imageContents.push({ type: "image", data: base64, mimeType });
225
+ }
226
+ }
227
+ catch {
228
+ // Skip images that fail to fetch
229
+ }
230
+ }
231
+ }
210
232
  return {
211
- content: [{ type: "text", text }],
233
+ content: [
234
+ { type: "text", text },
235
+ ...imageContents,
236
+ ],
212
237
  structuredContent: { found: true, comment: c },
213
238
  };
214
239
  }
@@ -277,7 +302,7 @@ async function main() {
277
302
  const transport = new StdioServerTransport();
278
303
  await server.connect(transport);
279
304
  // Log to stderr so it doesn't interfere with MCP protocol on stdout
280
- console.error("Super Feedback MCP server running...");
305
+ console.error("SuperFeedback MCP server running...");
281
306
  }
282
307
  main().catch((error) => {
283
308
  console.error("Fatal error:", error);
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "super-feedback-mcp",
3
- "version": "0.2.2",
4
- "description": "MCP server for Super Feedback - enables AI agents to query and resolve client feedback",
3
+ "version": "0.2.5",
4
+ "description": "MCP server for SuperFeedback - enables AI agents to query and resolve client feedback",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
7
7
  "bin": {
package/src/index.ts CHANGED
@@ -72,6 +72,7 @@ interface FullCommentDetails {
72
72
  elementText: string;
73
73
  label?: string;
74
74
  }>;
75
+ imageUrls?: string[];
75
76
  }
76
77
 
77
78
  // Configuration from environment
@@ -115,7 +116,7 @@ async function callConvexAPI<T>(endpoint: string, options?: RequestInit): Promis
115
116
  // Create MCP server
116
117
  const server = new McpServer({
117
118
  name: "super-feedback",
118
- version: "0.2.2",
119
+ version: "0.2.5",
119
120
  });
120
121
 
121
122
  // Tool 1: Get feedback summary (lightweight overview)
@@ -309,8 +310,34 @@ Use this after get_feedback_summary to dive into a specific comment.`,
309
310
  });
310
311
  }
311
312
 
313
+ // Note if there are images attached
314
+ if (c.imageUrls && c.imageUrls.length > 0) {
315
+ text += `\n\nšŸ–¼ļø Attached Images: ${c.imageUrls.length} image(s)`;
316
+ }
317
+
318
+ // Fetch images and convert to base64 for MCP ImageContent
319
+ const imageContents: Array<{ type: "image"; data: string; mimeType: string }> = [];
320
+ if (c.imageUrls && c.imageUrls.length > 0) {
321
+ for (const url of c.imageUrls) {
322
+ try {
323
+ const imgResponse = await fetch(url);
324
+ if (imgResponse.ok) {
325
+ const buffer = await imgResponse.arrayBuffer();
326
+ const base64 = Buffer.from(buffer).toString("base64");
327
+ const mimeType = imgResponse.headers.get("content-type") || "image/png";
328
+ imageContents.push({ type: "image", data: base64, mimeType });
329
+ }
330
+ } catch {
331
+ // Skip images that fail to fetch
332
+ }
333
+ }
334
+ }
335
+
312
336
  return {
313
- content: [{ type: "text", text }],
337
+ content: [
338
+ { type: "text", text },
339
+ ...imageContents,
340
+ ],
314
341
  structuredContent: { found: true, comment: c },
315
342
  };
316
343
  } catch (error) {
@@ -388,7 +415,7 @@ async function main() {
388
415
  await server.connect(transport);
389
416
 
390
417
  // Log to stderr so it doesn't interfere with MCP protocol on stdout
391
- console.error("Super Feedback MCP server running...");
418
+ console.error("SuperFeedback MCP server running...");
392
419
  }
393
420
 
394
421
  main().catch((error) => {