@collage-dam/mcp-server 0.1.2 → 0.1.3

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/CHANGELOG.md CHANGED
@@ -7,6 +7,26 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.1.3] — 2026-05-18
11
+
12
+ ### Added
13
+ - `get_asset_details` accepts an optional `include_preview` boolean
14
+ (default false). When true, the server fetches the asset's thumbnail
15
+ server-side, base64-encodes it, and appends an MCP `image` content
16
+ block alongside the existing JSON metadata. Clients that support image
17
+ rendering (Claude Desktop, Claude Code, etc.) display the thumbnail
18
+ inline; clients that don't, ignore the extra block. Capped at 200 KB
19
+ per asset (~67k tokens of base64) to bound the LLM's token budget —
20
+ larger thumbnails are skipped with a textual note pointing back at the
21
+ signed URL. Fetch timeout: 8 s.
22
+
23
+ Rationale: passing the thumbnail URL back as a string only worked in
24
+ rare hosts that auto-render markdown image links; most MCP clients
25
+ treat external HTTP URLs in tool output as untrusted and render a
26
+ broken-image placeholder. The `image` content block is the
27
+ spec-sanctioned way to expose visuals and matches how other MCP
28
+ servers (filesystem, screenshot, etc.) deliver image content.
29
+
10
30
  ## [0.1.2] — 2026-05-18
11
31
 
12
32
  ### Fixed
package/dist/index.js CHANGED
@@ -59,7 +59,7 @@ import { wrapPromptAsTool } from './prompts/wrap-prompt-as-tool.js';
59
59
  import { buildCollectionLookup } from './tools/asset-selection.js';
60
60
  export { COLLAGE_MCP_SCHEMA_VERSION, SchemaVersionSchema, addSchemaVersion, validateSchemaVersion, } from './conventions/schema-version.js';
61
61
  const SERVER_NAME = 'collage-mcp';
