@payloadcms/plugin-mcp 4.0.0-internal.e16cf59 → 4.0.0-internal.e55ccef

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 (424) hide show
  1. package/LICENSE.md +1 -1
  2. package/bin.js +46 -0
  3. package/dist/defaultAccess.d.ts +3 -0
  4. package/dist/defaultAccess.d.ts.map +1 -0
  5. package/dist/defaultAccess.js +3 -0
  6. package/dist/defaultAccess.js.map +1 -0
  7. package/dist/defineTool.d.ts +26 -0
  8. package/dist/defineTool.d.ts.map +1 -0
  9. package/dist/defineTool.js +37 -0
  10. package/dist/defineTool.js.map +1 -0
  11. package/dist/endpoint/access.d.ts +17 -0
  12. package/dist/endpoint/access.d.ts.map +1 -0
  13. package/dist/endpoint/access.js +93 -0
  14. package/dist/endpoint/access.js.map +1 -0
  15. package/dist/endpoint/index.d.ts +3 -0
  16. package/dist/endpoint/index.d.ts.map +1 -0
  17. package/dist/endpoint/index.js +87 -0
  18. package/dist/endpoint/index.js.map +1 -0
  19. package/dist/exports/client.d.ts +2 -0
  20. package/dist/exports/client.d.ts.map +1 -0
  21. package/dist/exports/client.js +4 -0
  22. package/dist/exports/client.js.map +1 -0
  23. package/dist/exports/internal.d.ts +2 -0
  24. package/dist/exports/internal.d.ts.map +1 -0
  25. package/dist/exports/internal.js +3 -0
  26. package/dist/exports/internal.js.map +1 -0
  27. package/dist/index.d.ts +6 -9
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +39 -67
  30. package/dist/index.js.map +1 -1
  31. package/dist/mcp/buildMcpServer.d.ts +19 -0
  32. package/dist/mcp/buildMcpServer.d.ts.map +1 -0
  33. package/dist/mcp/buildMcpServer.js +223 -0
  34. package/dist/mcp/buildMcpServer.js.map +1 -0
  35. package/dist/mcp/builtin/collections/authTools.d.ts +7 -0
  36. package/dist/mcp/builtin/collections/authTools.d.ts.map +1 -0
  37. package/dist/mcp/builtin/collections/authTools.js +288 -0
  38. package/dist/mcp/builtin/collections/authTools.js.map +1 -0
  39. package/dist/mcp/builtin/collections/countTool.d.ts +2 -0
  40. package/dist/mcp/builtin/collections/countTool.d.ts.map +1 -0
  41. package/dist/mcp/builtin/collections/countTool.js +68 -0
  42. package/dist/mcp/builtin/collections/countTool.js.map +1 -0
  43. package/dist/mcp/builtin/collections/countVersionsTool.d.ts +2 -0
  44. package/dist/mcp/builtin/collections/countVersionsTool.d.ts.map +1 -0
  45. package/dist/mcp/builtin/collections/countVersionsTool.js +64 -0
  46. package/dist/mcp/builtin/collections/countVersionsTool.js.map +1 -0
  47. package/dist/mcp/builtin/collections/createTool.d.ts +2 -0
  48. package/dist/mcp/builtin/collections/createTool.d.ts.map +1 -0
  49. package/dist/mcp/builtin/collections/createTool.js +96 -0
  50. package/dist/mcp/builtin/collections/createTool.js.map +1 -0
  51. package/dist/mcp/builtin/collections/deleteTool.d.ts +2 -0
  52. package/dist/mcp/builtin/collections/deleteTool.d.ts.map +1 -0
  53. package/dist/mcp/builtin/collections/deleteTool.js +110 -0
  54. package/dist/mcp/builtin/collections/deleteTool.js.map +1 -0
  55. package/dist/mcp/builtin/collections/duplicateTool.d.ts +2 -0
  56. package/dist/mcp/builtin/collections/duplicateTool.d.ts.map +1 -0
  57. package/dist/mcp/builtin/collections/duplicateTool.js +96 -0
  58. package/dist/mcp/builtin/collections/duplicateTool.js.map +1 -0
  59. package/dist/mcp/builtin/collections/fileInput.d.ts +20 -0
  60. package/dist/mcp/builtin/collections/fileInput.d.ts.map +1 -0
  61. package/dist/mcp/builtin/collections/fileInput.js +100 -0
  62. package/dist/mcp/builtin/collections/fileInput.js.map +1 -0
  63. package/dist/mcp/builtin/collections/fileInput.spec.js +72 -0
  64. package/dist/mcp/builtin/collections/fileInput.spec.js.map +1 -0
  65. package/dist/mcp/builtin/collections/findDistinctTool.d.ts +2 -0
  66. package/dist/mcp/builtin/collections/findDistinctTool.d.ts.map +1 -0
  67. package/dist/mcp/builtin/collections/findDistinctTool.js +92 -0
  68. package/dist/mcp/builtin/collections/findDistinctTool.js.map +1 -0
  69. package/dist/mcp/builtin/collections/findTool.d.ts +2 -0
  70. package/dist/mcp/builtin/collections/findTool.d.ts.map +1 -0
  71. package/dist/mcp/builtin/collections/findTool.js +164 -0
  72. package/dist/mcp/builtin/collections/findTool.js.map +1 -0
  73. package/dist/mcp/builtin/collections/findVersionByIDTool.d.ts +2 -0
  74. package/dist/mcp/builtin/collections/findVersionByIDTool.d.ts.map +1 -0
  75. package/dist/mcp/builtin/collections/findVersionByIDTool.js +83 -0
  76. package/dist/mcp/builtin/collections/findVersionByIDTool.js.map +1 -0
  77. package/dist/mcp/builtin/collections/findVersionsTool.d.ts +2 -0
  78. package/dist/mcp/builtin/collections/findVersionsTool.d.ts.map +1 -0
  79. package/dist/mcp/builtin/collections/findVersionsTool.js +98 -0
  80. package/dist/mcp/builtin/collections/findVersionsTool.js.map +1 -0
  81. package/dist/mcp/builtin/collections/formatCollectionError.d.ts +9 -0
  82. package/dist/mcp/builtin/collections/formatCollectionError.d.ts.map +1 -0
  83. package/dist/mcp/builtin/collections/formatCollectionError.js +60 -0
  84. package/dist/mcp/builtin/collections/formatCollectionError.js.map +1 -0
  85. package/dist/mcp/builtin/collections/getCollectionSchemaTool.d.ts +2 -0
  86. package/dist/mcp/builtin/collections/getCollectionSchemaTool.d.ts.map +1 -0
  87. package/dist/mcp/builtin/collections/getCollectionSchemaTool.js +86 -0
  88. package/dist/mcp/builtin/collections/getCollectionSchemaTool.js.map +1 -0
  89. package/dist/mcp/builtin/collections/restoreVersionTool.d.ts +2 -0
  90. package/dist/mcp/builtin/collections/restoreVersionTool.d.ts.map +1 -0
  91. package/dist/mcp/builtin/collections/restoreVersionTool.js +81 -0
  92. package/dist/mcp/builtin/collections/restoreVersionTool.js.map +1 -0
  93. package/dist/mcp/builtin/collections/updateTool.d.ts +2 -0
  94. package/dist/mcp/builtin/collections/updateTool.d.ts.map +1 -0
  95. package/dist/mcp/builtin/collections/updateTool.js +204 -0
  96. package/dist/mcp/builtin/collections/updateTool.js.map +1 -0
  97. package/dist/mcp/builtin/getConfigInfoTool.d.ts +2 -0
  98. package/dist/mcp/builtin/getConfigInfoTool.d.ts.map +1 -0
  99. package/dist/mcp/builtin/getConfigInfoTool.js +68 -0
  100. package/dist/mcp/builtin/getConfigInfoTool.js.map +1 -0
  101. package/dist/mcp/builtin/globals/countVersionsTool.d.ts +2 -0
  102. package/dist/mcp/builtin/globals/countVersionsTool.d.ts.map +1 -0
  103. package/dist/mcp/builtin/globals/countVersionsTool.js +64 -0
  104. package/dist/mcp/builtin/globals/countVersionsTool.js.map +1 -0
  105. package/dist/mcp/builtin/globals/findTool.d.ts +2 -0
  106. package/dist/mcp/builtin/globals/findTool.d.ts.map +1 -0
  107. package/dist/mcp/builtin/globals/findTool.js +73 -0
  108. package/dist/mcp/builtin/globals/findTool.js.map +1 -0
  109. package/dist/mcp/builtin/globals/findVersionByIDTool.d.ts +2 -0
  110. package/dist/mcp/builtin/globals/findVersionByIDTool.d.ts.map +1 -0
  111. package/dist/mcp/builtin/globals/findVersionByIDTool.js +79 -0
  112. package/dist/mcp/builtin/globals/findVersionByIDTool.js.map +1 -0
  113. package/dist/mcp/builtin/globals/findVersionsTool.d.ts +2 -0
  114. package/dist/mcp/builtin/globals/findVersionsTool.d.ts.map +1 -0
  115. package/dist/mcp/builtin/globals/findVersionsTool.js +94 -0
  116. package/dist/mcp/builtin/globals/findVersionsTool.js.map +1 -0
  117. package/dist/mcp/builtin/globals/getGlobalSchemaTool.d.ts +2 -0
  118. package/dist/mcp/builtin/globals/getGlobalSchemaTool.d.ts.map +1 -0
  119. package/dist/mcp/builtin/globals/getGlobalSchemaTool.js +65 -0
  120. package/dist/mcp/builtin/globals/getGlobalSchemaTool.js.map +1 -0
  121. package/dist/mcp/builtin/globals/restoreVersionTool.d.ts +2 -0
  122. package/dist/mcp/builtin/globals/restoreVersionTool.d.ts.map +1 -0
  123. package/dist/mcp/builtin/globals/restoreVersionTool.js +77 -0
  124. package/dist/mcp/builtin/globals/restoreVersionTool.js.map +1 -0
  125. package/dist/mcp/builtin/globals/updateTool.d.ts +2 -0
  126. package/dist/mcp/builtin/globals/updateTool.d.ts.map +1 -0
  127. package/dist/mcp/builtin/globals/updateTool.js +87 -0
  128. package/dist/mcp/builtin/globals/updateTool.js.map +1 -0
  129. package/dist/mcp/builtin/validateEntityData.d.ts +14 -0
  130. package/dist/mcp/builtin/validateEntityData.d.ts.map +1 -0
  131. package/dist/mcp/builtin/validateEntityData.js +82 -0
  132. package/dist/mcp/builtin/validateEntityData.js.map +1 -0
  133. package/dist/mcp/builtinTools.d.ts +162 -0
  134. package/dist/mcp/builtinTools.d.ts.map +1 -0
  135. package/dist/mcp/builtinTools.js +163 -0
  136. package/dist/mcp/builtinTools.js.map +1 -0
  137. package/dist/mcp/sanitizeMCPConfig.d.ts +16 -0
  138. package/dist/mcp/sanitizeMCPConfig.d.ts.map +1 -0
  139. package/dist/mcp/sanitizeMCPConfig.js +230 -0
  140. package/dist/mcp/sanitizeMCPConfig.js.map +1 -0
  141. package/dist/stdio.d.ts +8 -0
  142. package/dist/stdio.d.ts.map +1 -0
  143. package/dist/stdio.js +126 -0
  144. package/dist/stdio.js.map +1 -0
  145. package/dist/types.d.ts +256 -447
  146. package/dist/types.d.ts.map +1 -1
  147. package/dist/types.js +4 -1
  148. package/dist/types.js.map +1 -1
  149. package/dist/utils/getLogger.d.ts +10 -0
  150. package/dist/utils/getLogger.d.ts.map +1 -0
  151. package/dist/utils/getLogger.js +22 -0
  152. package/dist/utils/getLogger.js.map +1 -0
  153. package/dist/utils/getPluginConfig.d.ts +12 -0
  154. package/dist/utils/getPluginConfig.d.ts.map +1 -0
  155. package/dist/utils/getPluginConfig.js +15 -0
  156. package/dist/utils/getPluginConfig.js.map +1 -0
  157. package/dist/utils/resolveProjectRoot.d.ts +7 -0
  158. package/dist/utils/resolveProjectRoot.d.ts.map +1 -0
  159. package/dist/utils/resolveProjectRoot.js +15 -0
  160. package/dist/utils/resolveProjectRoot.js.map +1 -0
  161. package/dist/utils/schemaConversion/filterFieldsByAccess.d.ts +28 -0
  162. package/dist/utils/schemaConversion/filterFieldsByAccess.d.ts.map +1 -0
  163. package/dist/utils/schemaConversion/filterFieldsByAccess.js +71 -0
  164. package/dist/utils/schemaConversion/filterFieldsByAccess.js.map +1 -0
  165. package/dist/utils/schemaConversion/getEntityInputSchema.d.ts +13 -0
  166. package/dist/utils/schemaConversion/getEntityInputSchema.d.ts.map +1 -0
  167. package/dist/utils/schemaConversion/getEntityInputSchema.js +66 -0
  168. package/dist/utils/schemaConversion/getEntityInputSchema.js.map +1 -0
  169. package/dist/utils/schemaConversion/sanitizeEntitySchema.d.ts +10 -0
  170. package/dist/utils/schemaConversion/sanitizeEntitySchema.d.ts.map +1 -0
  171. package/dist/utils/schemaConversion/sanitizeEntitySchema.js +384 -0
  172. package/dist/utils/schemaConversion/sanitizeEntitySchema.js.map +1 -0
  173. package/dist/utils/schemaConversion/sanitizeEntitySchema.spec.js +133 -0
  174. package/dist/utils/schemaConversion/sanitizeEntitySchema.spec.js.map +1 -0
  175. package/dist/utils/toStandardSchema.d.ts +5 -0
  176. package/dist/utils/toStandardSchema.d.ts.map +1 -0
  177. package/dist/utils/toStandardSchema.js +4 -0
  178. package/dist/utils/toStandardSchema.js.map +1 -0
  179. package/dist/utils/whereSchema.d.ts +9 -0
  180. package/dist/utils/whereSchema.d.ts.map +1 -0
  181. package/dist/utils/whereSchema.js +13 -0
  182. package/dist/utils/whereSchema.js.map +1 -0
  183. package/package.json +30 -10
  184. package/src/defaultAccess.ts +3 -0
  185. package/src/defineTool.ts +44 -0
  186. package/src/endpoint/access.ts +112 -0
  187. package/src/endpoint/index.ts +77 -0
  188. package/src/exports/client.ts +3 -0
  189. package/src/exports/internal.ts +1 -0
  190. package/src/index.ts +31 -89
  191. package/src/mcp/buildMcpServer.ts +284 -0
  192. package/src/mcp/builtin/collections/authTools.ts +269 -0
  193. package/src/mcp/builtin/collections/countTool.ts +73 -0
  194. package/src/mcp/builtin/collections/countVersionsTool.ts +69 -0
  195. package/src/mcp/builtin/collections/createTool.ts +121 -0
  196. package/src/mcp/builtin/collections/deleteTool.ts +125 -0
  197. package/src/mcp/builtin/collections/duplicateTool.ts +134 -0
  198. package/src/mcp/builtin/collections/fileInput.spec.ts +79 -0
  199. package/src/mcp/builtin/collections/fileInput.ts +139 -0
  200. package/src/mcp/builtin/collections/findDistinctTool.ts +119 -0
  201. package/src/mcp/builtin/collections/findTool.ts +216 -0
  202. package/src/mcp/builtin/collections/findVersionByIDTool.ts +109 -0
  203. package/src/mcp/builtin/collections/findVersionsTool.ts +154 -0
  204. package/src/mcp/builtin/collections/formatCollectionError.ts +84 -0
  205. package/src/mcp/builtin/collections/getCollectionSchemaTool.ts +76 -0
  206. package/src/mcp/builtin/collections/restoreVersionTool.ts +107 -0
  207. package/src/mcp/builtin/collections/updateTool.ts +227 -0
  208. package/src/mcp/builtin/getConfigInfoTool.ts +67 -0
  209. package/src/mcp/builtin/globals/countVersionsTool.ts +68 -0
  210. package/src/mcp/builtin/globals/findTool.ts +105 -0
  211. package/src/mcp/builtin/globals/findVersionByIDTool.ts +103 -0
  212. package/src/mcp/builtin/globals/findVersionsTool.ts +147 -0
  213. package/src/mcp/builtin/globals/getGlobalSchemaTool.ts +63 -0
  214. package/src/mcp/builtin/globals/restoreVersionTool.ts +99 -0
  215. package/src/mcp/builtin/globals/updateTool.ts +115 -0
  216. package/src/mcp/builtin/validateEntityData.ts +132 -0
  217. package/src/mcp/builtinTools.ts +154 -0
  218. package/src/mcp/sanitizeMCPConfig.ts +278 -0
  219. package/src/stdio.ts +130 -0
  220. package/src/types.ts +304 -486
  221. package/src/utils/getLogger.ts +22 -0
  222. package/src/utils/getPluginConfig.ts +24 -0
  223. package/src/utils/resolveProjectRoot.ts +17 -0
  224. package/src/utils/schemaConversion/filterFieldsByAccess.ts +123 -0
  225. package/src/utils/schemaConversion/getEntityInputSchema.ts +96 -0
  226. package/src/utils/schemaConversion/sanitizeEntitySchema.spec.ts +96 -0
  227. package/src/utils/schemaConversion/sanitizeEntitySchema.ts +432 -0
  228. package/src/utils/toStandardSchema.ts +9 -0
  229. package/src/utils/whereSchema.ts +24 -0
  230. package/dist/collections/createApiKeysCollection.d.ts +0 -7
  231. package/dist/collections/createApiKeysCollection.d.ts.map +0 -1
  232. package/dist/collections/createApiKeysCollection.js +0 -317
  233. package/dist/collections/createApiKeysCollection.js.map +0 -1
  234. package/dist/defaults.d.ts +0 -4
  235. package/dist/defaults.d.ts.map +0 -1
  236. package/dist/defaults.js +0 -5
  237. package/dist/defaults.js.map +0 -1
  238. package/dist/endpoints/mcp.d.ts +0 -4
  239. package/dist/endpoints/mcp.d.ts.map +0 -1
  240. package/dist/endpoints/mcp.js +0 -71
  241. package/dist/endpoints/mcp.js.map +0 -1
  242. package/dist/mcp/createRequest.d.ts +0 -3
  243. package/dist/mcp/createRequest.d.ts.map +0 -1
  244. package/dist/mcp/createRequest.js +0 -14
  245. package/dist/mcp/createRequest.js.map +0 -1
  246. package/dist/mcp/getMcpHandler.d.ts +0 -4
  247. package/dist/mcp/getMcpHandler.d.ts.map +0 -1
  248. package/dist/mcp/getMcpHandler.js +0 -231
  249. package/dist/mcp/getMcpHandler.js.map +0 -1
  250. package/dist/mcp/helpers/config.d.ts +0 -22
  251. package/dist/mcp/helpers/config.d.ts.map +0 -1
  252. package/dist/mcp/helpers/config.js +0 -153
  253. package/dist/mcp/helpers/config.js.map +0 -1
  254. package/dist/mcp/helpers/fields.d.ts +0 -19
  255. package/dist/mcp/helpers/fields.d.ts.map +0 -1
  256. package/dist/mcp/helpers/fields.js +0 -102
  257. package/dist/mcp/helpers/fields.js.map +0 -1
  258. package/dist/mcp/helpers/fileValidation.d.ts +0 -67
  259. package/dist/mcp/helpers/fileValidation.d.ts.map +0 -1
  260. package/dist/mcp/helpers/fileValidation.js +0 -267
  261. package/dist/mcp/helpers/fileValidation.js.map +0 -1
  262. package/dist/mcp/registerTool.d.ts +0 -6
  263. package/dist/mcp/registerTool.d.ts.map +0 -1
  264. package/dist/mcp/registerTool.js +0 -18
  265. package/dist/mcp/registerTool.js.map +0 -1
  266. package/dist/mcp/tools/auth/auth.d.ts +0 -4
  267. package/dist/mcp/tools/auth/auth.d.ts.map +0 -1
  268. package/dist/mcp/tools/auth/auth.js +0 -57
  269. package/dist/mcp/tools/auth/auth.js.map +0 -1
  270. package/dist/mcp/tools/auth/forgotPassword.d.ts +0 -4
  271. package/dist/mcp/tools/auth/forgotPassword.d.ts.map +0 -1
  272. package/dist/mcp/tools/auth/forgotPassword.js +0 -48
  273. package/dist/mcp/tools/auth/forgotPassword.js.map +0 -1
  274. package/dist/mcp/tools/auth/login.d.ts +0 -4
  275. package/dist/mcp/tools/auth/login.d.ts.map +0 -1
  276. package/dist/mcp/tools/auth/login.js +0 -51
  277. package/dist/mcp/tools/auth/login.js.map +0 -1
  278. package/dist/mcp/tools/auth/resetPassword.d.ts +0 -4
  279. package/dist/mcp/tools/auth/resetPassword.d.ts.map +0 -1
  280. package/dist/mcp/tools/auth/resetPassword.js +0 -49
  281. package/dist/mcp/tools/auth/resetPassword.js.map +0 -1
  282. package/dist/mcp/tools/auth/unlock.d.ts +0 -4
  283. package/dist/mcp/tools/auth/unlock.d.ts.map +0 -1
  284. package/dist/mcp/tools/auth/unlock.js +0 -48
  285. package/dist/mcp/tools/auth/unlock.js.map +0 -1
  286. package/dist/mcp/tools/auth/verify.d.ts +0 -4
  287. package/dist/mcp/tools/auth/verify.d.ts.map +0 -1
  288. package/dist/mcp/tools/auth/verify.js +0 -45
  289. package/dist/mcp/tools/auth/verify.js.map +0 -1
  290. package/dist/mcp/tools/collection/create.d.ts +0 -10
  291. package/dist/mcp/tools/collection/create.d.ts.map +0 -1
  292. package/dist/mcp/tools/collection/create.js +0 -139
  293. package/dist/mcp/tools/collection/create.js.map +0 -1
  294. package/dist/mcp/tools/collection/delete.d.ts +0 -10
  295. package/dist/mcp/tools/collection/delete.d.ts.map +0 -1
  296. package/dist/mcp/tools/collection/delete.js +0 -154
  297. package/dist/mcp/tools/collection/delete.js.map +0 -1
  298. package/dist/mcp/tools/collection/find.d.ts +0 -10
  299. package/dist/mcp/tools/collection/find.d.ts.map +0 -1
  300. package/dist/mcp/tools/collection/find.js +0 -165
  301. package/dist/mcp/tools/collection/find.js.map +0 -1
  302. package/dist/mcp/tools/collection/update.d.ts +0 -10
  303. package/dist/mcp/tools/collection/update.d.ts.map +0 -1
  304. package/dist/mcp/tools/collection/update.js +0 -209
  305. package/dist/mcp/tools/collection/update.js.map +0 -1
  306. package/dist/mcp/tools/config/find.d.ts +0 -10
  307. package/dist/mcp/tools/config/find.d.ts.map +0 -1
  308. package/dist/mcp/tools/config/find.js +0 -97
  309. package/dist/mcp/tools/config/find.js.map +0 -1
  310. package/dist/mcp/tools/config/update.d.ts +0 -10
  311. package/dist/mcp/tools/config/update.d.ts.map +0 -1
  312. package/dist/mcp/tools/config/update.js +0 -215
  313. package/dist/mcp/tools/config/update.js.map +0 -1
  314. package/dist/mcp/tools/global/find.d.ts +0 -5
  315. package/dist/mcp/tools/global/find.d.ts.map +0 -1
  316. package/dist/mcp/tools/global/find.js +0 -82
  317. package/dist/mcp/tools/global/find.js.map +0 -1
  318. package/dist/mcp/tools/global/update.d.ts +0 -6
  319. package/dist/mcp/tools/global/update.d.ts.map +0 -1
  320. package/dist/mcp/tools/global/update.js +0 -124
  321. package/dist/mcp/tools/global/update.js.map +0 -1
  322. package/dist/mcp/tools/job/create.d.ts +0 -10
  323. package/dist/mcp/tools/job/create.d.ts.map +0 -1
  324. package/dist/mcp/tools/job/create.js +0 -293
  325. package/dist/mcp/tools/job/create.js.map +0 -1
  326. package/dist/mcp/tools/job/run.d.ts +0 -10
  327. package/dist/mcp/tools/job/run.d.ts.map +0 -1
  328. package/dist/mcp/tools/job/run.js +0 -129
  329. package/dist/mcp/tools/job/run.js.map +0 -1
  330. package/dist/mcp/tools/job/update.d.ts +0 -11
  331. package/dist/mcp/tools/job/update.d.ts.map +0 -1
  332. package/dist/mcp/tools/job/update.js +0 -186
  333. package/dist/mcp/tools/job/update.js.map +0 -1
  334. package/dist/mcp/tools/resource/create.d.ts +0 -6
  335. package/dist/mcp/tools/resource/create.d.ts.map +0 -1
  336. package/dist/mcp/tools/resource/create.js +0 -124
  337. package/dist/mcp/tools/resource/create.js.map +0 -1
  338. package/dist/mcp/tools/resource/delete.d.ts +0 -5
  339. package/dist/mcp/tools/resource/delete.d.ts.map +0 -1
  340. package/dist/mcp/tools/resource/delete.js +0 -151
  341. package/dist/mcp/tools/resource/delete.js.map +0 -1
  342. package/dist/mcp/tools/resource/find.d.ts +0 -5
  343. package/dist/mcp/tools/resource/find.d.ts.map +0 -1
  344. package/dist/mcp/tools/resource/find.js +0 -170
  345. package/dist/mcp/tools/resource/find.js.map +0 -1
  346. package/dist/mcp/tools/resource/update.d.ts +0 -6
  347. package/dist/mcp/tools/resource/update.d.ts.map +0 -1
  348. package/dist/mcp/tools/resource/update.js +0 -256
  349. package/dist/mcp/tools/resource/update.js.map +0 -1
  350. package/dist/mcp/tools/schemas.d.ts +0 -457
  351. package/dist/mcp/tools/schemas.d.ts.map +0 -1
  352. package/dist/mcp/tools/schemas.js +0 -243
  353. package/dist/mcp/tools/schemas.js.map +0 -1
  354. package/dist/utils/adminEntitySettings.d.ts +0 -17
  355. package/dist/utils/adminEntitySettings.d.ts.map +0 -1
  356. package/dist/utils/adminEntitySettings.js +0 -41
  357. package/dist/utils/adminEntitySettings.js.map +0 -1
  358. package/dist/utils/createApiKeyFields.d.ts +0 -15
  359. package/dist/utils/createApiKeyFields.d.ts.map +0 -1
  360. package/dist/utils/createApiKeyFields.js +0 -57
  361. package/dist/utils/createApiKeyFields.js.map +0 -1
  362. package/dist/utils/getEnabledSlugs.d.ts +0 -13
  363. package/dist/utils/getEnabledSlugs.d.ts.map +0 -1
  364. package/dist/utils/getEnabledSlugs.js +0 -32
  365. package/dist/utils/getEnabledSlugs.js.map +0 -1
  366. package/dist/utils/schemaConversion/convertCollectionSchemaToZod.d.ts +0 -3
  367. package/dist/utils/schemaConversion/convertCollectionSchemaToZod.d.ts.map +0 -1
  368. package/dist/utils/schemaConversion/convertCollectionSchemaToZod.js +0 -43
  369. package/dist/utils/schemaConversion/convertCollectionSchemaToZod.js.map +0 -1
  370. package/dist/utils/schemaConversion/removeVirtualFieldsFromSchema.d.ts +0 -7
  371. package/dist/utils/schemaConversion/removeVirtualFieldsFromSchema.d.ts.map +0 -1
  372. package/dist/utils/schemaConversion/removeVirtualFieldsFromSchema.js +0 -20
  373. package/dist/utils/schemaConversion/removeVirtualFieldsFromSchema.js.map +0 -1
  374. package/dist/utils/schemaConversion/sanitizeJsonSchema.d.ts +0 -13
  375. package/dist/utils/schemaConversion/sanitizeJsonSchema.d.ts.map +0 -1
  376. package/dist/utils/schemaConversion/sanitizeJsonSchema.js +0 -56
  377. package/dist/utils/schemaConversion/sanitizeJsonSchema.js.map +0 -1
  378. package/dist/utils/schemaConversion/simplifyRelationshipFields.d.ts +0 -20
  379. package/dist/utils/schemaConversion/simplifyRelationshipFields.d.ts.map +0 -1
  380. package/dist/utils/schemaConversion/simplifyRelationshipFields.js +0 -53
  381. package/dist/utils/schemaConversion/simplifyRelationshipFields.js.map +0 -1
  382. package/dist/utils/schemaConversion/transformPointFields.d.ts +0 -3
  383. package/dist/utils/schemaConversion/transformPointFields.d.ts.map +0 -1
  384. package/dist/utils/schemaConversion/transformPointFields.js +0 -51
  385. package/dist/utils/schemaConversion/transformPointFields.js.map +0 -1
  386. package/src/collections/createApiKeysCollection.ts +0 -373
  387. package/src/defaults.ts +0 -3
  388. package/src/endpoints/mcp.ts +0 -91
  389. package/src/mcp/createRequest.ts +0 -13
  390. package/src/mcp/getMcpHandler.ts +0 -545
  391. package/src/mcp/helpers/config.ts +0 -213
  392. package/src/mcp/helpers/fields.ts +0 -154
  393. package/src/mcp/helpers/fileValidation.ts +0 -362
  394. package/src/mcp/registerTool.ts +0 -22
  395. package/src/mcp/tools/auth/auth.ts +0 -71
  396. package/src/mcp/tools/auth/forgotPassword.ts +0 -70
  397. package/src/mcp/tools/auth/login.ts +0 -72
  398. package/src/mcp/tools/auth/resetPassword.ts +0 -61
  399. package/src/mcp/tools/auth/unlock.ts +0 -64
  400. package/src/mcp/tools/auth/verify.ts +0 -57
  401. package/src/mcp/tools/collection/create.ts +0 -210
  402. package/src/mcp/tools/collection/delete.ts +0 -211
  403. package/src/mcp/tools/collection/find.ts +0 -224
  404. package/src/mcp/tools/collection/update.ts +0 -290
  405. package/src/mcp/tools/config/find.ts +0 -128
  406. package/src/mcp/tools/config/update.ts +0 -280
  407. package/src/mcp/tools/global/find.ts +0 -128
  408. package/src/mcp/tools/global/update.ts +0 -207
  409. package/src/mcp/tools/job/create.ts +0 -416
  410. package/src/mcp/tools/job/run.ts +0 -167
  411. package/src/mcp/tools/job/update.ts +0 -274
  412. package/src/mcp/tools/resource/create.ts +0 -211
  413. package/src/mcp/tools/resource/delete.ts +0 -218
  414. package/src/mcp/tools/resource/find.ts +0 -246
  415. package/src/mcp/tools/resource/update.ts +0 -383
  416. package/src/mcp/tools/schemas.ts +0 -520
  417. package/src/utils/adminEntitySettings.ts +0 -40
  418. package/src/utils/createApiKeyFields.ts +0 -72
  419. package/src/utils/getEnabledSlugs.ts +0 -42
  420. package/src/utils/schemaConversion/convertCollectionSchemaToZod.ts +0 -52
  421. package/src/utils/schemaConversion/removeVirtualFieldsFromSchema.ts +0 -27
  422. package/src/utils/schemaConversion/sanitizeJsonSchema.ts +0 -62
  423. package/src/utils/schemaConversion/simplifyRelationshipFields.ts +0 -65
  424. package/src/utils/schemaConversion/transformPointFields.ts +0 -55
