@collage-dam/mcp-server 0.1.0

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 (306) hide show
  1. package/.env.example +56 -0
  2. package/CHANGELOG.md +90 -0
  3. package/LICENSE +21 -0
  4. package/README.md +512 -0
  5. package/dist/client.d.ts +497 -0
  6. package/dist/client.d.ts.map +1 -0
  7. package/dist/client.js +1162 -0
  8. package/dist/client.js.map +1 -0
  9. package/dist/conventions/confirmation.d.ts +89 -0
  10. package/dist/conventions/confirmation.d.ts.map +1 -0
  11. package/dist/conventions/confirmation.js +132 -0
  12. package/dist/conventions/confirmation.js.map +1 -0
  13. package/dist/conventions/dry-run/batch-executor.d.ts +36 -0
  14. package/dist/conventions/dry-run/batch-executor.d.ts.map +1 -0
  15. package/dist/conventions/dry-run/batch-executor.js +89 -0
  16. package/dist/conventions/dry-run/batch-executor.js.map +1 -0
  17. package/dist/conventions/dry-run/diff-renderer.d.ts +34 -0
  18. package/dist/conventions/dry-run/diff-renderer.d.ts.map +1 -0
  19. package/dist/conventions/dry-run/diff-renderer.js +158 -0
  20. package/dist/conventions/dry-run/diff-renderer.js.map +1 -0
  21. package/dist/conventions/dry-run/index.d.ts +13 -0
  22. package/dist/conventions/dry-run/index.d.ts.map +1 -0
  23. package/dist/conventions/dry-run/index.js +10 -0
  24. package/dist/conventions/dry-run/index.js.map +1 -0
  25. package/dist/conventions/dry-run/mutating-tool.d.ts +64 -0
  26. package/dist/conventions/dry-run/mutating-tool.d.ts.map +1 -0
  27. package/dist/conventions/dry-run/mutating-tool.js +88 -0
  28. package/dist/conventions/dry-run/mutating-tool.js.map +1 -0
  29. package/dist/conventions/dry-run/summary.d.ts +66 -0
  30. package/dist/conventions/dry-run/summary.d.ts.map +1 -0
  31. package/dist/conventions/dry-run/summary.js +185 -0
  32. package/dist/conventions/dry-run/summary.js.map +1 -0
  33. package/dist/conventions/dry-run/types.d.ts +597 -0
  34. package/dist/conventions/dry-run/types.d.ts.map +1 -0
  35. package/dist/conventions/dry-run/types.js +108 -0
  36. package/dist/conventions/dry-run/types.js.map +1 -0
  37. package/dist/conventions/dry-run/with-dry-run.d.ts +66 -0
  38. package/dist/conventions/dry-run/with-dry-run.d.ts.map +1 -0
  39. package/dist/conventions/dry-run/with-dry-run.js +219 -0
  40. package/dist/conventions/dry-run/with-dry-run.js.map +1 -0
  41. package/dist/conventions/env.d.ts +49 -0
  42. package/dist/conventions/env.d.ts.map +1 -0
  43. package/dist/conventions/env.js +84 -0
  44. package/dist/conventions/env.js.map +1 -0
  45. package/dist/conventions/errors.d.ts +68 -0
  46. package/dist/conventions/errors.d.ts.map +1 -0
  47. package/dist/conventions/errors.js +81 -0
  48. package/dist/conventions/errors.js.map +1 -0
  49. package/dist/conventions/logger.d.ts +28 -0
  50. package/dist/conventions/logger.d.ts.map +1 -0
  51. package/dist/conventions/logger.js +105 -0
  52. package/dist/conventions/logger.js.map +1 -0
  53. package/dist/conventions/pagination.d.ts +37 -0
  54. package/dist/conventions/pagination.d.ts.map +1 -0
  55. package/dist/conventions/pagination.js +53 -0
  56. package/dist/conventions/pagination.js.map +1 -0
  57. package/dist/conventions/rate-limiter.d.ts +54 -0
  58. package/dist/conventions/rate-limiter.d.ts.map +1 -0
  59. package/dist/conventions/rate-limiter.js +143 -0
  60. package/dist/conventions/rate-limiter.js.map +1 -0
  61. package/dist/conventions/response-budget.d.ts +66 -0
  62. package/dist/conventions/response-budget.d.ts.map +1 -0
  63. package/dist/conventions/response-budget.js +89 -0
  64. package/dist/conventions/response-budget.js.map +1 -0
  65. package/dist/conventions/schema-version.d.ts +27 -0
  66. package/dist/conventions/schema-version.d.ts.map +1 -0
  67. package/dist/conventions/schema-version.js +29 -0
  68. package/dist/conventions/schema-version.js.map +1 -0
  69. package/dist/conventions/state-store-redis.d.ts +32 -0
  70. package/dist/conventions/state-store-redis.d.ts.map +1 -0
  71. package/dist/conventions/state-store-redis.js +77 -0
  72. package/dist/conventions/state-store-redis.js.map +1 -0
  73. package/dist/conventions/state-store.d.ts +46 -0
  74. package/dist/conventions/state-store.d.ts.map +1 -0
  75. package/dist/conventions/state-store.js +105 -0
  76. package/dist/conventions/state-store.js.map +1 -0
  77. package/dist/index.d.ts +5 -0
  78. package/dist/index.d.ts.map +1 -0
  79. package/dist/index.js +421 -0
  80. package/dist/index.js.map +1 -0
  81. package/dist/prompts/collection-audit.d.ts +13 -0
  82. package/dist/prompts/collection-audit.d.ts.map +1 -0
  83. package/dist/prompts/collection-audit.js +168 -0
  84. package/dist/prompts/collection-audit.js.map +1 -0
  85. package/dist/prompts/create-distribution.d.ts +15 -0
  86. package/dist/prompts/create-distribution.d.ts.map +1 -0
  87. package/dist/prompts/create-distribution.js +111 -0
  88. package/dist/prompts/create-distribution.js.map +1 -0
  89. package/dist/prompts/helpers.d.ts +20 -0
  90. package/dist/prompts/helpers.d.ts.map +1 -0
  91. package/dist/prompts/helpers.js +53 -0
  92. package/dist/prompts/helpers.js.map +1 -0
  93. package/dist/prompts/library-health-audit.d.ts +13 -0
  94. package/dist/prompts/library-health-audit.d.ts.map +1 -0
  95. package/dist/prompts/library-health-audit.js +131 -0
  96. package/dist/prompts/library-health-audit.js.map +1 -0
  97. package/dist/prompts/usage-insights.d.ts +13 -0
  98. package/dist/prompts/usage-insights.d.ts.map +1 -0
  99. package/dist/prompts/usage-insights.js +98 -0
  100. package/dist/prompts/usage-insights.js.map +1 -0
  101. package/dist/prompts/wrap-prompt-as-tool.d.ts +48 -0
  102. package/dist/prompts/wrap-prompt-as-tool.d.ts.map +1 -0
  103. package/dist/prompts/wrap-prompt-as-tool.js +61 -0
  104. package/dist/prompts/wrap-prompt-as-tool.js.map +1 -0
  105. package/dist/resources/asset-by-id.d.ts +4 -0
  106. package/dist/resources/asset-by-id.d.ts.map +1 -0
  107. package/dist/resources/asset-by-id.js +27 -0
  108. package/dist/resources/asset-by-id.js.map +1 -0
  109. package/dist/resources/collections.d.ts +5 -0
  110. package/dist/resources/collections.d.ts.map +1 -0
  111. package/dist/resources/collections.js +48 -0
  112. package/dist/resources/collections.js.map +1 -0
  113. package/dist/resources/custom-fields.d.ts +4 -0
  114. package/dist/resources/custom-fields.d.ts.map +1 -0
  115. package/dist/resources/custom-fields.js +30 -0
  116. package/dist/resources/custom-fields.js.map +1 -0
  117. package/dist/resources/folders.d.ts +5 -0
  118. package/dist/resources/folders.d.ts.map +1 -0
  119. package/dist/resources/folders.js +73 -0
  120. package/dist/resources/folders.js.map +1 -0
  121. package/dist/resources/helpers.d.ts +17 -0
  122. package/dist/resources/helpers.d.ts.map +1 -0
  123. package/dist/resources/helpers.js +59 -0
  124. package/dist/resources/helpers.js.map +1 -0
  125. package/dist/resources/portals.d.ts +5 -0
  126. package/dist/resources/portals.d.ts.map +1 -0
  127. package/dist/resources/portals.js +81 -0
  128. package/dist/resources/portals.js.map +1 -0
  129. package/dist/resources/recent-and-dashboard.d.ts +5 -0
  130. package/dist/resources/recent-and-dashboard.d.ts.map +1 -0
  131. package/dist/resources/recent-and-dashboard.js +42 -0
  132. package/dist/resources/recent-and-dashboard.js.map +1 -0
  133. package/dist/tools/asset-selection.d.ts +102 -0
  134. package/dist/tools/asset-selection.d.ts.map +1 -0
  135. package/dist/tools/asset-selection.js +133 -0
  136. package/dist/tools/asset-selection.js.map +1 -0
  137. package/dist/tools/audit/audit-folder-structure.d.ts +108 -0
  138. package/dist/tools/audit/audit-folder-structure.d.ts.map +1 -0
  139. package/dist/tools/audit/audit-folder-structure.js +260 -0
  140. package/dist/tools/audit/audit-folder-structure.js.map +1 -0
  141. package/dist/tools/audit/audit-naming-conventions.d.ts +83 -0
  142. package/dist/tools/audit/audit-naming-conventions.d.ts.map +1 -0
  143. package/dist/tools/audit/audit-naming-conventions.js +238 -0
  144. package/dist/tools/audit/audit-naming-conventions.js.map +1 -0
  145. package/dist/tools/audit/audit-tagging-hygiene.d.ts +77 -0
  146. package/dist/tools/audit/audit-tagging-hygiene.d.ts.map +1 -0
  147. package/dist/tools/audit/audit-tagging-hygiene.js +402 -0
  148. package/dist/tools/audit/audit-tagging-hygiene.js.map +1 -0
  149. package/dist/tools/audit/detect-duplicates.d.ts +62 -0
  150. package/dist/tools/audit/detect-duplicates.d.ts.map +1 -0
  151. package/dist/tools/audit/detect-duplicates.js +0 -0
  152. package/dist/tools/audit/detect-duplicates.js.map +1 -0
  153. package/dist/tools/audit/types.d.ts +526 -0
  154. package/dist/tools/audit/types.d.ts.map +1 -0
  155. package/dist/tools/audit/types.js +188 -0
  156. package/dist/tools/audit/types.js.map +1 -0
  157. package/dist/tools/bulk-move-assets.d.ts +78 -0
  158. package/dist/tools/bulk-move-assets.d.ts.map +1 -0
  159. package/dist/tools/bulk-move-assets.js +122 -0
  160. package/dist/tools/bulk-move-assets.js.map +1 -0
  161. package/dist/tools/bulk-normalize-filenames.d.ts +62 -0
  162. package/dist/tools/bulk-normalize-filenames.d.ts.map +1 -0
  163. package/dist/tools/bulk-normalize-filenames.js +237 -0
  164. package/dist/tools/bulk-normalize-filenames.js.map +1 -0
  165. package/dist/tools/bulk-rename-assets.d.ts +79 -0
  166. package/dist/tools/bulk-rename-assets.d.ts.map +1 -0
  167. package/dist/tools/bulk-rename-assets.js +139 -0
  168. package/dist/tools/bulk-rename-assets.js.map +1 -0
  169. package/dist/tools/bulk-tags.d.ts +107 -0
  170. package/dist/tools/bulk-tags.d.ts.map +1 -0
  171. package/dist/tools/bulk-tags.js +220 -0
  172. package/dist/tools/bulk-tags.js.map +1 -0
  173. package/dist/tools/client-adapters.d.ts +76 -0
  174. package/dist/tools/client-adapters.d.ts.map +1 -0
  175. package/dist/tools/client-adapters.js +648 -0
  176. package/dist/tools/client-adapters.js.map +1 -0
  177. package/dist/tools/collection-membership.d.ts +90 -0
  178. package/dist/tools/collection-membership.d.ts.map +1 -0
  179. package/dist/tools/collection-membership.js +195 -0
  180. package/dist/tools/collection-membership.js.map +1 -0
  181. package/dist/tools/create-collection.d.ts +63 -0
  182. package/dist/tools/create-collection.d.ts.map +1 -0
  183. package/dist/tools/create-collection.js +151 -0
  184. package/dist/tools/create-collection.js.map +1 -0
  185. package/dist/tools/create-folder.d.ts +46 -0
  186. package/dist/tools/create-folder.d.ts.map +1 -0
  187. package/dist/tools/create-folder.js +83 -0
  188. package/dist/tools/create-folder.js.map +1 -0
  189. package/dist/tools/create-share-link.d.ts +107 -0
  190. package/dist/tools/create-share-link.d.ts.map +1 -0
  191. package/dist/tools/create-share-link.js +239 -0
  192. package/dist/tools/create-share-link.js.map +1 -0
  193. package/dist/tools/get-asset-details.d.ts +401 -0
  194. package/dist/tools/get-asset-details.d.ts.map +1 -0
  195. package/dist/tools/get-asset-details.js +56 -0
  196. package/dist/tools/get-asset-details.js.map +1 -0
  197. package/dist/tools/get-collection.d.ts +126 -0
  198. package/dist/tools/get-collection.d.ts.map +1 -0
  199. package/dist/tools/get-collection.js +52 -0
  200. package/dist/tools/get-collection.js.map +1 -0
  201. package/dist/tools/get-embed-code.d.ts +195 -0
  202. package/dist/tools/get-embed-code.d.ts.map +1 -0
  203. package/dist/tools/get-embed-code.js +214 -0
  204. package/dist/tools/get-embed-code.js.map +1 -0
  205. package/dist/tools/insights/analyze-share-links.d.ts +159 -0
  206. package/dist/tools/insights/analyze-share-links.d.ts.map +1 -0
  207. package/dist/tools/insights/analyze-share-links.js +314 -0
  208. package/dist/tools/insights/analyze-share-links.js.map +1 -0
  209. package/dist/tools/insights/insight-cache.d.ts +36 -0
  210. package/dist/tools/insights/insight-cache.d.ts.map +1 -0
  211. package/dist/tools/insights/insight-cache.js +98 -0
  212. package/dist/tools/insights/insight-cache.js.map +1 -0
  213. package/dist/tools/insights/report-asset-activation.d.ts +149 -0
  214. package/dist/tools/insights/report-asset-activation.d.ts.map +1 -0
  215. package/dist/tools/insights/report-asset-activation.js +380 -0
  216. package/dist/tools/insights/report-asset-activation.js.map +1 -0
  217. package/dist/tools/insights/report-stale-assets.d.ts +120 -0
  218. package/dist/tools/insights/report-stale-assets.d.ts.map +1 -0
  219. package/dist/tools/insights/report-stale-assets.js +281 -0
  220. package/dist/tools/insights/report-stale-assets.js.map +1 -0
  221. package/dist/tools/insights/report-top-assets.d.ts +139 -0
  222. package/dist/tools/insights/report-top-assets.d.ts.map +1 -0
  223. package/dist/tools/insights/report-top-assets.js +407 -0
  224. package/dist/tools/insights/report-top-assets.js.map +1 -0
  225. package/dist/tools/list-categories.d.ts +127 -0
  226. package/dist/tools/list-categories.d.ts.map +1 -0
  227. package/dist/tools/list-categories.js +68 -0
  228. package/dist/tools/list-categories.js.map +1 -0
  229. package/dist/tools/list-collections.d.ts +127 -0
  230. package/dist/tools/list-collections.d.ts.map +1 -0
  231. package/dist/tools/list-collections.js +53 -0
  232. package/dist/tools/list-collections.js.map +1 -0
  233. package/dist/tools/list-custom-fields.d.ts +125 -0
  234. package/dist/tools/list-custom-fields.d.ts.map +1 -0
  235. package/dist/tools/list-custom-fields.js +51 -0
  236. package/dist/tools/list-custom-fields.js.map +1 -0
  237. package/dist/tools/list-share-links.d.ts +192 -0
  238. package/dist/tools/list-share-links.d.ts.map +1 -0
  239. package/dist/tools/list-share-links.js +92 -0
  240. package/dist/tools/list-share-links.js.map +1 -0
  241. package/dist/tools/list-workspaces.d.ts +88 -0
  242. package/dist/tools/list-workspaces.d.ts.map +1 -0
  243. package/dist/tools/list-workspaces.js +71 -0
  244. package/dist/tools/list-workspaces.js.map +1 -0
  245. package/dist/tools/move-asset.d.ts +48 -0
  246. package/dist/tools/move-asset.d.ts.map +1 -0
  247. package/dist/tools/move-asset.js +85 -0
  248. package/dist/tools/move-asset.js.map +1 -0
  249. package/dist/tools/rename-asset.d.ts +88 -0
  250. package/dist/tools/rename-asset.d.ts.map +1 -0
  251. package/dist/tools/rename-asset.js +100 -0
  252. package/dist/tools/rename-asset.js.map +1 -0
  253. package/dist/tools/rename-folder.d.ts +55 -0
  254. package/dist/tools/rename-folder.d.ts.map +1 -0
  255. package/dist/tools/rename-folder.js +101 -0
  256. package/dist/tools/rename-folder.js.map +1 -0
  257. package/dist/tools/revoke-share-link.d.ts +55 -0
  258. package/dist/tools/revoke-share-link.d.ts.map +1 -0
  259. package/dist/tools/revoke-share-link.js +77 -0
  260. package/dist/tools/revoke-share-link.js.map +1 -0
  261. package/dist/tools/search/facets.d.ts +34 -0
  262. package/dist/tools/search/facets.d.ts.map +1 -0
  263. package/dist/tools/search/facets.js +147 -0
  264. package/dist/tools/search/facets.js.map +1 -0
  265. package/dist/tools/search/filter-builder.d.ts +33 -0
  266. package/dist/tools/search/filter-builder.d.ts.map +1 -0
  267. package/dist/tools/search/filter-builder.js +111 -0
  268. package/dist/tools/search/filter-builder.js.map +1 -0
  269. package/dist/tools/search/search-assets.d.ts +41 -0
  270. package/dist/tools/search/search-assets.d.ts.map +1 -0
  271. package/dist/tools/search/search-assets.js +162 -0
  272. package/dist/tools/search/search-assets.js.map +1 -0
  273. package/dist/tools/search/search-collections.d.ts +35 -0
  274. package/dist/tools/search/search-collections.d.ts.map +1 -0
  275. package/dist/tools/search/search-collections.js +103 -0
  276. package/dist/tools/search/search-collections.js.map +1 -0
  277. package/dist/tools/search/types.d.ts +1047 -0
  278. package/dist/tools/search/types.d.ts.map +1 -0
  279. package/dist/tools/search/types.js +216 -0
  280. package/dist/tools/search/types.js.map +1 -0
  281. package/dist/tools/update-asset-metadata.d.ts +78 -0
  282. package/dist/tools/update-asset-metadata.d.ts.map +1 -0
  283. package/dist/tools/update-asset-metadata.js +203 -0
  284. package/dist/tools/update-asset-metadata.js.map +1 -0
  285. package/dist/tools/update-collection.d.ts +69 -0
  286. package/dist/tools/update-collection.d.ts.map +1 -0
  287. package/dist/tools/update-collection.js +142 -0
  288. package/dist/tools/update-collection.js.map +1 -0
  289. package/dist/tools/view-category-contents.d.ts +231 -0
  290. package/dist/tools/view-category-contents.d.ts.map +1 -0
  291. package/dist/tools/view-category-contents.js +97 -0
  292. package/dist/tools/view-category-contents.js.map +1 -0
  293. package/dist/types.d.ts +1326 -0
  294. package/dist/types.d.ts.map +1 -0
  295. package/dist/types.js +288 -0
  296. package/dist/types.js.map +1 -0
  297. package/dist/typesense.d.ts +84 -0
  298. package/dist/typesense.d.ts.map +1 -0
  299. package/dist/typesense.js +243 -0
  300. package/dist/typesense.js.map +1 -0
  301. package/docs/api-field-verification.md +244 -0
  302. package/docs/deployment-runbook.md +446 -0
  303. package/docs/security-review.md +195 -0
  304. package/docs/typesense-filter-schema.md +262 -0
  305. package/docs/verified-endpoints.md +38 -0
  306. package/package.json +72 -0
