@payloadcms/plugin-mcp 4.0.0-internal.5b1e7cd → 4.0.0-internal.688c4d0

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 (617) hide show
  1. package/bin.js +39 -0
  2. package/dist/@types/assets.d.js +2 -0
  3. package/dist/@types/assets.d.js.map +1 -0
  4. package/dist/collection/getAccessField.d.ts +12 -0
  5. package/dist/collection/getAccessField.d.ts.map +1 -0
  6. package/dist/collection/getAccessField.js +72 -0
  7. package/dist/collection/getAccessField.js.map +1 -0
  8. package/dist/collection/index.d.ts +6 -0
  9. package/dist/collection/index.d.ts.map +1 -0
  10. package/dist/collection/index.js +105 -0
  11. package/dist/collection/index.js.map +1 -0
  12. package/dist/components/APIKeyField/index.client.d.ts +9 -0
  13. package/dist/components/APIKeyField/index.client.d.ts.map +1 -0
  14. package/dist/components/APIKeyField/index.client.js +85 -0
  15. package/dist/components/APIKeyField/index.client.js.map +1 -0
  16. package/dist/components/APIKeyField/index.css +105 -0
  17. package/dist/components/APIKeysEmptyState/index.client.d.ts +4 -0
  18. package/dist/components/APIKeysEmptyState/index.client.d.ts.map +1 -0
  19. package/dist/components/APIKeysEmptyState/index.client.js +21 -0
  20. package/dist/components/APIKeysEmptyState/index.client.js.map +1 -0
  21. package/dist/components/AccessField/index.client.d.ts +10 -0
  22. package/dist/components/AccessField/index.client.d.ts.map +1 -0
  23. package/dist/components/AccessField/index.client.js +247 -0
  24. package/dist/components/AccessField/index.client.js.map +1 -0
  25. package/dist/components/AccessField/index.css +99 -0
  26. package/dist/components/SettingsMenu/index.client.d.ts +8 -0
  27. package/dist/components/SettingsMenu/index.client.d.ts.map +1 -0
  28. package/dist/components/SettingsMenu/index.client.js +29 -0
  29. package/dist/components/SettingsMenu/index.client.js.map +1 -0
  30. package/dist/defineTool.d.ts +26 -0
  31. package/dist/defineTool.d.ts.map +1 -0
  32. package/dist/defineTool.js +37 -0
  33. package/dist/defineTool.js.map +1 -0
  34. package/dist/endpoint/access.d.ts +10 -0
  35. package/dist/endpoint/access.d.ts.map +1 -0
  36. package/dist/endpoint/access.js +122 -0
  37. package/dist/endpoint/access.js.map +1 -0
  38. package/dist/endpoint/index.d.ts +3 -0
  39. package/dist/endpoint/index.d.ts.map +1 -0
  40. package/dist/endpoint/index.js +36 -0
  41. package/dist/endpoint/index.js.map +1 -0
  42. package/dist/exports/client.d.ts +5 -0
  43. package/dist/exports/client.d.ts.map +1 -0
  44. package/dist/exports/client.js +7 -0
  45. package/dist/exports/client.js.map +1 -0
  46. package/dist/index.d.ts +4 -7
  47. package/dist/index.d.ts.map +1 -1
  48. package/dist/index.js +87 -67
  49. package/dist/index.js.map +1 -1
  50. package/dist/mcp/buildMcpServer.d.ts +19 -0
  51. package/dist/mcp/buildMcpServer.d.ts.map +1 -0
  52. package/dist/mcp/buildMcpServer.js +199 -0
  53. package/dist/mcp/buildMcpServer.js.map +1 -0
  54. package/dist/mcp/builtin/collections/authTools.d.ts +7 -0
  55. package/dist/mcp/builtin/collections/authTools.d.ts.map +1 -0
  56. package/dist/mcp/builtin/collections/authTools.js +250 -0
  57. package/dist/mcp/builtin/collections/authTools.js.map +1 -0
  58. package/dist/mcp/builtin/collections/createTool.d.ts +2 -0
  59. package/dist/mcp/builtin/collections/createTool.d.ts.map +1 -0
  60. package/dist/mcp/builtin/collections/createTool.js +94 -0
  61. package/dist/mcp/builtin/collections/createTool.js.map +1 -0
  62. package/dist/mcp/builtin/collections/deleteTool.d.ts +2 -0
  63. package/dist/mcp/builtin/collections/deleteTool.d.ts.map +1 -0
  64. package/dist/mcp/builtin/collections/deleteTool.js +102 -0
  65. package/dist/mcp/builtin/collections/deleteTool.js.map +1 -0
  66. package/dist/mcp/builtin/collections/findTool.d.ts +2 -0
  67. package/dist/mcp/builtin/collections/findTool.d.ts.map +1 -0
  68. package/dist/mcp/builtin/collections/findTool.js +144 -0
  69. package/dist/mcp/builtin/collections/findTool.js.map +1 -0
  70. package/dist/mcp/builtin/collections/formatCollectionError.d.ts +9 -0
  71. package/dist/mcp/builtin/collections/formatCollectionError.d.ts.map +1 -0
  72. package/dist/mcp/builtin/collections/formatCollectionError.js +60 -0
  73. package/dist/mcp/builtin/collections/formatCollectionError.js.map +1 -0
  74. package/dist/mcp/builtin/collections/getCollectionSchemaTool.d.ts +2 -0
  75. package/dist/mcp/builtin/collections/getCollectionSchemaTool.d.ts.map +1 -0
  76. package/dist/mcp/builtin/collections/getCollectionSchemaTool.js +35 -0
  77. package/dist/mcp/builtin/collections/getCollectionSchemaTool.js.map +1 -0
  78. package/dist/mcp/builtin/collections/updateTool.d.ts +2 -0
  79. package/dist/mcp/builtin/collections/updateTool.d.ts.map +1 -0
  80. package/dist/mcp/builtin/collections/updateTool.js +199 -0
  81. package/dist/mcp/builtin/collections/updateTool.js.map +1 -0
  82. package/dist/mcp/builtin/getConfigInfoTool.d.ts +2 -0
  83. package/dist/mcp/builtin/getConfigInfoTool.d.ts.map +1 -0
  84. package/dist/mcp/builtin/getConfigInfoTool.js +49 -0
  85. package/dist/mcp/builtin/getConfigInfoTool.js.map +1 -0
  86. package/dist/mcp/builtin/globals/findTool.d.ts +2 -0
  87. package/dist/mcp/builtin/globals/findTool.d.ts.map +1 -0
  88. package/dist/mcp/builtin/globals/findTool.js +76 -0
  89. package/dist/mcp/builtin/globals/findTool.js.map +1 -0
  90. package/dist/mcp/builtin/globals/getGlobalSchemaTool.d.ts +2 -0
  91. package/dist/mcp/builtin/globals/getGlobalSchemaTool.d.ts.map +1 -0
  92. package/dist/mcp/builtin/globals/getGlobalSchemaTool.js +35 -0
  93. package/dist/mcp/builtin/globals/getGlobalSchemaTool.js.map +1 -0
  94. package/dist/mcp/builtin/globals/updateTool.d.ts +2 -0
  95. package/dist/mcp/builtin/globals/updateTool.d.ts.map +1 -0
  96. package/dist/mcp/builtin/globals/updateTool.js +94 -0
  97. package/dist/mcp/builtin/globals/updateTool.js.map +1 -0
  98. package/dist/mcp/builtin/validateEntityData.d.ts +14 -0
  99. package/dist/mcp/builtin/validateEntityData.d.ts.map +1 -0
  100. package/dist/mcp/builtin/validateEntityData.js +82 -0
  101. package/dist/mcp/builtin/validateEntityData.js.map +1 -0
  102. package/dist/mcp/builtinTools.d.ts +105 -0
  103. package/dist/mcp/builtinTools.d.ts.map +1 -0
  104. package/dist/mcp/builtinTools.js +107 -0
  105. package/dist/mcp/builtinTools.js.map +1 -0
  106. package/dist/mcp/sanitizeMCPConfig.d.ts +17 -0
  107. package/dist/mcp/sanitizeMCPConfig.d.ts.map +1 -0
  108. package/dist/mcp/sanitizeMCPConfig.js +188 -0
  109. package/dist/mcp/sanitizeMCPConfig.js.map +1 -0
  110. package/dist/stdio.d.ts +8 -0
  111. package/dist/stdio.d.ts.map +1 -0
  112. package/dist/stdio.js +89 -0
  113. package/dist/stdio.js.map +1 -0
  114. package/dist/translations/index.d.ts +11 -0
  115. package/dist/translations/index.d.ts.map +1 -0
  116. package/dist/translations/index.js +92 -0
  117. package/dist/translations/index.js.map +1 -0
  118. package/dist/translations/languages/ar.d.ts +31 -0
  119. package/dist/translations/languages/ar.d.ts.map +1 -0
  120. package/dist/translations/languages/ar.js +34 -0
  121. package/dist/translations/languages/ar.js.map +1 -0
  122. package/dist/translations/languages/az.d.ts +31 -0
  123. package/dist/translations/languages/az.d.ts.map +1 -0
  124. package/dist/translations/languages/az.js +34 -0
  125. package/dist/translations/languages/az.js.map +1 -0
  126. package/dist/translations/languages/bg.d.ts +31 -0
  127. package/dist/translations/languages/bg.d.ts.map +1 -0
  128. package/dist/translations/languages/bg.js +34 -0
  129. package/dist/translations/languages/bg.js.map +1 -0
  130. package/dist/translations/languages/bnBd.d.ts +31 -0
  131. package/dist/translations/languages/bnBd.d.ts.map +1 -0
  132. package/dist/translations/languages/bnBd.js +34 -0
  133. package/dist/translations/languages/bnBd.js.map +1 -0
  134. package/dist/translations/languages/bnIn.d.ts +31 -0
  135. package/dist/translations/languages/bnIn.d.ts.map +1 -0
  136. package/dist/translations/languages/bnIn.js +34 -0
  137. package/dist/translations/languages/bnIn.js.map +1 -0
  138. package/dist/translations/languages/ca.d.ts +31 -0
  139. package/dist/translations/languages/ca.d.ts.map +1 -0
  140. package/dist/translations/languages/ca.js +34 -0
  141. package/dist/translations/languages/ca.js.map +1 -0
  142. package/dist/translations/languages/cs.d.ts +31 -0
  143. package/dist/translations/languages/cs.d.ts.map +1 -0
  144. package/dist/translations/languages/cs.js +34 -0
  145. package/dist/translations/languages/cs.js.map +1 -0
  146. package/dist/translations/languages/da.d.ts +31 -0
  147. package/dist/translations/languages/da.d.ts.map +1 -0
  148. package/dist/translations/languages/da.js +34 -0
  149. package/dist/translations/languages/da.js.map +1 -0
  150. package/dist/translations/languages/de.d.ts +31 -0
  151. package/dist/translations/languages/de.d.ts.map +1 -0
  152. package/dist/translations/languages/de.js +34 -0
  153. package/dist/translations/languages/de.js.map +1 -0
  154. package/dist/translations/languages/en.d.ts +31 -0
  155. package/dist/translations/languages/en.d.ts.map +1 -0
  156. package/dist/translations/languages/en.js +34 -0
  157. package/dist/translations/languages/en.js.map +1 -0
  158. package/dist/translations/languages/es.d.ts +31 -0
  159. package/dist/translations/languages/es.d.ts.map +1 -0
  160. package/dist/translations/languages/es.js +34 -0
  161. package/dist/translations/languages/es.js.map +1 -0
  162. package/dist/translations/languages/et.d.ts +31 -0
  163. package/dist/translations/languages/et.d.ts.map +1 -0
  164. package/dist/translations/languages/et.js +34 -0
  165. package/dist/translations/languages/et.js.map +1 -0
  166. package/dist/translations/languages/fa.d.ts +31 -0
  167. package/dist/translations/languages/fa.d.ts.map +1 -0
  168. package/dist/translations/languages/fa.js +34 -0
  169. package/dist/translations/languages/fa.js.map +1 -0
  170. package/dist/translations/languages/fr.d.ts +31 -0
  171. package/dist/translations/languages/fr.d.ts.map +1 -0
  172. package/dist/translations/languages/fr.js +34 -0
  173. package/dist/translations/languages/fr.js.map +1 -0
  174. package/dist/translations/languages/he.d.ts +31 -0
  175. package/dist/translations/languages/he.d.ts.map +1 -0
  176. package/dist/translations/languages/he.js +34 -0
  177. package/dist/translations/languages/he.js.map +1 -0
  178. package/dist/translations/languages/hr.d.ts +31 -0
  179. package/dist/translations/languages/hr.d.ts.map +1 -0
  180. package/dist/translations/languages/hr.js +34 -0
  181. package/dist/translations/languages/hr.js.map +1 -0
  182. package/dist/translations/languages/hu.d.ts +31 -0
  183. package/dist/translations/languages/hu.d.ts.map +1 -0
  184. package/dist/translations/languages/hu.js +34 -0
  185. package/dist/translations/languages/hu.js.map +1 -0
  186. package/dist/translations/languages/hy.d.ts +31 -0
  187. package/dist/translations/languages/hy.d.ts.map +1 -0
  188. package/dist/translations/languages/hy.js +34 -0
  189. package/dist/translations/languages/hy.js.map +1 -0
  190. package/dist/translations/languages/id.d.ts +31 -0
  191. package/dist/translations/languages/id.d.ts.map +1 -0
  192. package/dist/translations/languages/id.js +34 -0
  193. package/dist/translations/languages/id.js.map +1 -0
  194. package/dist/translations/languages/is.d.ts +31 -0
  195. package/dist/translations/languages/is.d.ts.map +1 -0
  196. package/dist/translations/languages/is.js +34 -0
  197. package/dist/translations/languages/is.js.map +1 -0
  198. package/dist/translations/languages/it.d.ts +31 -0
  199. package/dist/translations/languages/it.d.ts.map +1 -0
  200. package/dist/translations/languages/it.js +34 -0
  201. package/dist/translations/languages/it.js.map +1 -0
  202. package/dist/translations/languages/ja.d.ts +31 -0
  203. package/dist/translations/languages/ja.d.ts.map +1 -0
  204. package/dist/translations/languages/ja.js +34 -0
  205. package/dist/translations/languages/ja.js.map +1 -0
  206. package/dist/translations/languages/ko.d.ts +31 -0
  207. package/dist/translations/languages/ko.d.ts.map +1 -0
  208. package/dist/translations/languages/ko.js +34 -0
  209. package/dist/translations/languages/ko.js.map +1 -0
  210. package/dist/translations/languages/lt.d.ts +31 -0
  211. package/dist/translations/languages/lt.d.ts.map +1 -0
  212. package/dist/translations/languages/lt.js +34 -0
  213. package/dist/translations/languages/lt.js.map +1 -0
  214. package/dist/translations/languages/lv.d.ts +31 -0
  215. package/dist/translations/languages/lv.d.ts.map +1 -0
  216. package/dist/translations/languages/lv.js +34 -0
  217. package/dist/translations/languages/lv.js.map +1 -0
  218. package/dist/translations/languages/my.d.ts +31 -0
  219. package/dist/translations/languages/my.d.ts.map +1 -0
  220. package/dist/translations/languages/my.js +34 -0
  221. package/dist/translations/languages/my.js.map +1 -0
  222. package/dist/translations/languages/nb.d.ts +31 -0
  223. package/dist/translations/languages/nb.d.ts.map +1 -0
  224. package/dist/translations/languages/nb.js +34 -0
  225. package/dist/translations/languages/nb.js.map +1 -0
  226. package/dist/translations/languages/nl.d.ts +31 -0
  227. package/dist/translations/languages/nl.d.ts.map +1 -0
  228. package/dist/translations/languages/nl.js +34 -0
  229. package/dist/translations/languages/nl.js.map +1 -0
  230. package/dist/translations/languages/pl.d.ts +31 -0
  231. package/dist/translations/languages/pl.d.ts.map +1 -0
  232. package/dist/translations/languages/pl.js +34 -0
  233. package/dist/translations/languages/pl.js.map +1 -0
  234. package/dist/translations/languages/pt.d.ts +31 -0
  235. package/dist/translations/languages/pt.d.ts.map +1 -0
  236. package/dist/translations/languages/pt.js +34 -0
  237. package/dist/translations/languages/pt.js.map +1 -0
  238. package/dist/translations/languages/ro.d.ts +31 -0
  239. package/dist/translations/languages/ro.d.ts.map +1 -0
  240. package/dist/translations/languages/ro.js +34 -0
  241. package/dist/translations/languages/ro.js.map +1 -0
  242. package/dist/translations/languages/rs.d.ts +31 -0
  243. package/dist/translations/languages/rs.d.ts.map +1 -0
  244. package/dist/translations/languages/rs.js +34 -0
  245. package/dist/translations/languages/rs.js.map +1 -0
  246. package/dist/translations/languages/rsLatin.d.ts +31 -0
  247. package/dist/translations/languages/rsLatin.d.ts.map +1 -0
  248. package/dist/translations/languages/rsLatin.js +34 -0
  249. package/dist/translations/languages/rsLatin.js.map +1 -0
  250. package/dist/translations/languages/ru.d.ts +31 -0
  251. package/dist/translations/languages/ru.d.ts.map +1 -0
  252. package/dist/translations/languages/ru.js +34 -0
  253. package/dist/translations/languages/ru.js.map +1 -0
  254. package/dist/translations/languages/sk.d.ts +31 -0
  255. package/dist/translations/languages/sk.d.ts.map +1 -0
  256. package/dist/translations/languages/sk.js +34 -0
  257. package/dist/translations/languages/sk.js.map +1 -0
  258. package/dist/translations/languages/sl.d.ts +31 -0
  259. package/dist/translations/languages/sl.d.ts.map +1 -0
  260. package/dist/translations/languages/sl.js +34 -0
  261. package/dist/translations/languages/sl.js.map +1 -0
  262. package/dist/translations/languages/sv.d.ts +31 -0
  263. package/dist/translations/languages/sv.d.ts.map +1 -0
  264. package/dist/translations/languages/sv.js +34 -0
  265. package/dist/translations/languages/sv.js.map +1 -0
  266. package/dist/translations/languages/ta.d.ts +31 -0
  267. package/dist/translations/languages/ta.d.ts.map +1 -0
  268. package/dist/translations/languages/ta.js +34 -0
  269. package/dist/translations/languages/ta.js.map +1 -0
  270. package/dist/translations/languages/th.d.ts +31 -0
  271. package/dist/translations/languages/th.d.ts.map +1 -0
  272. package/dist/translations/languages/th.js +34 -0
  273. package/dist/translations/languages/th.js.map +1 -0
  274. package/dist/translations/languages/tr.d.ts +31 -0
  275. package/dist/translations/languages/tr.d.ts.map +1 -0
  276. package/dist/translations/languages/tr.js +34 -0
  277. package/dist/translations/languages/tr.js.map +1 -0
  278. package/dist/translations/languages/uk.d.ts +31 -0
  279. package/dist/translations/languages/uk.d.ts.map +1 -0
  280. package/dist/translations/languages/uk.js +34 -0
  281. package/dist/translations/languages/uk.js.map +1 -0
  282. package/dist/translations/languages/vi.d.ts +31 -0
  283. package/dist/translations/languages/vi.d.ts.map +1 -0
  284. package/dist/translations/languages/vi.js +34 -0
  285. package/dist/translations/languages/vi.js.map +1 -0
  286. package/dist/translations/languages/zh.d.ts +31 -0
  287. package/dist/translations/languages/zh.d.ts.map +1 -0
  288. package/dist/translations/languages/zh.js +34 -0
  289. package/dist/translations/languages/zh.js.map +1 -0
  290. package/dist/translations/languages/zhTw.d.ts +31 -0
  291. package/dist/translations/languages/zhTw.d.ts.map +1 -0
  292. package/dist/translations/languages/zhTw.js +34 -0
  293. package/dist/translations/languages/zhTw.js.map +1 -0
  294. package/dist/translations/types.d.ts +32 -0
  295. package/dist/translations/types.d.ts.map +1 -0
  296. package/dist/translations/types.js +3 -0
  297. package/dist/translations/types.js.map +1 -0
  298. package/dist/types.d.ts +255 -454
  299. package/dist/types.d.ts.map +1 -1
  300. package/dist/types.js +6 -1
  301. package/dist/types.js.map +1 -1
  302. package/dist/utils/camelCase.d.ts.map +1 -1
  303. package/dist/utils/getLogger.d.ts +10 -0
  304. package/dist/utils/getLogger.d.ts.map +1 -0
  305. package/dist/utils/getLogger.js +22 -0
  306. package/dist/utils/getLogger.js.map +1 -0
  307. package/dist/utils/getPluginConfig.d.ts +12 -0
  308. package/dist/utils/getPluginConfig.d.ts.map +1 -0
  309. package/dist/utils/getPluginConfig.js +15 -0
  310. package/dist/utils/getPluginConfig.js.map +1 -0
  311. package/dist/utils/localAPIDefaults.d.ts +20 -0
  312. package/dist/utils/localAPIDefaults.d.ts.map +1 -0
  313. package/dist/utils/localAPIDefaults.js +19 -0
  314. package/dist/utils/localAPIDefaults.js.map +1 -0
  315. package/dist/utils/resolveProjectRoot.d.ts +7 -0
  316. package/dist/utils/resolveProjectRoot.d.ts.map +1 -0
  317. package/dist/utils/resolveProjectRoot.js +15 -0
  318. package/dist/utils/resolveProjectRoot.js.map +1 -0
  319. package/dist/utils/schemaConversion/getEntityInputSchema.d.ts +11 -0
  320. package/dist/utils/schemaConversion/getEntityInputSchema.d.ts.map +1 -0
  321. package/dist/utils/schemaConversion/getEntityInputSchema.js +34 -0
  322. package/dist/utils/schemaConversion/getEntityInputSchema.js.map +1 -0
  323. package/dist/utils/schemaConversion/removeVirtualFieldsFromSchema.d.ts +2 -2
  324. package/dist/utils/schemaConversion/removeVirtualFieldsFromSchema.d.ts.map +1 -1
  325. package/dist/utils/schemaConversion/removeVirtualFieldsFromSchema.js.map +1 -1
  326. package/dist/utils/schemaConversion/sanitizeEntitySchema.d.ts +15 -0
  327. package/dist/utils/schemaConversion/sanitizeEntitySchema.d.ts.map +1 -0
  328. package/dist/utils/schemaConversion/sanitizeEntitySchema.js +464 -0
  329. package/dist/utils/schemaConversion/sanitizeEntitySchema.js.map +1 -0
  330. package/dist/utils/schemaConversion/sanitizeEntitySchema.spec.js +158 -0
  331. package/dist/utils/schemaConversion/sanitizeEntitySchema.spec.js.map +1 -0
  332. package/dist/utils/toStandardSchema.d.ts +5 -0
  333. package/dist/utils/toStandardSchema.d.ts.map +1 -0
  334. package/dist/utils/toStandardSchema.js +4 -0
  335. package/dist/utils/toStandardSchema.js.map +1 -0
  336. package/dist/utils/whereSchema.d.ts +9 -0
  337. package/dist/utils/whereSchema.d.ts.map +1 -0
  338. package/dist/utils/whereSchema.js +13 -0
  339. package/dist/utils/whereSchema.js.map +1 -0
  340. package/package.json +36 -10
  341. package/src/@types/assets.d.ts +3 -0
  342. package/src/collection/getAccessField.ts +84 -0
  343. package/src/collection/index.ts +105 -0
  344. package/src/components/APIKeyField/index.client.tsx +73 -0
  345. package/src/components/APIKeyField/index.css +105 -0
  346. package/src/components/APIKeysEmptyState/index.client.tsx +36 -0
  347. package/src/components/AccessField/index.client.tsx +299 -0
  348. package/src/components/AccessField/index.css +99 -0
  349. package/src/components/SettingsMenu/index.client.tsx +34 -0
  350. package/src/defineTool.ts +44 -0
  351. package/src/endpoint/access.ts +144 -0
  352. package/src/endpoint/index.ts +35 -0
  353. package/src/exports/client.ts +5 -0
  354. package/src/index.ts +82 -86
  355. package/src/mcp/buildMcpServer.ts +257 -0
  356. package/src/mcp/builtin/collections/authTools.ts +233 -0
  357. package/src/mcp/builtin/collections/createTool.ts +112 -0
  358. package/src/mcp/builtin/collections/deleteTool.ts +116 -0
  359. package/src/mcp/builtin/collections/findTool.ts +177 -0
  360. package/src/mcp/builtin/collections/formatCollectionError.ts +84 -0
  361. package/src/mcp/builtin/collections/getCollectionSchemaTool.ts +28 -0
  362. package/src/mcp/builtin/collections/updateTool.ts +211 -0
  363. package/src/mcp/builtin/getConfigInfoTool.ts +44 -0
  364. package/src/mcp/builtin/globals/findTool.ts +96 -0
  365. package/src/mcp/builtin/globals/getGlobalSchemaTool.ts +28 -0
  366. package/src/mcp/builtin/globals/updateTool.ts +115 -0
  367. package/src/mcp/builtin/validateEntityData.ts +132 -0
  368. package/src/mcp/builtinTools.ts +98 -0
  369. package/src/mcp/sanitizeMCPConfig.ts +260 -0
  370. package/src/stdio.ts +98 -0
  371. package/src/translations/index.ts +108 -0
  372. package/src/translations/languages/ar.ts +35 -0
  373. package/src/translations/languages/az.ts +35 -0
  374. package/src/translations/languages/bg.ts +35 -0
  375. package/src/translations/languages/bnBd.ts +35 -0
  376. package/src/translations/languages/bnIn.ts +35 -0
  377. package/src/translations/languages/ca.ts +35 -0
  378. package/src/translations/languages/cs.ts +35 -0
  379. package/src/translations/languages/da.ts +35 -0
  380. package/src/translations/languages/de.ts +35 -0
  381. package/src/translations/languages/en.ts +35 -0
  382. package/src/translations/languages/es.ts +35 -0
  383. package/src/translations/languages/et.ts +35 -0
  384. package/src/translations/languages/fa.ts +35 -0
  385. package/src/translations/languages/fr.ts +35 -0
  386. package/src/translations/languages/he.ts +35 -0
  387. package/src/translations/languages/hr.ts +35 -0
  388. package/src/translations/languages/hu.ts +35 -0
  389. package/src/translations/languages/hy.ts +35 -0
  390. package/src/translations/languages/id.ts +35 -0
  391. package/src/translations/languages/is.ts +35 -0
  392. package/src/translations/languages/it.ts +35 -0
  393. package/src/translations/languages/ja.ts +35 -0
  394. package/src/translations/languages/ko.ts +35 -0
  395. package/src/translations/languages/lt.ts +35 -0
  396. package/src/translations/languages/lv.ts +35 -0
  397. package/src/translations/languages/my.ts +35 -0
  398. package/src/translations/languages/nb.ts +35 -0
  399. package/src/translations/languages/nl.ts +35 -0
  400. package/src/translations/languages/pl.ts +35 -0
  401. package/src/translations/languages/pt.ts +35 -0
  402. package/src/translations/languages/ro.ts +35 -0
  403. package/src/translations/languages/rs.ts +35 -0
  404. package/src/translations/languages/rsLatin.ts +35 -0
  405. package/src/translations/languages/ru.ts +35 -0
  406. package/src/translations/languages/sk.ts +35 -0
  407. package/src/translations/languages/sl.ts +35 -0
  408. package/src/translations/languages/sv.ts +35 -0
  409. package/src/translations/languages/ta.ts +35 -0
  410. package/src/translations/languages/th.ts +35 -0
  411. package/src/translations/languages/tr.ts +35 -0
  412. package/src/translations/languages/uk.ts +35 -0
  413. package/src/translations/languages/vi.ts +35 -0
  414. package/src/translations/languages/zh.ts +35 -0
  415. package/src/translations/languages/zhTw.ts +35 -0
  416. package/src/translations/types.ts +34 -0
  417. package/src/types.ts +295 -490
  418. package/src/utils/getLogger.ts +22 -0
  419. package/src/utils/getPluginConfig.ts +24 -0
  420. package/src/utils/localAPIDefaults.ts +22 -0
  421. package/src/utils/resolveProjectRoot.ts +17 -0
  422. package/src/utils/schemaConversion/getEntityInputSchema.ts +78 -0
  423. package/src/utils/schemaConversion/removeVirtualFieldsFromSchema.ts +3 -3
  424. package/src/utils/schemaConversion/sanitizeEntitySchema.spec.ts +103 -0
  425. package/src/utils/schemaConversion/sanitizeEntitySchema.ts +529 -0
  426. package/src/utils/toStandardSchema.ts +9 -0
  427. package/src/utils/whereSchema.ts +24 -0
  428. package/dist/collections/createApiKeysCollection.d.ts +0 -7
  429. package/dist/collections/createApiKeysCollection.d.ts.map +0 -1
  430. package/dist/collections/createApiKeysCollection.js +0 -317
  431. package/dist/collections/createApiKeysCollection.js.map +0 -1
  432. package/dist/defaults.d.ts +0 -4
  433. package/dist/defaults.d.ts.map +0 -1
  434. package/dist/defaults.js +0 -5
  435. package/dist/defaults.js.map +0 -1
  436. package/dist/endpoints/mcp.d.ts +0 -4
  437. package/dist/endpoints/mcp.d.ts.map +0 -1
  438. package/dist/endpoints/mcp.js +0 -71
  439. package/dist/endpoints/mcp.js.map +0 -1
  440. package/dist/mcp/createRequest.d.ts +0 -3
  441. package/dist/mcp/createRequest.d.ts.map +0 -1
  442. package/dist/mcp/createRequest.js +0 -14
  443. package/dist/mcp/createRequest.js.map +0 -1
  444. package/dist/mcp/getMcpHandler.d.ts +0 -4
  445. package/dist/mcp/getMcpHandler.d.ts.map +0 -1
  446. package/dist/mcp/getMcpHandler.js +0 -231
  447. package/dist/mcp/getMcpHandler.js.map +0 -1
  448. package/dist/mcp/helpers/config.d.ts +0 -22
  449. package/dist/mcp/helpers/config.d.ts.map +0 -1
  450. package/dist/mcp/helpers/config.js +0 -153
  451. package/dist/mcp/helpers/config.js.map +0 -1
  452. package/dist/mcp/helpers/fields.d.ts +0 -19
  453. package/dist/mcp/helpers/fields.d.ts.map +0 -1
  454. package/dist/mcp/helpers/fields.js +0 -102
  455. package/dist/mcp/helpers/fields.js.map +0 -1
  456. package/dist/mcp/helpers/fileValidation.d.ts +0 -67
  457. package/dist/mcp/helpers/fileValidation.d.ts.map +0 -1
  458. package/dist/mcp/helpers/fileValidation.js +0 -267
  459. package/dist/mcp/helpers/fileValidation.js.map +0 -1
  460. package/dist/mcp/registerTool.d.ts +0 -6
  461. package/dist/mcp/registerTool.d.ts.map +0 -1
  462. package/dist/mcp/registerTool.js +0 -18
  463. package/dist/mcp/registerTool.js.map +0 -1
  464. package/dist/mcp/tools/auth/auth.d.ts +0 -4
  465. package/dist/mcp/tools/auth/auth.d.ts.map +0 -1
  466. package/dist/mcp/tools/auth/auth.js +0 -57
  467. package/dist/mcp/tools/auth/auth.js.map +0 -1
  468. package/dist/mcp/tools/auth/forgotPassword.d.ts +0 -4
  469. package/dist/mcp/tools/auth/forgotPassword.d.ts.map +0 -1
  470. package/dist/mcp/tools/auth/forgotPassword.js +0 -48
  471. package/dist/mcp/tools/auth/forgotPassword.js.map +0 -1
  472. package/dist/mcp/tools/auth/login.d.ts +0 -4
  473. package/dist/mcp/tools/auth/login.d.ts.map +0 -1
  474. package/dist/mcp/tools/auth/login.js +0 -51
  475. package/dist/mcp/tools/auth/login.js.map +0 -1
  476. package/dist/mcp/tools/auth/resetPassword.d.ts +0 -4
  477. package/dist/mcp/tools/auth/resetPassword.d.ts.map +0 -1
  478. package/dist/mcp/tools/auth/resetPassword.js +0 -49
  479. package/dist/mcp/tools/auth/resetPassword.js.map +0 -1
  480. package/dist/mcp/tools/auth/unlock.d.ts +0 -4
  481. package/dist/mcp/tools/auth/unlock.d.ts.map +0 -1
  482. package/dist/mcp/tools/auth/unlock.js +0 -48
  483. package/dist/mcp/tools/auth/unlock.js.map +0 -1
  484. package/dist/mcp/tools/auth/verify.d.ts +0 -4
  485. package/dist/mcp/tools/auth/verify.d.ts.map +0 -1
  486. package/dist/mcp/tools/auth/verify.js +0 -45
  487. package/dist/mcp/tools/auth/verify.js.map +0 -1
  488. package/dist/mcp/tools/collection/create.d.ts +0 -10
  489. package/dist/mcp/tools/collection/create.d.ts.map +0 -1
  490. package/dist/mcp/tools/collection/create.js +0 -139
  491. package/dist/mcp/tools/collection/create.js.map +0 -1
  492. package/dist/mcp/tools/collection/delete.d.ts +0 -10
  493. package/dist/mcp/tools/collection/delete.d.ts.map +0 -1
  494. package/dist/mcp/tools/collection/delete.js +0 -154
  495. package/dist/mcp/tools/collection/delete.js.map +0 -1
  496. package/dist/mcp/tools/collection/find.d.ts +0 -10
  497. package/dist/mcp/tools/collection/find.d.ts.map +0 -1
  498. package/dist/mcp/tools/collection/find.js +0 -165
  499. package/dist/mcp/tools/collection/find.js.map +0 -1
  500. package/dist/mcp/tools/collection/update.d.ts +0 -10
  501. package/dist/mcp/tools/collection/update.d.ts.map +0 -1
  502. package/dist/mcp/tools/collection/update.js +0 -209
  503. package/dist/mcp/tools/collection/update.js.map +0 -1
  504. package/dist/mcp/tools/config/find.d.ts +0 -10
  505. package/dist/mcp/tools/config/find.d.ts.map +0 -1
  506. package/dist/mcp/tools/config/find.js +0 -97
  507. package/dist/mcp/tools/config/find.js.map +0 -1
  508. package/dist/mcp/tools/config/update.d.ts +0 -10
  509. package/dist/mcp/tools/config/update.d.ts.map +0 -1
  510. package/dist/mcp/tools/config/update.js +0 -215
  511. package/dist/mcp/tools/config/update.js.map +0 -1
  512. package/dist/mcp/tools/global/find.d.ts +0 -5
  513. package/dist/mcp/tools/global/find.d.ts.map +0 -1
  514. package/dist/mcp/tools/global/find.js +0 -82
  515. package/dist/mcp/tools/global/find.js.map +0 -1
  516. package/dist/mcp/tools/global/update.d.ts +0 -6
  517. package/dist/mcp/tools/global/update.d.ts.map +0 -1
  518. package/dist/mcp/tools/global/update.js +0 -124
  519. package/dist/mcp/tools/global/update.js.map +0 -1
  520. package/dist/mcp/tools/job/create.d.ts +0 -10
  521. package/dist/mcp/tools/job/create.d.ts.map +0 -1
  522. package/dist/mcp/tools/job/create.js +0 -293
  523. package/dist/mcp/tools/job/create.js.map +0 -1
  524. package/dist/mcp/tools/job/run.d.ts +0 -10
  525. package/dist/mcp/tools/job/run.d.ts.map +0 -1
  526. package/dist/mcp/tools/job/run.js +0 -129
  527. package/dist/mcp/tools/job/run.js.map +0 -1
  528. package/dist/mcp/tools/job/update.d.ts +0 -11
  529. package/dist/mcp/tools/job/update.d.ts.map +0 -1
  530. package/dist/mcp/tools/job/update.js +0 -186
  531. package/dist/mcp/tools/job/update.js.map +0 -1
  532. package/dist/mcp/tools/resource/create.d.ts +0 -6
  533. package/dist/mcp/tools/resource/create.d.ts.map +0 -1
  534. package/dist/mcp/tools/resource/create.js +0 -124
  535. package/dist/mcp/tools/resource/create.js.map +0 -1
  536. package/dist/mcp/tools/resource/delete.d.ts +0 -5
  537. package/dist/mcp/tools/resource/delete.d.ts.map +0 -1
  538. package/dist/mcp/tools/resource/delete.js +0 -151
  539. package/dist/mcp/tools/resource/delete.js.map +0 -1
  540. package/dist/mcp/tools/resource/find.d.ts +0 -5
  541. package/dist/mcp/tools/resource/find.d.ts.map +0 -1
  542. package/dist/mcp/tools/resource/find.js +0 -170
  543. package/dist/mcp/tools/resource/find.js.map +0 -1
  544. package/dist/mcp/tools/resource/update.d.ts +0 -6
  545. package/dist/mcp/tools/resource/update.d.ts.map +0 -1
  546. package/dist/mcp/tools/resource/update.js +0 -256
  547. package/dist/mcp/tools/resource/update.js.map +0 -1
  548. package/dist/mcp/tools/schemas.d.ts +0 -457
  549. package/dist/mcp/tools/schemas.d.ts.map +0 -1
  550. package/dist/mcp/tools/schemas.js +0 -243
  551. package/dist/mcp/tools/schemas.js.map +0 -1
  552. package/dist/utils/adminEntitySettings.d.ts +0 -17
  553. package/dist/utils/adminEntitySettings.d.ts.map +0 -1
  554. package/dist/utils/adminEntitySettings.js +0 -41
  555. package/dist/utils/adminEntitySettings.js.map +0 -1
  556. package/dist/utils/createApiKeyFields.d.ts +0 -15
  557. package/dist/utils/createApiKeyFields.d.ts.map +0 -1
  558. package/dist/utils/createApiKeyFields.js +0 -57
  559. package/dist/utils/createApiKeyFields.js.map +0 -1
  560. package/dist/utils/getEnabledSlugs.d.ts +0 -13
  561. package/dist/utils/getEnabledSlugs.d.ts.map +0 -1
  562. package/dist/utils/getEnabledSlugs.js +0 -32
  563. package/dist/utils/getEnabledSlugs.js.map +0 -1
  564. package/dist/utils/schemaConversion/convertCollectionSchemaToZod.d.ts +0 -3
  565. package/dist/utils/schemaConversion/convertCollectionSchemaToZod.d.ts.map +0 -1
  566. package/dist/utils/schemaConversion/convertCollectionSchemaToZod.js +0 -43
  567. package/dist/utils/schemaConversion/convertCollectionSchemaToZod.js.map +0 -1
  568. package/dist/utils/schemaConversion/sanitizeJsonSchema.d.ts +0 -13
  569. package/dist/utils/schemaConversion/sanitizeJsonSchema.d.ts.map +0 -1
  570. package/dist/utils/schemaConversion/sanitizeJsonSchema.js +0 -56
  571. package/dist/utils/schemaConversion/sanitizeJsonSchema.js.map +0 -1
  572. package/dist/utils/schemaConversion/simplifyRelationshipFields.d.ts +0 -20
  573. package/dist/utils/schemaConversion/simplifyRelationshipFields.d.ts.map +0 -1
  574. package/dist/utils/schemaConversion/simplifyRelationshipFields.js +0 -53
  575. package/dist/utils/schemaConversion/simplifyRelationshipFields.js.map +0 -1
  576. package/dist/utils/schemaConversion/transformPointFields.d.ts +0 -3
  577. package/dist/utils/schemaConversion/transformPointFields.d.ts.map +0 -1
  578. package/dist/utils/schemaConversion/transformPointFields.js +0 -51
  579. package/dist/utils/schemaConversion/transformPointFields.js.map +0 -1
  580. package/src/collections/createApiKeysCollection.ts +0 -373
  581. package/src/defaults.ts +0 -3
  582. package/src/endpoints/mcp.ts +0 -91
  583. package/src/mcp/createRequest.ts +0 -13
  584. package/src/mcp/getMcpHandler.ts +0 -545
  585. package/src/mcp/helpers/config.ts +0 -213
  586. package/src/mcp/helpers/fields.ts +0 -154
  587. package/src/mcp/helpers/fileValidation.ts +0 -362
  588. package/src/mcp/registerTool.ts +0 -22
  589. package/src/mcp/tools/auth/auth.ts +0 -71
  590. package/src/mcp/tools/auth/forgotPassword.ts +0 -70
  591. package/src/mcp/tools/auth/login.ts +0 -72
  592. package/src/mcp/tools/auth/resetPassword.ts +0 -61
  593. package/src/mcp/tools/auth/unlock.ts +0 -64
  594. package/src/mcp/tools/auth/verify.ts +0 -57
  595. package/src/mcp/tools/collection/create.ts +0 -210
  596. package/src/mcp/tools/collection/delete.ts +0 -211
  597. package/src/mcp/tools/collection/find.ts +0 -224
  598. package/src/mcp/tools/collection/update.ts +0 -290
  599. package/src/mcp/tools/config/find.ts +0 -128
  600. package/src/mcp/tools/config/update.ts +0 -280
  601. package/src/mcp/tools/global/find.ts +0 -128
  602. package/src/mcp/tools/global/update.ts +0 -207
  603. package/src/mcp/tools/job/create.ts +0 -416
  604. package/src/mcp/tools/job/run.ts +0 -167
  605. package/src/mcp/tools/job/update.ts +0 -274
  606. package/src/mcp/tools/resource/create.ts +0 -211
  607. package/src/mcp/tools/resource/delete.ts +0 -218
  608. package/src/mcp/tools/resource/find.ts +0 -246
  609. package/src/mcp/tools/resource/update.ts +0 -383
  610. package/src/mcp/tools/schemas.ts +0 -520
  611. package/src/utils/adminEntitySettings.ts +0 -40
  612. package/src/utils/createApiKeyFields.ts +0 -72
  613. package/src/utils/getEnabledSlugs.ts +0 -42
  614. package/src/utils/schemaConversion/convertCollectionSchemaToZod.ts +0 -52
  615. package/src/utils/schemaConversion/sanitizeJsonSchema.ts +0 -62
  616. package/src/utils/schemaConversion/simplifyRelationshipFields.ts +0 -65
  617. package/src/utils/schemaConversion/transformPointFields.ts +0 -55