62
- const SERVER_VERSION = '0.1.2';
62
+ const SERVER_VERSION = '0.1.3';
63
63
  function withTextContent(inner) {
64
64
  return async (args) => {
65
65
  const result = await inner(args);
@@ -2,6 +2,7 @@ import { z } from 'zod';
2
2
  import type { CollageClient } from '../client.js';
3
3
  export declare const GetAssetDetailsInputSchema: {
4
4
  asset_id: z.ZodUnion<[z.ZodNumber, z.ZodString]>;
5
+ include_preview: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
5
6
  };
6
7
  export declare const GetAssetDetailsOutputSchema: z.ZodObject<{
7
8
  asset: z.ZodObject<{
@@ -314,8 +315,9 @@ export declare const GET_ASSET_DETAILS_DESCRIPTION: string;
314
315
  * Wraps `CollageClient.getAssetDetails()`, which calls
315
316
  * `POST /digital-assets/view-detail` with `digital_assets_id` body param.
316
317
  */
317
- export declare function buildGetAssetDetailsHandler(client: CollageClient): ({ asset_id }: {
318
+ export declare function buildGetAssetDetailsHandler(client: CollageClient): ({ asset_id, include_preview, }: {
318
319
  asset_id: number | string;
320
+ include_preview?: boolean;
319
321
  }) => Promise<{
320
322
  isError: boolean;
321
323
  content: {
@@ -335,10 +337,14 @@ export declare function buildGetAssetDetailsHandler(client: CollageClient): ({ a
335
337
  request_id: string;
336
338
  };
337
339
  } | {
338
- content: {
340
+ content: ({
339
341
  type: "text";
340
342
  text: string;
341
- }[];
343
+ } | {
344
+ type: "image";
345
+ data: string;
346
+ mimeType: string;
347
+ })[];
342
348
  structuredContent: {
343
349
  request_id: string;
344
350
  asset: {
@@ -1 +1 @@
1
- {"version":3,"file":"get-asset-details.d.ts","sourceRoot":"","sources":["../../src/tools/get-asset-details.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAGlD,eAAO,MAAM,0BAA0B;;CAItC,CAAC;AAEF,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAGtC,CAAC;AAEH,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAEhF,eAAO,MAAM,6BAA6B,QAKkB,CAAC;AAE7D;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,aAAa,IACjD,cAAc;IAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiC1D"}
1
+ {"version":3,"file":"get-asset-details.d.ts","sourceRoot":"","sources":["../../src/tools/get-asset-details.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AA4BlD,eAAO,MAAM,0BAA0B;;;CAYtC,CAAC;AAEF,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAGtC,CAAC;AAEH,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAEhF,eAAO,MAAM,6BAA6B,QAMwB,CAAC;AAgDnE;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,aAAa,IACjD,gCAGX;IACD,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;;;;;;;;;;;;;;;;;;;;cAwBa,MAAM;cAAQ,MAAM;;cACpB,OAAO;cAAQ,MAAM;kBAAY,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCtD"}
@@ -1,9 +1,37 @@
1
1
  import { z } from 'zod';
2
+ import { logger } from '../conventions/logger.js';
2
3
  import { DigitalAssetSchema } from '../types.js';
4
+ /**
5
+ * Per-asset cap on inline preview size. Larger thumbnails are skipped
6
+ * to protect the LLM's token budget — a 50 KB JPEG is already ~17k
7
+ * tokens once base64-encoded, so 200 KB (~67k tokens) is the upper bound
8
+ * we'll inline before bailing.
9
+ */
10
+ const MAX_PREVIEW_BYTES = 200 * 1024;
11
+ /**
12
+ * Hard timeout on the upstream thumbnail fetch. We don't want a slow
13
+ * S3 response to stall the entire tool call — if it takes longer, we
14
+ * skip the preview and still return the metadata.
15
+ */
16
+ const PREVIEW_FETCH_TIMEOUT_MS = 8000;
17
+ const PREVIEW_MIME_TYPES = {
18
+ jpg: 'image/jpeg',
19
+ jpeg: 'image/jpeg',
20
+ png: 'image/png',
21
+ gif: 'image/gif',
22
+ webp: 'image/webp',
23
+ svg: 'image/svg+xml',
24
+ };
3
25
  export const GetAssetDetailsInputSchema = {
4
26
  asset_id: z
5
27
  .union([z.number().int().positive(), z.string().min(1)])
6
28
  .describe('The numeric Collage asset ID to look up.'),
29
+ include_preview: z
30
+ .boolean()
31
+ .optional()
32
+ .default(false)
33
+ .describe('When true, fetch the asset thumbnail and include it as a base64 image content block so the client can render it inline. ' +
34
+ 'Capped at 200 KB per asset; larger previews are skipped with a note. Default false to keep token usage low.'),
7
35
  };
8
36
  export const GetAssetDetailsOutputSchema = z.object({
9
37
  asset: DigitalAssetSchema,
@@ -12,8 +40,44 @@ export const GetAssetDetailsOutputSchema = z.object({
12
40
  export const GET_ASSET_DETAILS_DESCRIPTION = 'Retrieve complete metadata for a single Collage asset by its ID. ' +
13
41
  'Returns the file name, type, size, dimensions, tags, folder location ' +
14
42
  '(breadcrumb), formatted upload metadata, and signed thumbnail/compressed ' +
15
- 'preview URLs valid for 24 hours. Use this after listing collections or ' +
16
- 'browsing folders to inspect a specific asset. Read-only.';
43
+ 'preview URLs valid for 24 hours. Pass include_preview=true to also embed ' +
44
+ 'the thumbnail bytes inline (base64) so MCP clients can render the image — ' +
45
+ 'capped at 200 KB per asset to protect token budget. Read-only.';
46
+ async function fetchPreview(url, fileType) {
47
+ const controller = new AbortController();
48
+ const timer = setTimeout(() => controller.abort(), PREVIEW_FETCH_TIMEOUT_MS);
49
+ try {
50
+ const response = await fetch(url, { signal: controller.signal });
51
+ if (!response.ok) {
52
+ return {
53
+ note: `Preview skipped: upstream returned HTTP ${response.status}.`,
54
+ };
55
+ }
56
+ const buffer = await response.arrayBuffer();
57
+ if (buffer.byteLength > MAX_PREVIEW_BYTES) {
58
+ return {
59
+ note: `Preview skipped: ${(buffer.byteLength / 1024).toFixed(0)} KB exceeds the ${MAX_PREVIEW_BYTES / 1024} KB cap. Open the source URL directly to view.`,
60
+ };
61
+ }
62
+ const mimeType = response.headers.get('content-type')?.split(';')[0]?.trim() ||
63
+ (fileType ? PREVIEW_MIME_TYPES[fileType.toLowerCase()] : undefined) ||
64
+ 'image/jpeg';
65
+ if (!mimeType.startsWith('image/')) {
66
+ return {
67
+ note: `Preview skipped: upstream content-type "${mimeType}" is not an image.`,
68
+ };
69
+ }
70
+ const data = Buffer.from(buffer).toString('base64');
71
+ return { imageBlock: { type: 'image', data, mimeType } };
72
+ }
73
+ catch (err) {
74
+ const message = err instanceof Error ? err.message : String(err);
75
+ return { note: `Preview skipped: ${message}` };
76
+ }
77
+ finally {
78
+ clearTimeout(timer);
79
+ }
80
+ }
17
81
  /**
18
82
  * Build the handler for the `get_asset_details` tool.
19
83
  *
@@ -21,7 +85,7 @@ export const GET_ASSET_DETAILS_DESCRIPTION = 'Retrieve complete metadata for a s
21
85
  * `POST /digital-assets/view-detail` with `digital_assets_id` body param.
22
86
  */
23
87
  export function buildGetAssetDetailsHandler(client) {
24
- return async ({ asset_id }) => {
88
+ return async ({ asset_id, include_preview = false, }) => {
25
89
  const result = await client.getAssetDetails(asset_id);
26
90
  if (!result.ok) {
27
91
  return {
@@ -42,13 +106,33 @@ export function buildGetAssetDetailsHandler(client) {
42
106
  asset: result.data,
43
107
  request_id: result.request_id,
44
108
  };
45
- return {
46
- content: [
47
- {
109
+ const content = [
110
+ {
111
+ type: 'text',
112
+ text: JSON.stringify(output, null, 2),
113
+ },
114
+ ];
115
+ if (include_preview) {
116
+ const url = result.data.thumbnail_file ?? null;
117
+ if (!url) {
118
+ content.push({
48
119
  type: 'text',
49
- text: JSON.stringify(output, null, 2),
50
- },
51
- ],
120
+ text: 'Preview skipped: asset has no thumbnail_file URL.',
121
+ });
122
+ }
123
+ else {
124
+ const preview = await fetchPreview(url, result.data.file_type ?? undefined);
125
+ if (preview.imageBlock) {
126
+ content.push(preview.imageBlock);
127
+ }
128
+ else if (preview.note) {
129
+ logger.info({ asset_id, note: preview.note }, 'get_asset_details: preview not embedded');
130
+ content.push({ type: 'text', text: preview.note });
131
+ }
132
+ }
133
+ }
134
+ return {
135
+ content,
52
136
  structuredContent: output,
53
137
  };
54
138
  };
@@ -1 +1 @@
1
- {"version":3,"file":"get-asset-details.js","sourceRoot":"","sources":["../../src/tools/get-asset-details.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEjD,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,QAAQ,EAAE,CAAC;SACR,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;SACvD,QAAQ,CAAC,0CAA0C,CAAC;CACxD,CAAC;AAEF,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC;IAClD,KAAK,EAAE,kBAAkB;IACzB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;CACvB,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,6BAA6B,GACxC,mEAAmE;IACnE,uEAAuE;IACvE,2EAA2E;IAC3E,yEAAyE;IACzE,0DAA0D,CAAC;AAE7D;;;;;GAKG;AACH,MAAM,UAAU,2BAA2B,CAAC,MAAqB;IAC/D,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAiC,EAAE,EAAE;QAC3D,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QACtD,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,6BAA6B,MAAM,CAAC,KAAK,CAAC,IAAI,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE;qBACjF;iBACF;gBACD,iBAAiB,EAAE;oBACjB,KAAK,EAAE,MAAM,CAAC,KAAK;oBACnB,UAAU,EAAE,MAAM,CAAC,UAAU;iBAC9B;aACF,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAA0B;YACpC,KAAK,EAAE,MAAM,CAAC,IAAI;YAClB,UAAU,EAAE,MAAM,CAAC,UAAU;SAC9B,CAAC;QAEF,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;iBACtC;aACF;YACD,iBAAiB,EAAE,MAAM;SAC1B,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"get-asset-details.js","sourceRoot":"","sources":["../../src/tools/get-asset-details.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@collage-dam/mcp-server",
3
- "version": "0.1.2",
3
+ "version": "0.1.3",
4
4
  "description": "Model Context Protocol (MCP) server for the Collage Digital Asset Management platform. Exposes Collage workspaces — assets, folders, collections, share links, audit prompts — to AI clients (Claude Desktop, Cursor, ChatGPT) through a typed tool surface.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",