@@ -1,274 +0,0 @@
1
- import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'
2
- import type { PayloadRequest } from 'payload'
3
-
4
- import { existsSync, readFileSync, writeFileSync } from 'fs'
5
- import { join } from 'path'
6
-
7
- import type { JobConfigUpdate, SchemaField, TaskSequenceItem } from '../../../types.js'
8
-
9
- import { toCamelCase } from '../../../utils/camelCase.js'
10
- import { validatePayloadFile } from '../../helpers/fileValidation.js'
11
- import { toolSchemas } from '../schemas.js'
12
-
13
- // Reusable function for updating jobs
14
- export const updateJob = async (
15
- req: PayloadRequest,
16
- verboseLogs: boolean,
17
- jobsDir: string,
18
- jobSlug: string,
19
- updateType: string,
20
- inputSchema?: SchemaField[],
21
- outputSchema?: SchemaField[],
22
- taskSequence?: TaskSequenceItem[],
23
- configUpdate?: JobConfigUpdate,
24
- handlerCode?: string,
25
- ) => {
26
- const payload = req.payload
27
-
28
- if (verboseLogs) {
29
- payload.logger.info(`[payload-mcp] Updating job: ${jobSlug} (${updateType})`)
30
- }
31
-
32
- try {
33
- const camelCaseJobSlug = toCamelCase(jobSlug)
34
-
35
- // Find the job file - check both tasks and workflows
36
- let filePath: null | string = null
37
- let jobType: 'task' | 'workflow' | null = null
38
-
39
- const taskPath = join(jobsDir, 'tasks', `${camelCaseJobSlug}.ts`)
40
- const workflowPath = join(jobsDir, 'workflows', `${camelCaseJobSlug}.ts`)
41
-
42
- if (existsSync(taskPath)) {
43
- filePath = taskPath
44
- jobType = 'task'
45
- if (verboseLogs) {
46
- payload.logger.info(`[payload-mcp] Found task file: ${taskPath}`)
47
- }
48
- } else if (existsSync(workflowPath)) {
49
- filePath = workflowPath
50
- jobType = 'workflow'
51
- if (verboseLogs) {
52
- payload.logger.info(`[payload-mcp] Found workflow file: ${workflowPath}`)
53
- }
54
- } else {
55
- throw new Error(`No task or workflow file found for job slug: ${jobSlug}`)
56
- }
57
-
58
- // Read the current file content
59
- let content = readFileSync(filePath, 'utf8')
60
- const originalContent = content
61
-
62
- if (verboseLogs) {
63
- payload.logger.info(`[payload-mcp] Applying update type: ${updateType}`)
64
- }
65
-
66
- // Apply updates based on type
67
- switch (updateType) {
68
- case 'change_config':
69
- if (!configUpdate) {
70
- throw new Error('config must be provided for change_config')
71
- }
72
-
73
- content = updateConfig(content, jobSlug, configUpdate)
74
- if (verboseLogs) {
75
- payload.logger.info(`[payload-mcp] Configuration updated successfully`)
76
- }
77
- break
78
-
79
- case 'modify_schema':
80
- if (!inputSchema && !outputSchema) {
81
- throw new Error('Either inputSchema or outputSchema must be provided for modify_schema')
82
- }
83
-
84
- content = updateSchema(content, camelCaseJobSlug, inputSchema, outputSchema)
85
- if (verboseLogs) {
86
- payload.logger.info(`[payload-mcp] Schema updated successfully`)
87
- }
88
- break
89
-
90
- case 'replace_handler':
91
- if (!handlerCode) {
92
- throw new Error('handlerCode must be provided for replace_handler')
93
- }
94
-
95
- content = updateHandler(content, handlerCode, jobType)
96
- if (verboseLogs) {
97
- payload.logger.info(`[payload-mcp] Handler code replaced successfully`)
98
- }
99
- break
100
-
101
- case 'update_tasks':
102
- if (!taskSequence) {
103
- throw new Error('taskSequence must be provided for update_tasks')
104
- }
105
-
106
- if (jobType !== 'workflow') {
107
- throw new Error('update_tasks is only supported for workflow jobs')
108
- }
109
-
110
- content = updateWorkflowTasks(content, taskSequence)
111
- if (verboseLogs) {
112
- payload.logger.info(`[payload-mcp] Workflow tasks updated successfully`)
113
- }
114
- break
115
- }
116
-
117
- // Only write if content changed
118
- if (content !== originalContent) {
119
- if (verboseLogs) {
120
- payload.logger.info(`[payload-mcp] Writing updated content to file`)
121
- }
122
-
123
- // Write the updated content
124
- writeFileSync(filePath, content)
125
-
126
- // Validate the updated file
127
- const fileName = `${camelCaseJobSlug}.ts`
128
- const validationType = jobType === 'task' ? 'task' : 'workflow'
129
-
130
- try {
131
- const validationResult = await validatePayloadFile(fileName, validationType)
132
-
133
- if (!validationResult.success) {
134
- if (verboseLogs) {
135
- payload.logger.warn(`[payload-mcp] Validation warning: ${validationResult.error}`)
136
- }
137
-
138
- return {
139
- content: [
140
- {
141
- type: 'text' as const,
142
- text: `⚠️ **Warning**: Job updated but validation failed:\n\n${validationResult.error}\n\nPlease review the generated code for any syntax errors.`,
143
- },
144
- ],
145
- }
146
- }
147
-
148
- if (verboseLogs) {
149
- payload.logger.info(`[payload-mcp] File validation successful`)
150
- }
151
- } catch (validationError) {
152
- if (verboseLogs) {
153
- payload.logger.warn(`[payload-mcp] Validation error: ${validationError}`)
154
- }
155
-
156
- return {
157
- content: [
158
- {
159
- type: 'text' as const,
160
- text: `⚠️ **Warning**: Job updated but validation could not be completed:\n\n${validationError}\n\nPlease review the generated code manually.`,
161
- },
162
- ],
163
- }
164
- }
165
-
166
- return {
167
- content: [
168
- {
169
- type: 'text' as const,
170
- text: `✅ **Job updated successfully!**\n\n**Job**: \`${jobSlug}\`\n**Type**: \`${jobType}\`\n**Update**: \`${updateType}\`\n**File**: \`${fileName}\`\n\n**Next steps**:\n1. Restart your development server to load the updated job\n2. Test the updated functionality\n3. Verify the changes meet your requirements`,
171
- },
172
- ],
173
- }
174
- } else {
175
- if (verboseLogs) {
176
- payload.logger.info(`[payload-mcp] No changes detected, file not modified`)
177
- }
178
-
179
- return {
180
- content: [
181
- {
182
- type: 'text' as const,
183
- text: `ℹ️ **No changes made**: The job file was not modified as no changes were detected.\n\n**Job**: \`${jobSlug}\`\n**Type**: \`${jobType}\`\n**Update**: \`${updateType}\``,
184
- },
185
- ],
186
- }
187
- }
188
- } catch (error) {
189
- const errorMessage = (error as Error).message
190
- payload.logger.error(`[payload-mcp] Error updating job: ${errorMessage}`)
191
-
192
- return {
193
- content: [
194
- {
195
- type: 'text' as const,
196
- text: `❌ **Error updating job**: ${errorMessage}`,
197
- },
198
- ],
199
- }
200
- }
201
- }
202
-
203
- // Helper functions for different update types
204
- function updateSchema(
205
- content: string,
206
- _camelCaseJobSlug: string,
207
- _inputSchema?: SchemaField[],
208
- _outputSchema?: SchemaField[],
209
- ): string {
210
- // TODO: Implementation for schema updates
211
- return content
212
- }
213
-
214
- function updateWorkflowTasks(content: string, _taskSequence: TaskSequenceItem[]): string {
215
- // TODO: Implementation for updating workflow tasks
216
- return content
217
- }
218
-
219
- function updateConfig(content: string, _jobSlug: string, _configUpdate: JobConfigUpdate): string {
220
- // TODO: Implementation for updating job configuration
221
- return content
222
- }
223
-
224
- function updateHandler(
225
- content: string,
226
- _handlerCode: string,
227
- _jobType: 'task' | 'workflow',
228
- ): string {
229
- // TODO: Implementation for replacing handler code
230
- return content
231
- }
232
-
233
- export const updateJobTool = (
234
- server: McpServer,
235
- req: PayloadRequest,
236
- verboseLogs: boolean,
237
- jobsDir: string,
238
- ) => {
239
- server.registerTool(
240
- 'updateJob',
241
- {
242
- description:
243
- 'Updates an existing Payload job with new configuration, schema, or handler code',
244
- inputSchema: toolSchemas.updateJob.parameters.shape,
245
- },
246
- async ({
247
- configUpdate,
248
- handlerCode,
249
- inputSchema,
250
- jobSlug,
251
- outputSchema,
252
- taskSequence,
253
- updateType,
254
- }) => {
255
- if (verboseLogs) {
256
- req.payload.logger.info(
257
- `[payload-mcp] Update Job Tool called with: ${jobSlug}, ${updateType}`,
258
- )
259
- }
260
- return updateJob(
261
- req,
262
- verboseLogs,
263
- jobsDir,
264
- jobSlug,
265
- updateType,
266
- inputSchema as unknown as SchemaField[],
267
- outputSchema as unknown as SchemaField[],
268
- taskSequence,
269
- configUpdate,
270
- handlerCode,
271
- )
272
- },
273
- )
274
- }
@@ -1,211 +0,0 @@
1
- import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'
2
- import type { JSONSchema4 } from 'json-schema'
3
- import type { PayloadRequest, SelectType, TypedUser } from 'payload'
4
-
5
- import { z } from 'zod'
6
-
7
- import type { MCPPluginConfig } from '../../../types.js'
8
-
9
- import { toCamelCase } from '../../../utils/camelCase.js'
10
- import {
11
- getCollectionVirtualFieldNames,
12
- stripVirtualFields,
13
- } from '../../../utils/getVirtualFieldNames.js'
14
- import { convertCollectionSchemaToZod } from '../../../utils/schemaConversion/convertCollectionSchemaToZod.js'
15
- import { transformPointDataToPayload } from '../../../utils/transformPointDataToPayload.js'
16
- import { toolSchemas } from '../schemas.js'
17
- export const createResourceTool = (
18
- server: McpServer,
19
- req: PayloadRequest,
20
- user: TypedUser,
21
- verboseLogs: boolean,
22
- collectionSlug: string,
23
- collections: MCPPluginConfig['collections'],
24
- schema: JSONSchema4,
25
- ) => {
26
- const tool = async (
27
- data: string,
28
- depth: number = 0,
29
- draft: boolean,
30
- locale?: string,
31
- fallbackLocale?: string,
32
- select?: string,
33
- ): Promise<{
34
- content: Array<{
35
- text: string
36
- type: 'text'
37
- }>
38
- }> => {
39
- const payload = req.payload
40
-
41
- if (verboseLogs) {
42
- payload.logger.info(
43
- `[payload-mcp] Creating resource in collection: ${collectionSlug}${locale ? ` with locale: ${locale}` : ''}`,
44
- )
45
- }
46
-
47
- try {
48
- // Parse the data JSON
49
- let parsedData: Record<string, unknown>
50
- try {
51
- parsedData = JSON.parse(data)
52
-
53
- // Transform point fields from object format to tuple array
54
- parsedData = transformPointDataToPayload(parsedData)
55
-
56
- const virtualFieldNames = getCollectionVirtualFieldNames(payload.config, collectionSlug)
57
- parsedData = stripVirtualFields(parsedData, virtualFieldNames)
58
-
59
- if (verboseLogs) {
60
- payload.logger.info(
61
- `[payload-mcp] Parsed data for ${collectionSlug}: ${JSON.stringify(parsedData)}`,
62
- )
63
- }
64
- } catch (_parseError) {
65
- payload.logger.error(`[payload-mcp] Invalid JSON data provided: ${data}`)
66
- return {
67
- content: [{ type: 'text' as const, text: 'Error: Invalid JSON data provided' }],
68
- }
69
- }
70
-
71
- let selectClause: SelectType | undefined
72
- if (select) {
73
- try {
74
- selectClause = JSON.parse(select) as SelectType
75
- } catch (_parseError) {
76
- payload.logger.warn(`[payload-mcp] Invalid select clause JSON: ${select}`)
77
- const response = {
78
- content: [{ type: 'text' as const, text: 'Error: Invalid JSON in select clause' }],
79
- }
80
- return (collections?.[collectionSlug]?.overrideResponse?.(response, {}, req) ||
81
- response) as {
82
- content: Array<{
83
- text: string
84
- type: 'text'
85
- }>
86
- }
87
- }
88
- }
89
-
90
- // Create the resource
91
- const result = await payload.create({
92
- collection: collectionSlug,
93
- data: parsedData,
94
- depth,
95
- draft,
96
- overrideAccess: false,
97
- req,
98
- user,
99
- ...(locale && { locale }),
100
- ...(fallbackLocale && { fallbackLocale }),
101
- ...(selectClause && { select: selectClause }),
102
- })
103
-
104
- if (verboseLogs) {
105
- payload.logger.info(
106
- `[payload-mcp] Successfully created resource in ${collectionSlug} with ID: ${result.id}`,
107
- )
108
- }
109
-
110
- const response = {
111
- content: [
112
- {
113
- type: 'text' as const,
114
- text: `Resource created successfully in collection "${collectionSlug}"!
115
- Created resource:
116
- \`\`\`json
117
- ${JSON.stringify(result)}
118
- \`\`\``,
119
- },
120
- ],
121
- }
122
-
123
- return (collections?.[collectionSlug]?.overrideResponse?.(response, result, req) ||
124
- response) as {
125
- content: Array<{
126
- text: string
127
- type: 'text'
128
- }>
129
- }
130
- } catch (error) {
131
- const errorMessage = error instanceof Error ? error.message : 'Unknown error'
132
- payload.logger.error(
133
- `[payload-mcp] Error creating resource in ${collectionSlug}: ${errorMessage}`,
134
- )
135
-
136
- const response = {
137
- content: [
138
- {
139
- type: 'text' as const,
140
- text: `Error creating resource in collection "${collectionSlug}": ${errorMessage}`,
141
- },
142
- ],
143
- }
144
-
145
- return (collections?.[collectionSlug]?.overrideResponse?.(response, {}, req) || response) as {
146
- content: Array<{
147
- text: string
148
- type: 'text'
149
- }>
150
- }
151
- }
152
- }
153
-
154
- if (collections?.[collectionSlug]?.enabled) {
155
- const convertedFields = convertCollectionSchemaToZod(schema)
156
-
157
- // Create a new schema that combines the converted fields with create-specific parameters
158
- const createResourceSchema = z.object({
159
- ...convertedFields.shape,
160
- depth: z
161
- .number()
162
- .int()
163
- .min(0)
164
- .max(10)
165
- .optional()
166
- .default(0)
167
- .describe('How many levels deep to populate relationships in response'),
168
- draft: z
169
- .boolean()
170
- .optional()
171
- .default(false)
172
- .describe('Whether to create the document as a draft'),
173
- fallbackLocale: z
174
- .string()
175
- .optional()
176
- .describe('Optional: fallback locale code to use when requested locale is not available'),
177
- locale: z
178
- .string()
179
- .optional()
180
- .describe(
181
- 'Optional: locale code to create the document in (e.g., "en", "es"). Defaults to the default locale',
182
- ),
183
- select: z
184
- .string()
185
- .optional()
186
- .describe(
187
- 'Optional: define exactly which fields you\'d like to create (JSON), e.g., \'{"title": "My Post"}\'',
188
- ),
189
- })
190
-
191
- server.registerTool(
192
- `create${collectionSlug.charAt(0).toUpperCase() + toCamelCase(collectionSlug).slice(1)}`,
193
- {
194
- description: `${collections?.[collectionSlug]?.description || toolSchemas.createResource.description.trim()}`,
195
- inputSchema: createResourceSchema.shape,
196
- },
197
- async (params: Record<string, unknown>) => {
198
- const { depth, draft, fallbackLocale, locale, select, ...fieldData } = params
199
- const data = JSON.stringify(fieldData)
200
- return await tool(
201
- data,
202
- depth as number,
203
- draft as boolean,
204
- locale as string | undefined,
205
- fallbackLocale as string | undefined,
206
- select as string | undefined,
207
- )
208
- },
209
- )
210
- }
211
- }
@@ -1,218 +0,0 @@
1
- import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'
2
- import type { PayloadRequest, TypedUser } from 'payload'
3
-
4
- import type { MCPPluginConfig } from '../../../types.js'
5
-
6
- import { toCamelCase } from '../../../utils/camelCase.js'
7
- import { toolSchemas } from '../schemas.js'
8
-
9
- export const deleteResourceTool = (
10
- server: McpServer,
11
- req: PayloadRequest,
12
- user: TypedUser,
13
- verboseLogs: boolean,
14
- collectionSlug: string,
15
- collections: MCPPluginConfig['collections'],
16
- ) => {
17
- const tool = async (
18
- id?: number | string,
19
- where?: string,
20
- depth: number = 0,
21
- locale?: string,
22
- fallbackLocale?: string,
23
- ): Promise<{
24
- content: Array<{
25
- text: string
26
- type: 'text'
27
- }>
28
- }> => {
29
- const payload = req.payload
30
-
31
- if (verboseLogs) {
32
- payload.logger.info(
33
- `[payload-mcp] Deleting resource from collection: ${collectionSlug}${id ? ` with ID: ${id}` : ' with where clause'}${locale ? `, locale: ${locale}` : ''}`,
34
- )
35
- }
36
-
37
- try {
38
- // Validate that either id or where is provided
39
- if (!id && !where) {
40
- payload.logger.error('[payload-mcp] Either id or where clause must be provided')
41
- const response = {
42
- content: [
43
- { type: 'text' as const, text: 'Error: Either id or where clause must be provided' },
44
- ],
45
- }
46
- return (collections?.[collectionSlug]?.overrideResponse?.(response, {}, req) ||
47
- response) as {
48
- content: Array<{
49
- text: string
50
- type: 'text'
51
- }>
52
- }
53
- }
54
-
55
- // Parse where clause if provided
56
- let whereClause = {}
57
- if (where) {
58
- try {
59
- whereClause = JSON.parse(where)
60
- if (verboseLogs) {
61
- payload.logger.info(`[payload-mcp] Using where clause: ${where}`)
62
- }
63
- } catch (_parseError) {
64
- payload.logger.warn(`[payload-mcp] Invalid where clause JSON: ${where}`)
65
- const response = {
66
- content: [{ type: 'text' as const, text: 'Error: Invalid JSON in where clause' }],
67
- }
68
- return (collections?.[collectionSlug]?.overrideResponse?.(response, {}, req) ||
69
- response) as {
70
- content: Array<{
71
- text: string
72
- type: 'text'
73
- }>
74
- }
75
- }
76
- }
77
-
78
- // Build delete options
79
- const deleteOptions: Record<string, unknown> = {
80
- collection: collectionSlug,
81
- depth,
82
- overrideAccess: false,
83
- req,
84
- user,
85
- ...(locale && { locale }),
86
- ...(fallbackLocale && { fallbackLocale }),
87
- }
88
-
89
- // Delete by ID or where clause
90
- if (id) {
91
- deleteOptions.id = id
92
- if (verboseLogs) {
93
- payload.logger.info(`[payload-mcp] Deleting single document with ID: ${id}`)
94
- }
95
- } else {
96
- deleteOptions.where = whereClause
97
- if (verboseLogs) {
98
- payload.logger.info(`[payload-mcp] Deleting multiple documents with where clause`)
99
- }
100
- }
101
-
102
- const result = await payload.delete(deleteOptions as Parameters<typeof payload.delete>[0])
103
-
104
- // Handle different result types
105
- if (id) {
106
- // Single document deletion
107
- if (verboseLogs) {
108
- payload.logger.info(`[payload-mcp] Successfully deleted document with ID: ${id}`)
109
- }
110
-
111
- const response = {
112
- content: [
113
- {
114
- type: 'text' as const,
115
- text: `Document deleted successfully from collection "${collectionSlug}"!
116
- Deleted document:
117
- \`\`\`json
118
- ${JSON.stringify(result)}
119
- \`\`\``,
120
- },
121
- ],
122
- }
123
-
124
- return (collections?.[collectionSlug]?.overrideResponse?.(response, result, req) ||
125
- response) as {
126
- content: Array<{
127
- text: string
128
- type: 'text'
129
- }>
130
- }
131
- } else {
132
- // Multiple documents deletion
133
- const bulkResult = result as { docs?: unknown[]; errors?: unknown[] }
134
- const docs = bulkResult.docs || []
135
- const errors = bulkResult.errors || []
136
-
137
- if (verboseLogs) {
138
- payload.logger.info(
139
- `[payload-mcp] Successfully deleted ${docs.length} documents, ${errors.length} errors`,
140
- )
141
- }
142
-
143
- let responseText = `Document deleted successfully from collection "${collectionSlug}"!
144
- Deleted: ${docs.length} documents
145
- Errors: ${errors.length}
146
- ---`
147
-
148
- if (docs.length > 0) {
149
- responseText += `\n\nDeleted documents:
150
- \`\`\`json
151
- ${JSON.stringify(docs)}
152
- \`\`\``
153
- }
154
-
155
- if (errors.length > 0) {
156
- responseText += `\n\nErrors:
157
- \`\`\`json
158
- ${JSON.stringify(errors)}
159
- \`\`\``
160
- }
161
-
162
- const response = {
163
- content: [
164
- {
165
- type: 'text' as const,
166
- text: responseText,
167
- },
168
- ],
169
- }
170
-
171
- return (collections?.[collectionSlug]?.overrideResponse?.(
172
- response,
173
- { docs, errors },
174
- req,
175
- ) || response) as {
176
- content: Array<{
177
- text: string
178
- type: 'text'
179
- }>
180
- }
181
- }
182
- } catch (error) {
183
- const errorMessage = error instanceof Error ? error.message : 'Unknown error'
184
- payload.logger.error(
185
- `[payload-mcp] Error deleting resource from ${collectionSlug}: ${errorMessage}`,
186
- )
187
-
188
- const response = {
189
- content: [
190
- {
191
- type: 'text' as const,
192
- text: `Error deleting resource from collection "${collectionSlug}": ${errorMessage}`,
193
- },
194
- ],
195
- }
196
-
197
- return (collections?.[collectionSlug]?.overrideResponse?.(response, {}, req) || response) as {
198
- content: Array<{
199
- text: string
200
- type: 'text'
201
- }>
202
- }
203
- }
204
- }
205
-
206
- if (collections?.[collectionSlug]?.enabled) {
207
- server.registerTool(
208
- `delete${collectionSlug.charAt(0).toUpperCase() + toCamelCase(collectionSlug).slice(1)}`,
209
- {
210
- description: `${collections?.[collectionSlug]?.description || toolSchemas.deleteResource.description.trim()}`,
211
- inputSchema: toolSchemas.deleteResource.parameters.shape,
212
- },
213
- async ({ id, depth, fallbackLocale, locale, where }) => {
214
- return await tool(id, where, depth, locale, fallbackLocale)
215
- },
216
- )
217
- }
218
- }