package/dist/index.js ADDED
@@ -0,0 +1,421 @@
1
+ #!/usr/bin/env node
2
+ import { McpServer, ResourceTemplate } from '@modelcontextprotocol/sdk/server/mcp.js';
3
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
4
+ import { z } from 'zod';
5
+ import { CollageClient } from './client.js';
6
+ import { loadConfig } from './conventions/env.js';
7
+ import { logger } from './conventions/logger.js';
8
+ import { addSchemaVersion } from './conventions/schema-version.js';
9
+ import { InMemoryStateStore } from './conventions/state-store.js';
10
+ import { buildListWorkspacesHandler, LIST_WORKSPACES_DESCRIPTION, } from './tools/list-workspaces.js';
11
+ import { buildListCollectionsHandler, LIST_COLLECTIONS_DESCRIPTION, } from './tools/list-collections.js';
12
+ import { buildGetAssetDetailsHandler, GET_ASSET_DETAILS_DESCRIPTION, GetAssetDetailsInputSchema, } from './tools/get-asset-details.js';
13
+ import { buildGetCollectionHandler, GET_COLLECTION_DESCRIPTION, GetCollectionInputSchema, } from './tools/get-collection.js';
14
+ import { buildListCustomFieldsHandler, LIST_CUSTOM_FIELDS_DESCRIPTION, } from './tools/list-custom-fields.js';
15
+ import { buildListCategoriesHandler, LIST_CATEGORIES_DESCRIPTION, ListCategoriesInputSchema, } from './tools/list-categories.js';
16
+ import { buildViewCategoryContentsHandler, VIEW_CATEGORY_CONTENTS_DESCRIPTION, ViewCategoryContentsInputSchema, } from './tools/view-category-contents.js';
17
+ import { buildSearchAssetsHandler, SEARCH_ASSETS_DESCRIPTION, } from './tools/search/search-assets.js';
18
+ import { buildSearchCollectionsHandler, SEARCH_COLLECTIONS_DESCRIPTION, } from './tools/search/search-collections.js';
19
+ import { SearchAssetsInputSchema, SearchCollectionsInputSchema, } from './tools/search/types.js';
20
+ import { createCollageSearchClient } from './typesense.js';
21
+ // ── Phase 1 mutating tools ───────────────────────────────────────────
22
+ import { RenameAssetTool, RENAME_ASSET_DESCRIPTION, RenameAssetInputSchema, } from './tools/rename-asset.js';
23
+ import { UpdateAssetMetadataTool, UPDATE_ASSET_METADATA_DESCRIPTION, UpdateAssetMetadataInputSchema, } from './tools/update-asset-metadata.js';
24
+ import { BulkSetTagsTool, BulkAddTagsTool, BulkRemoveTagsTool, BULK_SET_TAGS_DESCRIPTION, BULK_ADD_TAGS_DESCRIPTION, BULK_REMOVE_TAGS_DESCRIPTION, BulkTagsInputSchema, } from './tools/bulk-tags.js';
25
+ import { CreateCollectionTool, CREATE_COLLECTION_DESCRIPTION, CreateCollectionInputSchema, } from './tools/create-collection.js';
26
+ import { UpdateCollectionTool, UPDATE_COLLECTION_DESCRIPTION, UpdateCollectionInputSchema, } from './tools/update-collection.js';
27
+ import { AddToCollectionTool, RemoveFromCollectionTool, ADD_TO_COLLECTION_DESCRIPTION, REMOVE_FROM_COLLECTION_DESCRIPTION, CollectionMembershipInputSchema, } from './tools/collection-membership.js';
28
+ // ── Phase 1 read-only audit tool ─────────────────────────────────────
29
+ import { buildAuditTaggingHygieneTool, AUDIT_TAGGING_HYGIENE_DESCRIPTION, AuditTaggingHygieneInputSchema, } from './tools/audit/audit-tagging-hygiene.js';
30
+ // ── Phase 2 Distribution Insights tools ─────────────────────────────
31
+ import { buildAnalyzeShareLinksTool, ANALYZE_SHARE_LINKS_DESCRIPTION, AnalyzeShareLinksInputSchema, } from './tools/insights/analyze-share-links.js';
32
+ import { buildReportAssetActivationTool, REPORT_ASSET_ACTIVATION_DESCRIPTION, ReportAssetActivationInputSchema, } from './tools/insights/report-asset-activation.js';
33
+ import { buildReportTopAssetsTool, REPORT_TOP_ASSETS_DESCRIPTION, ReportTopAssetsInputSchema, } from './tools/insights/report-top-assets.js';
34
+ import { buildReportStaleAssetsTool, REPORT_STALE_ASSETS_DESCRIPTION, ReportStaleAssetsInputSchema, } from './tools/insights/report-stale-assets.js';
35
+ import { buildCachedShareLinkEnumerator } from './tools/insights/insight-cache.js';
36
+ // ── Phase 1 Share Link & Embed tools ─────────────────────────────────
37
+ import { CreateShareLinkTool, CREATE_SHARE_LINK_DESCRIPTION, CreateShareLinkInputSchema, } from './tools/create-share-link.js';
38
+ import { RevokeShareLinkTool, REVOKE_SHARE_LINK_DESCRIPTION, RevokeShareLinkInputSchema, } from './tools/revoke-share-link.js';
39
+ import { CreateFolderTool, CREATE_FOLDER_DESCRIPTION, CreateFolderInputSchema, } from './tools/create-folder.js';
40
+ import { RenameFolderTool, RENAME_FOLDER_DESCRIPTION, RenameFolderInputSchema, } from './tools/rename-folder.js';
41
+ import { MoveAssetTool, MOVE_ASSET_DESCRIPTION, MoveAssetInputSchema, } from './tools/move-asset.js';
42
+ import { buildListShareLinksHandler, LIST_SHARE_LINKS_DESCRIPTION, ListShareLinksInputSchema, } from './tools/list-share-links.js';
43
+ import { buildGetEmbedCodeHandler, GET_EMBED_CODE_DESCRIPTION, GetEmbedCodeInputObjectSchema, } from './tools/get-embed-code.js';
44
+ // ── Adapters bridging tool client interfaces to CollageClient ────────
45
+ import { buildAssetEnumerator, buildSearchAdapter, buildTypesenseSearchAdapter, buildRenameAssetClient, buildUpdateAssetMetadataClient, buildBulkTagsClient, buildCreateCollectionClient, buildUpdateCollectionClient, buildCollectionMembershipClient, buildCreateShareLinkClient, buildRevokeShareLinkClient, buildCreateFolderClient, buildRenameFolderClient, buildMoveAssetClient, buildShareLinkAnalyticsEnumerator, buildDashboardCommonDataReader, } from './tools/client-adapters.js';
46
+ import { buildFoldersListReader, buildFolderByIdReader, } from './resources/folders.js';
47
+ import { buildPortalsListReader, buildPortalByIdReader, } from './resources/portals.js';
48
+ import { buildRecentAssetsReader, buildDashboardReader, } from './resources/recent-and-dashboard.js';
49
+ import { buildAssetByIdReader } from './resources/asset-by-id.js';
50
+ import { buildCollectionsListReader, buildCollectionByIdReader, } from './resources/collections.js';
51
+ import { buildCustomFieldsReader } from './resources/custom-fields.js';
52
+ import { LIBRARY_HEALTH_AUDIT_NAME, LIBRARY_HEALTH_AUDIT_DESCRIPTION, LIBRARY_HEALTH_AUDIT_ARGS, buildLibraryHealthAuditPrompt, } from './prompts/library-health-audit.js';
53
+ import { COLLECTION_AUDIT_NAME, COLLECTION_AUDIT_DESCRIPTION, COLLECTION_AUDIT_ARGS, buildCollectionAuditPrompt, } from './prompts/collection-audit.js';
54
+ import { CREATE_DISTRIBUTION_NAME, CREATE_DISTRIBUTION_DESCRIPTION, CREATE_DISTRIBUTION_ARGS, buildCreateDistributionPrompt, } from './prompts/create-distribution.js';
55
+ import { USAGE_INSIGHTS_NAME, USAGE_INSIGHTS_DESCRIPTION, USAGE_INSIGHTS_ARGS, buildUsageInsightsPrompt, } from './prompts/usage-insights.js';
56
+ import { wrapPromptAsTool } from './prompts/wrap-prompt-as-tool.js';
57
+ import { buildCollectionLookup } from './tools/asset-selection.js';
58
+ export { COLLAGE_MCP_SCHEMA_VERSION, SchemaVersionSchema, addSchemaVersion, validateSchemaVersion, } from './conventions/schema-version.js';
59
+ const SERVER_NAME = 'collage-mcp';
60
+ const SERVER_VERSION = '0.1.0';
61
+ function withTextContent(inner) {
62
+ return async (args) => {
63
+ const result = await inner(args);
64
+ const text = JSON.stringify(result.structuredContent, null, 2);
65
+ const wrapped = {
66
+ content: [{ type: 'text', text }],
67
+ structuredContent: result.structuredContent,
68
+ };
69
+ if (result.isError === true)
70
+ wrapped.isError = true;
71
+ return wrapped;
72
+ };
73
+ }
74
+ export async function createServer() {
75
+ const config = loadConfig();
76
+ const client = new CollageClient({ config, logger });
77
+ const secret = config.confirmationSecret;
78
+ // Search client (Nuxt /typesense proxy) created early so search tools,
79
+ // search_collections, and the bulk-tag query adapter can share it.
80
+ const searchClient = createCollageSearchClient(config);
81
+ const server = new McpServer({ name: SERVER_NAME, version: SERVER_VERSION }, { capabilities: { tools: {}, resources: {}, prompts: {} } });
82
+ // ── Read-only tools ────────────────────────────────────────────────
83
+ server.tool('list_workspaces', LIST_WORKSPACES_DESCRIPTION, {}, buildListWorkspacesHandler(client, config.collageWorkspaceId));
84
+ server.tool('list_collections', LIST_COLLECTIONS_DESCRIPTION, {}, buildListCollectionsHandler(client));
85
+ server.tool('get_asset_details', GET_ASSET_DETAILS_DESCRIPTION, GetAssetDetailsInputSchema, buildGetAssetDetailsHandler(client));
86
+ server.tool('get_collection', GET_COLLECTION_DESCRIPTION, GetCollectionInputSchema, buildGetCollectionHandler(client));
87
+ server.tool('list_custom_fields', LIST_CUSTOM_FIELDS_DESCRIPTION, {}, buildListCustomFieldsHandler(client));
88
+ server.tool('list_categories', LIST_CATEGORIES_DESCRIPTION, ListCategoriesInputSchema.shape, buildListCategoriesHandler(client));
89
+ server.tool('view_category_contents', VIEW_CATEGORY_CONTENTS_DESCRIPTION, ViewCategoryContentsInputSchema.shape, buildViewCategoryContentsHandler(client));
90
+ // ── Typesense-backed read-only search tools ───────────────────────
91
+ // Both tools share the Nuxt search-proxy client constructed above.
92
+ server.tool('search_assets', SEARCH_ASSETS_DESCRIPTION, SearchAssetsInputSchema.shape, buildSearchAssetsHandler(searchClient, config.collageWorkspaceId));
93
+ server.tool('search_collections', SEARCH_COLLECTIONS_DESCRIPTION, SearchCollectionsInputSchema.shape, buildSearchCollectionsHandler(searchClient, config.collageWorkspaceId));
94
+ // ── audit_tagging_hygiene (read-only) ──────────────────────────────
95
+ const auditTool = buildAuditTaggingHygieneTool({
96
+ enumerator: buildAssetEnumerator(client),
97
+ });
98
+ server.tool('audit_tagging_hygiene', AUDIT_TAGGING_HYGIENE_DESCRIPTION, AuditTaggingHygieneInputSchema.shape, async (args) => {
99
+ const result = await auditTool.run(args);
100
+ const structuredContent = !result.ok
101
+ ? addSchemaVersion({ error: result.error })
102
+ : addSchemaVersion({ report: result.report });
103
+ const wrapped = {
104
+ content: [{ type: 'text', text: JSON.stringify(structuredContent, null, 2) }],
105
+ structuredContent,
106
+ };
107
+ if (!result.ok)
108
+ wrapped.isError = true;
109
+ return wrapped;
110
+ });
111
+ // ── Phase 2 distribution-insight tools ─────────────────────────────
112
+ // All four insight tools enumerate the same workspace share-link list,
113
+ // so we build ONE cached enumerator (10-minute TTL per spec) and share
114
+ // it across the lot. This drops the worst case from 4×3 paginated GETs
115
+ // to 1×3 per 10-minute window.
116
+ const cachedShareLinkEnumerator = buildCachedShareLinkEnumerator(buildShareLinkAnalyticsEnumerator(client));
117
+ // ── analyze_share_links (read-only, Phase 2 distribution insights) ─
118
+ const analyzeShareLinksTool = buildAnalyzeShareLinksTool({
119
+ enumerator: cachedShareLinkEnumerator,
120
+ });
121
+ server.tool('analyze_share_links', ANALYZE_SHARE_LINKS_DESCRIPTION, AnalyzeShareLinksInputSchema.shape, async (args) => {
122
+ const result = await analyzeShareLinksTool.run(args);
123
+ const structuredContent = !result.ok
124
+ ? addSchemaVersion({ error: result.error })
125
+ : addSchemaVersion({ report: result.report });
126
+ const wrapped = {
127
+ content: [{ type: 'text', text: JSON.stringify(structuredContent, null, 2) }],
128
+ structuredContent,
129
+ };
130
+ if (!result.ok)
131
+ wrapped.isError = true;
132
+ return wrapped;
133
+ });
134
+ // ── report_asset_activation (read-only, Phase 2 distribution insights) ─
135
+ const reportAssetActivationTool = buildReportAssetActivationTool({
136
+ enumerator: cachedShareLinkEnumerator,
137
+ dashboard: buildDashboardCommonDataReader(client),
138
+ });
139
+ server.tool('report_asset_activation', REPORT_ASSET_ACTIVATION_DESCRIPTION, ReportAssetActivationInputSchema.shape, async (args) => {
140
+ const result = await reportAssetActivationTool.run(args);
141
+ const structuredContent = !result.ok
142
+ ? addSchemaVersion({ error: result.error })
143
+ : addSchemaVersion({ report: result.report });
144
+ const wrapped = {
145
+ content: [{ type: 'text', text: JSON.stringify(structuredContent, null, 2) }],
146
+ structuredContent,
147
+ };
148
+ if (!result.ok)
149
+ wrapped.isError = true;
150
+ return wrapped;
151
+ });
152
+ // ── report_top_assets (read-only, Phase 2 distribution insights) ─
153
+ const reportTopAssetsTool = buildReportTopAssetsTool({
154
+ enumerator: cachedShareLinkEnumerator,
155
+ });
156
+ server.tool('report_top_assets', REPORT_TOP_ASSETS_DESCRIPTION, ReportTopAssetsInputSchema.shape, async (args) => {
157
+ const result = await reportTopAssetsTool.run(args);
158
+ const structuredContent = !result.ok
159
+ ? addSchemaVersion({ error: result.error })
160
+ : addSchemaVersion({ report: result.report });
161
+ const wrapped = {
162
+ content: [{ type: 'text', text: JSON.stringify(structuredContent, null, 2) }],
163
+ structuredContent,
164
+ };
165
+ if (!result.ok)
166
+ wrapped.isError = true;
167
+ return wrapped;
168
+ });
169
+ // ── report_stale_assets (read-only, Phase 2 distribution insights) ─
170
+ const reportStaleAssetsTool = buildReportStaleAssetsTool({
171
+ enumerator: cachedShareLinkEnumerator,
172
+ });
173
+ server.tool('report_stale_assets', REPORT_STALE_ASSETS_DESCRIPTION, ReportStaleAssetsInputSchema.shape, async (args) => {
174
+ const result = await reportStaleAssetsTool.run(args);
175
+ const structuredContent = !result.ok
176
+ ? addSchemaVersion({ error: result.error })
177
+ : addSchemaVersion({ report: result.report });
178
+ const wrapped = {
179
+ content: [{ type: 'text', text: JSON.stringify(structuredContent, null, 2) }],
180
+ structuredContent,
181
+ };
182
+ if (!result.ok)
183
+ wrapped.isError = true;
184
+ return wrapped;
185
+ });
186
+ // ── Mutating tools ─────────────────────────────────────────────────
187
+ // Each mutating tool gets its own typed in-memory state store. Sharing one
188
+ // store would require unsafe casts to satisfy
189
+ // `EphemeralStateStore<DryRunPlan<TInput>>` across heterogeneous TInput
190
+ // types — per-tool stores are the type-safe path.
191
+ const collectionLookup = buildCollectionLookup(client);
192
+ // Search-proxy-backed search powers the bulk-tag tools' query
193
+ // selection path. If the proxy is unreachable, calls return a typed
194
+ // UPSTREAM error — same surface as the previous unavailable adapter.
195
+ const searchAdapter = buildTypesenseSearchAdapter(searchClient, config.collageWorkspaceId);
196
+ // Kept around as a no-op alias to preserve any external imports.
197
+ void buildSearchAdapter;
198
+ // rename_asset
199
+ const renameStore = new InMemoryStateStore();
200
+ const renameTool = new RenameAssetTool({
201
+ secret,
202
+ store: renameStore,
203
+ client: buildRenameAssetClient(client),
204
+ });
205
+ server.tool(renameTool.name, RENAME_ASSET_DESCRIPTION, { input: RenameAssetInputSchema, confirmation_token: z.string().optional() }, withTextContent(renameTool.buildMcpHandler()));
206
+ // update_asset_metadata
207
+ const updateMetaStore = new InMemoryStateStore();
208
+ const updateMetaTool = new UpdateAssetMetadataTool({
209
+ secret,
210
+ store: updateMetaStore,
211
+ client: buildUpdateAssetMetadataClient(client),
212
+ });
213
+ server.tool(updateMetaTool.name, UPDATE_ASSET_METADATA_DESCRIPTION, {
214
+ input: UpdateAssetMetadataInputSchema,
215
+ confirmation_token: z.string().optional(),
216
+ }, withTextContent(updateMetaTool.buildMcpHandler()));
217
+ // bulk_set_tags / bulk_add_tags / bulk_remove_tags
218
+ const bulkTagsClient = buildBulkTagsClient(client);
219
+ const bulkSetStore = new InMemoryStateStore();
220
+ const bulkSetTool = new BulkSetTagsTool({
221
+ secret,
222
+ store: bulkSetStore,
223
+ client: bulkTagsClient,
224
+ search: searchAdapter,
225
+ collections: collectionLookup,
226
+ });
227
+ server.tool(bulkSetTool.name, BULK_SET_TAGS_DESCRIPTION, { input: BulkTagsInputSchema, confirmation_token: z.string().optional() }, withTextContent(bulkSetTool.buildMcpHandler()));
228
+ const bulkAddStore = new InMemoryStateStore();
229
+ const bulkAddTool = new BulkAddTagsTool({
230
+ secret,
231
+ store: bulkAddStore,
232
+ client: bulkTagsClient,
233
+ search: searchAdapter,
234
+ collections: collectionLookup,
235
+ });
236
+ server.tool(bulkAddTool.name, BULK_ADD_TAGS_DESCRIPTION, { input: BulkTagsInputSchema, confirmation_token: z.string().optional() }, withTextContent(bulkAddTool.buildMcpHandler()));
237
+ const bulkRemoveStore = new InMemoryStateStore();
238
+ const bulkRemoveTool = new BulkRemoveTagsTool({
239
+ secret,
240
+ store: bulkRemoveStore,
241
+ client: bulkTagsClient,
242
+ search: searchAdapter,
243
+ collections: collectionLookup,
244
+ });
245
+ server.tool(bulkRemoveTool.name, BULK_REMOVE_TAGS_DESCRIPTION, { input: BulkTagsInputSchema, confirmation_token: z.string().optional() }, withTextContent(bulkRemoveTool.buildMcpHandler()));
246
+ // create_collection
247
+ const createCollectionStore = new InMemoryStateStore();
248
+ const createCollectionTool = new CreateCollectionTool({
249
+ secret,
250
+ store: createCollectionStore,
251
+ client: buildCreateCollectionClient(client),
252
+ });
253
+ server.tool(createCollectionTool.name, CREATE_COLLECTION_DESCRIPTION, {
254
+ input: CreateCollectionInputSchema,
255
+ confirmation_token: z.string().optional(),
256
+ }, withTextContent(createCollectionTool.buildMcpHandler()));
257
+ // update_collection
258
+ const updateCollectionStore = new InMemoryStateStore();
259
+ const updateCollectionTool = new UpdateCollectionTool({
260
+ secret,
261
+ store: updateCollectionStore,
262
+ client: buildUpdateCollectionClient(client),
263
+ });
264
+ server.tool(updateCollectionTool.name, UPDATE_COLLECTION_DESCRIPTION, {
265
+ input: UpdateCollectionInputSchema,
266
+ confirmation_token: z.string().optional(),
267
+ }, withTextContent(updateCollectionTool.buildMcpHandler()));
268
+ // add_to_collection / remove_from_collection
269
+ const membershipClient = buildCollectionMembershipClient(client);
270
+ const addToCollectionStore = new InMemoryStateStore();
271
+ const addToCollectionTool = new AddToCollectionTool({
272
+ secret,
273
+ store: addToCollectionStore,
274
+ client: membershipClient,
275
+ });
276
+ server.tool(addToCollectionTool.name, ADD_TO_COLLECTION_DESCRIPTION, {
277
+ input: CollectionMembershipInputSchema,
278
+ confirmation_token: z.string().optional(),
279
+ }, withTextContent(addToCollectionTool.buildMcpHandler()));
280
+ const removeFromCollectionStore = new InMemoryStateStore();
281
+ const removeFromCollectionTool = new RemoveFromCollectionTool({
282
+ secret,
283
+ store: removeFromCollectionStore,
284
+ client: membershipClient,
285
+ });
286
+ server.tool(removeFromCollectionTool.name, REMOVE_FROM_COLLECTION_DESCRIPTION, {
287
+ input: CollectionMembershipInputSchema,
288
+ confirmation_token: z.string().optional(),
289
+ }, withTextContent(removeFromCollectionTool.buildMcpHandler()));
290
+ // ── Read-only share-link enumeration ─────────────────────────────
291
+ server.tool('list_share_links', LIST_SHARE_LINKS_DESCRIPTION, ListShareLinksInputSchema.shape, buildListShareLinksHandler(client));
292
+ // ── Read-only embed-code generator ───────────────────────────────
293
+ server.tool('get_embed_code', GET_EMBED_CODE_DESCRIPTION, GetEmbedCodeInputObjectSchema.shape, buildGetEmbedCodeHandler(client));
294
+ // ── create_share_link (mutating) ─────────────────────────────────
295
+ const createShareLinkStore = new InMemoryStateStore();
296
+ const createShareLinkTool = new CreateShareLinkTool({
297
+ secret,
298
+ store: createShareLinkStore,
299
+ client: buildCreateShareLinkClient(client),
300
+ });
301
+ server.tool(createShareLinkTool.name, CREATE_SHARE_LINK_DESCRIPTION, {
302
+ input: CreateShareLinkInputSchema,
303
+ confirmation_token: z.string().optional(),
304
+ }, withTextContent(createShareLinkTool.buildMcpHandler()));
305
+ // ── revoke_share_link (mutating) ─────────────────────────────────
306
+ const revokeShareLinkStore = new InMemoryStateStore();
307
+ const revokeShareLinkTool = new RevokeShareLinkTool({
308
+ secret,
309
+ store: revokeShareLinkStore,
310
+ client: buildRevokeShareLinkClient(client),
311
+ });
312
+ server.tool(revokeShareLinkTool.name, REVOKE_SHARE_LINK_DESCRIPTION, {
313
+ input: RevokeShareLinkInputSchema,
314
+ confirmation_token: z.string().optional(),
315
+ }, withTextContent(revokeShareLinkTool.buildMcpHandler()));
316
+ // ── create_folder / rename_folder / move_asset (mutating) ────────
317
+ const createFolderStore = new InMemoryStateStore();
318
+ const createFolderTool = new CreateFolderTool({
319
+ secret,
320
+ store: createFolderStore,
321
+ client: buildCreateFolderClient(client),
322
+ });
323
+ server.tool(createFolderTool.name, CREATE_FOLDER_DESCRIPTION, { input: CreateFolderInputSchema, confirmation_token: z.string().optional() }, withTextContent(createFolderTool.buildMcpHandler()));
324
+ const renameFolderStore = new InMemoryStateStore();
325
+ const renameFolderTool = new RenameFolderTool({
326
+ secret,
327
+ store: renameFolderStore,
328
+ client: buildRenameFolderClient(client),
329
+ });
330
+ server.tool(renameFolderTool.name, RENAME_FOLDER_DESCRIPTION, { input: RenameFolderInputSchema, confirmation_token: z.string().optional() }, withTextContent(renameFolderTool.buildMcpHandler()));
331
+ const moveAssetStore = new InMemoryStateStore();
332
+ const moveAssetTool = new MoveAssetTool({
333
+ secret,
334
+ store: moveAssetStore,
335
+ client: buildMoveAssetClient(client),
336
+ });
337
+ server.tool(moveAssetTool.name, MOVE_ASSET_DESCRIPTION, { input: MoveAssetInputSchema, confirmation_token: z.string().optional() }, withTextContent(moveAssetTool.buildMcpHandler()));
338
+ // ── Resources (read-only, URI-addressable) ───────────────────────
339
+ // Phase 1: ten of thirteen resources are live. Three remain:
340
+ // - `collage://tags` and `collage://analytics` blocked on upstream
341
+ // endpoint mismatches (the spec's backing endpoints require asset_ids
342
+ // and aren't workspace-wide). See spec implementation.md for details.
343
+ // - `collage://portals/{id}/users` — endpoint TBD per spec.
344
+ server.resource('folders', 'collage://folders', { mimeType: 'application/json' }, buildFoldersListReader(client));
345
+ server.resource('folder', new ResourceTemplate('collage://folders/{id}', { list: undefined }), { mimeType: 'application/json' }, buildFolderByIdReader(client));
346
+ server.resource('portals', 'collage://portals', { mimeType: 'application/json' }, buildPortalsListReader(client));
347
+ server.resource('portal', new ResourceTemplate('collage://portals/{id}', { list: undefined }), { mimeType: 'application/json' }, buildPortalByIdReader(client));
348
+ server.resource('recent-assets', 'collage://assets/recent', { mimeType: 'application/json' }, buildRecentAssetsReader(client));
349
+ server.resource('dashboard', 'collage://dashboard', { mimeType: 'application/json' }, buildDashboardReader(client));
350
+ server.resource('asset', new ResourceTemplate('collage://assets/{id}', { list: undefined }), { mimeType: 'application/json' }, buildAssetByIdReader(client));
351
+ server.resource('collections', 'collage://collections', { mimeType: 'application/json' }, buildCollectionsListReader(client));
352
+ server.resource('collection', new ResourceTemplate('collage://collections/{id}', { list: undefined }), { mimeType: 'application/json' }, buildCollectionByIdReader(client));
353
+ server.resource('custom-fields', 'collage://custom-fields', { mimeType: 'application/json' }, buildCustomFieldsReader(client));
354
+ // ── Prompts (guided multi-step workflows) ────────────────────────
355
+ server.prompt(LIBRARY_HEALTH_AUDIT_NAME, LIBRARY_HEALTH_AUDIT_DESCRIPTION, LIBRARY_HEALTH_AUDIT_ARGS, (args) => buildLibraryHealthAuditPrompt(args));
356
+ server.prompt(COLLECTION_AUDIT_NAME, COLLECTION_AUDIT_DESCRIPTION, COLLECTION_AUDIT_ARGS, (args) => buildCollectionAuditPrompt(args));
357
+ server.prompt(CREATE_DISTRIBUTION_NAME, CREATE_DISTRIBUTION_DESCRIPTION, CREATE_DISTRIBUTION_ARGS, (args) => buildCreateDistributionPrompt(args));
358
+ server.prompt(USAGE_INSIGHTS_NAME, USAGE_INSIGHTS_DESCRIPTION, USAGE_INSIGHTS_ARGS, (args) => buildUsageInsightsPrompt(args));
359
+ // ── Prompt tool-aliases (UI fallback) ────────────────────────────
360
+ // Temporary while Claude Desktop's UI does not surface MCP prompts;
361
+ // see `.mm/specs/2026-05-01-mcp-prompts-ui-fallback/spec.md`.
362
+ const promptAliases = [
363
+ wrapPromptAsTool({
364
+ promptName: LIBRARY_HEALTH_AUDIT_NAME,
365
+ toolName: 'start_library_health_audit',
366
+ promptDescription: LIBRARY_HEALTH_AUDIT_DESCRIPTION,
367
+ argsSchema: LIBRARY_HEALTH_AUDIT_ARGS,
368
+ build: buildLibraryHealthAuditPrompt,
369
+ }),
370
+ wrapPromptAsTool({
371
+ promptName: COLLECTION_AUDIT_NAME,
372
+ toolName: 'start_collection_audit',
373
+ promptDescription: COLLECTION_AUDIT_DESCRIPTION,
374
+ argsSchema: COLLECTION_AUDIT_ARGS,
375
+ build: buildCollectionAuditPrompt,
376
+ }),
377
+ wrapPromptAsTool({
378
+ promptName: CREATE_DISTRIBUTION_NAME,
379
+ toolName: 'start_create_distribution',
380
+ promptDescription: CREATE_DISTRIBUTION_DESCRIPTION,
381
+ argsSchema: CREATE_DISTRIBUTION_ARGS,
382
+ build: buildCreateDistributionPrompt,
383
+ }),
384
+ wrapPromptAsTool({
385
+ promptName: USAGE_INSIGHTS_NAME,
386
+ toolName: 'start_usage_insights',
387
+ promptDescription: USAGE_INSIGHTS_DESCRIPTION,
388
+ argsSchema: USAGE_INSIGHTS_ARGS,
389
+ build: buildUsageInsightsPrompt,
390
+ }),
391
+ ];
392
+ for (const alias of promptAliases) {
393
+ server.tool(alias.toolName, alias.toolDescription, alias.argsSchema, alias.handler);
394
+ }
395
+ return server;
396
+ }
397
+ async function main() {
398
+ const server = await createServer();
399
+ const transport = new StdioServerTransport();
400
+ await server.connect(transport);
401
+ logger.info({ name: SERVER_NAME, version: SERVER_VERSION }, 'collage-mcp ready (stdio)');
402
+ }
403
+ const isDirectInvocation = (() => {
404
+ const entry = process.argv[1];
405
+ if (entry === undefined)
406
+ return false;
407
+ try {
408
+ const url = new URL(import.meta.url);
409
+ return url.pathname.endsWith(entry) || entry.endsWith('index.ts') || entry.endsWith('index.js');
410
+ }
411
+ catch {
412
+ return false;
413
+ }
414
+ })();
415
+ if (isDirectInvocation) {
416
+ main().catch((err) => {
417
+ logger.error({ err: err instanceof Error ? err.message : String(err) }, 'fatal startup error');
418
+ process.exit(1);
419
+ });
420
+ }
421
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { z } from 'zod';
2
+ import type { GetPromptResult } from '@modelcontextprotocol/sdk/types.js';
3
+ export declare const COLLECTION_AUDIT_NAME = "collection_audit";
4
+ export declare const COLLECTION_AUDIT_DESCRIPTION: string;
5
+ export declare const COLLECTION_AUDIT_ARGS: {
6
+ readonly collection_id: z.ZodOptional<z.ZodString>;
7
+ readonly suggest_members: z.ZodOptional<z.ZodString>;
8
+ };
9
+ export declare function buildCollectionAuditPrompt(args: {
10
+ collection_id?: string | undefined;
11
+ suggest_members?: string | undefined;
12
+ }): GetPromptResult;
13
+ //# sourceMappingURL=collection-audit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collection-audit.d.ts","sourceRoot":"","sources":["../../src/prompts/collection-audit.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAG1E,eAAO,MAAM,qBAAqB,qBAAqB,CAAC;AAExD,eAAO,MAAM,4BAA4B,QAIJ,CAAC;AAEtC,eAAO,MAAM,qBAAqB;;;CAaxB,CAAC;AAEX,wBAAgB,0BAA0B,CACxC,IAAI,EAAE;IAAE,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,GACjF,eAAe,CAiBjB"}