@@ -1,246 +0,0 @@
1
- import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'
2
- import type { PayloadRequest, SelectType, 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 findResourceTool = (
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
- limit: number = 10,
20
- page: number = 1,
21
- sort?: string,
22
- where?: string,
23
- select?: string,
24
- depth: number = 0,
25
- locale?: string,
26
- fallbackLocale?: string,
27
- draft?: boolean,
28
- ): Promise<{
29
- content: Array<{
30
- text: string
31
- type: 'text'
32
- }>
33
- }> => {
34
- const payload = req.payload
35
-
36
- if (verboseLogs) {
37
- payload.logger.info(
38
- `[payload-mcp] Reading resource from collection: ${collectionSlug}${id ? ` with ID: ${id}` : ''}, limit: ${limit}, page: ${page}${locale ? `, locale: ${locale}` : ''}`,
39
- )
40
- }
41
-
42
- try {
43
- // Parse where clause if provided
44
- let whereClause = {}
45
- if (where) {
46
- try {
47
- whereClause = JSON.parse(where)
48
- if (verboseLogs) {
49
- payload.logger.info(`[payload-mcp] Using where clause: ${where}`)
50
- }
51
- } catch (_parseError) {
52
- payload.logger.warn(`[payload-mcp] Invalid where clause JSON: ${where}`)
53
- const response = {
54
- content: [{ type: 'text' as const, text: 'Error: Invalid JSON in where clause' }],
55
- }
56
- return (collections?.[collectionSlug]?.overrideResponse?.(response, {}, req) ||
57
- response) as {
58
- content: Array<{
59
- text: string
60
- type: 'text'
61
- }>
62
- }
63
- }
64
- }
65
-
66
- // Parse select clause if provided
67
- let selectClause: SelectType | undefined
68
- if (select) {
69
- try {
70
- selectClause = JSON.parse(select) as SelectType
71
- } catch (_parseError) {
72
- payload.logger.warn(`[payload-mcp] Invalid select clause JSON: ${select}`)
73
- const response = {
74
- content: [{ type: 'text' as const, text: 'Error: Invalid JSON in select clause' }],
75
- }
76
- return (collections?.[collectionSlug]?.overrideResponse?.(response, {}, req) ||
77
- response) as {
78
- content: Array<{
79
- text: string
80
- type: 'text'
81
- }>
82
- }
83
- }
84
- }
85
-
86
- // If ID is provided, use findByID
87
- if (id) {
88
- try {
89
- const doc = await payload.findByID({
90
- id,
91
- collection: collectionSlug,
92
- depth,
93
- ...(selectClause && { select: selectClause }),
94
- overrideAccess: false,
95
- req,
96
- user,
97
- ...(locale && { locale }),
98
- ...(fallbackLocale && { fallbackLocale }),
99
- ...(draft !== undefined && { draft }),
100
- })
101
-
102
- if (verboseLogs) {
103
- payload.logger.info(`[payload-mcp] Found document with ID: ${id}`)
104
- }
105
-
106
- const response = {
107
- content: [
108
- {
109
- type: 'text' as const,
110
- text: `Resource from collection "${collectionSlug}":
111
- ${JSON.stringify(doc)}`,
112
- },
113
- ],
114
- }
115
-
116
- return (collections?.[collectionSlug]?.overrideResponse?.(response, doc, req) ||
117
- response) as {
118
- content: Array<{
119
- text: string
120
- type: 'text'
121
- }>
122
- }
123
- } catch (_findError) {
124
- payload.logger.warn(
125
- `[payload-mcp] Document not found with ID: ${id} in collection: ${collectionSlug}`,
126
- )
127
- const response = {
128
- content: [
129
- {
130
- type: 'text' as const,
131
- text: `Error: Document with ID "${id}" not found in collection "${collectionSlug}"`,
132
- },
133
- ],
134
- }
135
- return (collections?.[collectionSlug]?.overrideResponse?.(response, {}, req) ||
136
- response) as {
137
- content: Array<{
138
- text: string
139
- type: 'text'
140
- }>
141
- }
142
- }
143
- }
144
-
145
- // Otherwise, use find to get multiple documents
146
- const findOptions: Parameters<typeof payload.find>[0] = {
147
- collection: collectionSlug,
148
- depth,
149
- limit,
150
- overrideAccess: false,
151
- page,
152
- req,
153
- user,
154
- ...(selectClause && { select: selectClause }),
155
- ...(locale && { locale }),
156
- ...(fallbackLocale && { fallbackLocale }),
157
- ...(draft !== undefined && { draft }),
158
- }
159
-
160
- if (sort) {
161
- findOptions.sort = sort
162
- }
163
-
164
- if (Object.keys(whereClause).length > 0) {
165
- findOptions.where = whereClause
166
- }
167
-
168
- const result = await payload.find(findOptions)
169
-
170
- if (verboseLogs) {
171
- payload.logger.info(
172
- `[payload-mcp] Found ${result.docs.length} documents in collection: ${collectionSlug}`,
173
- )
174
- }
175
-
176
- let responseText = `Collection: "${collectionSlug}"
177
- Total: ${result.totalDocs} documents
178
- Page: ${result.page} of ${result.totalPages}
179
- `
180
-
181
- for (const doc of result.docs) {
182
- responseText += `\n\`\`\`json\n${JSON.stringify(doc)}\n\`\`\``
183
- }
184
-
185
- const response = {
186
- content: [
187
- {
188
- type: 'text' as const,
189
- text: responseText,
190
- },
191
- ],
192
- }
193
-
194
- return (collections?.[collectionSlug]?.overrideResponse?.(response, result, req) ||
195
- response) as {
196
- content: Array<{
197
- text: string
198
- type: 'text'
199
- }>
200
- }
201
- } catch (error) {
202
- const errorMessage = error instanceof Error ? error.message : 'Unknown error'
203
- payload.logger.error(
204
- `[payload-mcp] Error reading resources from collection ${collectionSlug}: ${errorMessage}`,
205
- )
206
- const response = {
207
- content: [
208
- {
209
- type: 'text' as const,
210
- text: `❌ **Error reading resources from collection "${collectionSlug}":** ${errorMessage}`,
211
- },
212
- ],
213
- }
214
- return (collections?.[collectionSlug]?.overrideResponse?.(response, {}, req) || response) as {
215
- content: Array<{
216
- text: string
217
- type: 'text'
218
- }>
219
- }
220
- }
221
- }
222
-
223
- if (collections?.[collectionSlug]?.enabled) {
224
- server.registerTool(
225
- `find${collectionSlug.charAt(0).toUpperCase() + toCamelCase(collectionSlug).slice(1)}`,
226
- {
227
- description: `${collections?.[collectionSlug]?.description || toolSchemas.findResources.description.trim()}`,
228
- inputSchema: toolSchemas.findResources.parameters.shape,
229
- },
230
- async ({ id, depth, draft, fallbackLocale, limit, locale, page, select, sort, where }) => {
231
- return await tool(
232
- id,
233
- limit,
234
- page,
235
- sort,
236
- where,
237
- select,
238
- depth,
239
- locale,
240
- fallbackLocale,
241
- draft,
242
- )
243
- },
244
- )
245
- }
246
- }
@@ -1,383 +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 updateResourceTool = (
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
- id?: number | string,
29
- where?: string,
30
- draft: boolean = false,
31
- depth: number = 0,
32
- overrideLock: boolean = true,
33
- filePath?: string,
34
- overwriteExistingFiles: boolean = false,
35
- locale?: string,
36
- fallbackLocale?: string,
37
- select?: string,
38
- ): Promise<{
39
- content: Array<{
40
- text: string
41
- type: 'text'
42
- }>
43
- }> => {
44
- const payload = req.payload
45
-
46
- if (verboseLogs) {
47
- payload.logger.info(
48
- `[payload-mcp] Updating resource in collection: ${collectionSlug}${id ? ` with ID: ${id}` : ' with where clause'}, draft: ${draft}${locale ? `, locale: ${locale}` : ''}`,
49
- )
50
- }
51
-
52
- try {
53
- // Parse the data JSON
54
- let parsedData: Record<string, unknown>
55
- try {
56
- parsedData = JSON.parse(data)
57
-
58
- // Transform point fields from object format to tuple array
59
- parsedData = transformPointDataToPayload(parsedData)
60
-
61
- const virtualFieldNames = getCollectionVirtualFieldNames(payload.config, collectionSlug)
62
- parsedData = stripVirtualFields(parsedData, virtualFieldNames)
63
-
64
- if (verboseLogs) {
65
- payload.logger.info(
66
- `[payload-mcp] Parsed data for ${collectionSlug}: ${JSON.stringify(parsedData)}`,
67
- )
68
- }
69
- } catch (_parseError) {
70
- payload.logger.error(`[payload-mcp] Invalid JSON data provided: ${data}`)
71
- const response = {
72
- content: [{ type: 'text' as const, text: 'Error: Invalid JSON data provided' }],
73
- }
74
- return (collections?.[collectionSlug]?.overrideResponse?.(response, {}, req) ||
75
- response) as {
76
- content: Array<{
77
- text: string
78
- type: 'text'
79
- }>
80
- }
81
- }
82
-
83
- // Validate that either id or where is provided
84
- if (!id && !where) {
85
- payload.logger.error('[payload-mcp] Either id or where clause must be provided')
86
- const response = {
87
- content: [
88
- { type: 'text' as const, text: 'Error: Either id or where clause must be provided' },
89
- ],
90
- }
91
- return (collections?.[collectionSlug]?.overrideResponse?.(response, {}, req) ||
92
- response) as {
93
- content: Array<{
94
- text: string
95
- type: 'text'
96
- }>
97
- }
98
- }
99
-
100
- // Parse where clause if provided
101
- let whereClause = {}
102
- if (where) {
103
- try {
104
- whereClause = JSON.parse(where)
105
- if (verboseLogs) {
106
- payload.logger.info(`[payload-mcp] Using where clause: ${where}`)
107
- }
108
- } catch (_parseError) {
109
- payload.logger.error(`[payload-mcp] Invalid where clause JSON: ${where}`)
110
- const response = {
111
- content: [{ type: 'text' as const, text: 'Error: Invalid JSON in where clause' }],
112
- }
113
- return (collections?.[collectionSlug]?.overrideResponse?.(response, {}, req) ||
114
- response) as {
115
- content: Array<{
116
- text: string
117
- type: 'text'
118
- }>
119
- }
120
- }
121
- }
122
-
123
- let selectClause: SelectType | undefined
124
- if (select) {
125
- try {
126
- selectClause = JSON.parse(select) as SelectType
127
- } catch (_parseError) {
128
- payload.logger.warn(`[payload-mcp] Invalid select clause JSON: ${select}`)
129
- const response = {
130
- content: [{ type: 'text' as const, text: 'Error: Invalid JSON in select clause' }],
131
- }
132
- return (collections?.[collectionSlug]?.overrideResponse?.(response, {}, req) ||
133
- response) as {
134
- content: Array<{
135
- text: string
136
- type: 'text'
137
- }>
138
- }
139
- }
140
- }
141
-
142
- // Update by ID or where clause
143
- if (id) {
144
- // Single document update
145
- const updateOptions = {
146
- id,
147
- collection: collectionSlug,
148
- data: parsedData,
149
- depth,
150
- draft,
151
- overrideAccess: false,
152
- overrideLock,
153
- req,
154
- user,
155
- ...(filePath && { filePath }),
156
- ...(overwriteExistingFiles && { overwriteExistingFiles }),
157
- ...(locale && { locale }),
158
- ...(fallbackLocale && { fallbackLocale }),
159
- ...(selectClause && { select: selectClause }),
160
- }
161
-
162
- if (verboseLogs) {
163
- payload.logger.info(`[payload-mcp] Updating single document with ID: ${id}`)
164
- }
165
- const result = await payload.update({
166
- ...updateOptions,
167
- data: parsedData,
168
- } as any)
169
-
170
- if (verboseLogs) {
171
- payload.logger.info(`[payload-mcp] Successfully updated document with ID: ${id}`)
172
- }
173
-
174
- const response = {
175
- content: [
176
- {
177
- type: 'text' as const,
178
- text: `Document updated successfully in collection "${collectionSlug}"!
179
- Updated document:
180
- \`\`\`json
181
- ${JSON.stringify(result)}
182
- \`\`\``,
183
- },
184
- ],
185
- }
186
-
187
- return (collections?.[collectionSlug]?.overrideResponse?.(response, result, req) ||
188
- response) as {
189
- content: Array<{
190
- text: string
191
- type: 'text'
192
- }>
193
- }
194
- } else {
195
- // Multiple documents update
196
- const updateOptions = {
197
- collection: collectionSlug,
198
- data: parsedData,
199
- depth,
200
- draft,
201
- overrideAccess: false,
202
- overrideLock,
203
- req,
204
- user,
205
- where: whereClause,
206
- ...(filePath && { filePath }),
207
- ...(overwriteExistingFiles && { overwriteExistingFiles }),
208
- ...(locale && { locale }),
209
- ...(fallbackLocale && { fallbackLocale }),
210
- ...(selectClause && { select: selectClause }),
211
- }
212
-
213
- if (verboseLogs) {
214
- payload.logger.info(`[payload-mcp] Updating multiple documents with where clause`)
215
- }
216
- const result = await payload.update({
217
- ...updateOptions,
218
- data: parsedData,
219
- } as any)
220
-
221
- const bulkResult = result as { docs?: unknown[]; errors?: unknown[] }
222
- const docs = bulkResult.docs || []
223
- const errors = bulkResult.errors || []
224
-
225
- if (verboseLogs) {
226
- payload.logger.info(
227
- `[payload-mcp] Successfully updated ${docs.length} documents, ${errors.length} errors`,
228
- )
229
- }
230
-
231
- let responseText = `Multiple documents updated in collection "${collectionSlug}"!
232
- Updated: ${docs.length} documents
233
- Errors: ${errors.length}
234
- ---`
235
-
236
- if (docs.length > 0) {
237
- responseText += `\n\nUpdated documents:
238
- \`\`\`json
239
- ${JSON.stringify(docs)}
240
- \`\`\``
241
- }
242
-
243
- if (errors.length > 0) {
244
- responseText += `\n\nErrors:
245
- \`\`\`json
246
- ${JSON.stringify(errors)}
247
- \`\`\``
248
- }
249
-
250
- const response = {
251
- content: [
252
- {
253
- type: 'text' as const,
254
- text: responseText,
255
- },
256
- ],
257
- }
258
-
259
- return (collections?.[collectionSlug]?.overrideResponse?.(
260
- response,
261
- { docs, errors },
262
- req,
263
- ) || response) as {
264
- content: Array<{
265
- text: string
266
- type: 'text'
267
- }>
268
- }
269
- }
270
- } catch (error) {
271
- const errorMessage = error instanceof Error ? error.message : 'Unknown error'
272
- payload.logger.error(
273
- `[payload-mcp] Error updating resource in ${collectionSlug}: ${errorMessage}`,
274
- )
275
-
276
- const response = {
277
- content: [
278
- {
279
- type: 'text' as const,
280
- text: `Error updating resource in collection "${collectionSlug}": ${errorMessage}`,
281
- },
282
- ],
283
- }
284
-
285
- return (collections?.[collectionSlug]?.overrideResponse?.(response, {}, req) || response) as {
286
- content: Array<{
287
- text: string
288
- type: 'text'
289
- }>
290
- }
291
- }
292
- }
293
-
294
- if (collections?.[collectionSlug]?.enabled) {
295
- const convertedFields = convertCollectionSchemaToZod(schema)
296
-
297
- // Create a new schema that combines the converted fields with update-specific parameters
298
- // Use .partial() to make all fields optional for partial updates
299
- const updateResourceSchema = z.object({
300
- ...convertedFields.partial().shape,
301
- id: z.union([z.string(), z.number()]).optional().describe('The ID of the document to update'),
302
- depth: z
303
- .number()
304
- .optional()
305
- .default(0)
306
- .describe('How many levels deep to populate relationships'),
307
- draft: z
308
- .boolean()
309
- .optional()
310
- .default(false)
311
- .describe('Whether to update the document as a draft'),
312
- fallbackLocale: z
313
- .string()
314
- .optional()
315
- .describe('Optional: fallback locale code to use when requested locale is not available'),
316
- filePath: z.string().optional().describe('File path for file uploads'),
317
- locale: z
318
- .string()
319
- .optional()
320
- .describe(
321
- 'Optional: locale code to update the document in (e.g., "en", "es"). Defaults to the default locale',
322
- ),
323
- overrideLock: z
324
- .boolean()
325
- .optional()
326
- .default(true)
327
- .describe('Whether to override document locks'),
328
- overwriteExistingFiles: z
329
- .boolean()
330
- .optional()
331
- .default(false)
332
- .describe('Whether to overwrite existing files'),
333
- select: z
334
- .string()
335
- .optional()
336
- .describe(
337
- 'Optional: define exactly which fields you\'d like to return in the response (JSON), e.g., \'{"title": "My Post"}\'',
338
- ),
339
- where: z
340
- .string()
341
- .optional()
342
- .describe('JSON string for where clause to update multiple documents'),
343
- })
344
-
345
- server.registerTool(
346
- `update${collectionSlug.charAt(0).toUpperCase() + toCamelCase(collectionSlug).slice(1)}`,
347
- {
348
- description: `${collections?.[collectionSlug]?.description || toolSchemas.updateResource.description.trim()}`,
349
- inputSchema: updateResourceSchema.shape,
350
- },
351
- async (params: Record<string, unknown>) => {
352
- const {
353
- id,
354
- depth,
355
- draft,
356
- fallbackLocale,
357
- filePath,
358
- locale,
359
- overrideLock,
360
- overwriteExistingFiles,
361
- select,
362
- where,
363
- ...fieldData
364
- } = params
365
- // Convert field data back to JSON string format expected by the tool
366
- const data = JSON.stringify(fieldData)
367
- return await tool(
368
- data,
369
- id as number | string | undefined,
370
- where as string | undefined,
371
- draft as boolean,
372
- depth as number,
373
- overrideLock as boolean,
374
- filePath as string | undefined,
375
- overwriteExistingFiles as boolean,
376
- locale as string | undefined,
377
- fallbackLocale as string | undefined,
378
- select as string | undefined,
379
- )
380
- },
381
- )
382
- }
383
- }