@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,224 +0,0 @@
1
- import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'
2
- import type { PayloadRequest } from 'payload'
3
-
4
- import { readdirSync, readFileSync, statSync } from 'fs'
5
- import { extname, join } from 'path'
6
-
7
- import { toolSchemas } from '../schemas.js'
8
-
9
- export const readCollections = (
10
- req: PayloadRequest,
11
- verboseLogs: boolean,
12
- collectionsDirPath: string,
13
- collectionName?: string,
14
- includeContent: boolean = false,
15
- includeCount: boolean = false,
16
- ) => {
17
- const payload = req.payload
18
-
19
- if (verboseLogs) {
20
- payload.logger.info(
21
- `[payload-mcp] Reading collections${collectionName ? ` for: ${collectionName}` : ''}, includeContent: ${includeContent}, includeCount: ${includeCount}`,
22
- )
23
- }
24
-
25
- try {
26
- // Read specific Collection (optional)
27
- if (collectionName) {
28
- const fileName = `${collectionName.charAt(0).toUpperCase() + collectionName.slice(1)}.ts`
29
- const filePath = join(collectionsDirPath, fileName)
30
-
31
- if (!filePath.startsWith(collectionsDirPath)) {
32
- payload.logger.error(`[payload-mcp] Invalid collection name attempted: ${collectionName}`)
33
- return {
34
- content: [{ type: 'text' as const, text: 'Error: Invalid collection name' }],
35
- }
36
- }
37
-
38
- try {
39
- const content = readFileSync(filePath, 'utf8')
40
- if (verboseLogs) {
41
- payload.logger.info(`[payload-mcp] Successfully read collection: ${collectionName}`)
42
- }
43
-
44
- return {
45
- content: [
46
- {
47
- type: 'text' as const,
48
- text: `Collection: ${collectionName}
49
- File: ${fileName}
50
- ---
51
- ${content}`,
52
- },
53
- ],
54
- }
55
- } catch (_error) {
56
- payload.logger.warn(`[payload-mcp] Collection not found: ${collectionName}`)
57
- return {
58
- content: [
59
- {
60
- type: 'text' as const,
61
- text: `Error: Collection '${collectionName}' not found`,
62
- },
63
- ],
64
- }
65
- }
66
- }
67
-
68
- // Read all Collections
69
- const files = readdirSync(collectionsDirPath)
70
- .filter((file) => extname(file) === '.ts')
71
- .sort()
72
-
73
- if (verboseLogs) {
74
- payload.logger.info(`[payload-mcp] Found ${files.length} collection files in directory`)
75
- }
76
-
77
- if (files.length === 0) {
78
- payload.logger.warn('[payload-mcp] No collection files found in src/collections directory')
79
- return {
80
- content: [
81
- {
82
- type: 'text' as const,
83
- text: 'No collection files found in src/collections directory',
84
- },
85
- ],
86
- }
87
- }
88
-
89
- const results = []
90
-
91
- // Build complete table as a single markdown string
92
- let tableContent = `Found ${files.length} collection file(s):\n\n`
93
-
94
- // Build table header
95
- let tableHeader = '| Collection | File | Size | Modified'
96
- let tableSeparator = '|------------|------|------|----------'
97
-
98
- if (includeCount) {
99
- tableHeader += ' | Documents'
100
- tableSeparator += ' |----------'
101
- }
102
- tableHeader += ' |'
103
- tableSeparator += ' |'
104
-
105
- tableContent += tableHeader + '\n'
106
- tableContent += tableSeparator + '\n'
107
-
108
- for (const file of files) {
109
- const filePath = join(collectionsDirPath, file)
110
- const stats = statSync(filePath)
111
- const fileSize = stats.size
112
- const lastModified = stats.mtime
113
-
114
- const collectionName = file.replace('.ts', '')
115
-
116
- // Build table row
117
- let tableRow = `| **${collectionName}** | ${file} | ${fileSize.toLocaleString()} bytes | ${lastModified.toISOString()}`
118
-
119
- // Add document count if requested
120
- if (includeCount) {
121
- try {
122
- // For now, we'll skip document counting since we don't have access to payload instance
123
- tableRow += ' | -'
124
- } catch (error) {
125
- tableRow += ` | Error: ${(error as Error).message}`
126
- }
127
- }
128
- tableRow += ' |'
129
-
130
- tableContent += tableRow + '\n'
131
-
132
- if (includeContent) {
133
- try {
134
- const content = readFileSync(filePath, 'utf8')
135
- tableContent += `\n**${collectionName} Content:**\n\`\`\`typescript\n${content}\n\`\`\`\n\n`
136
- } catch (error) {
137
- tableContent += `\nError reading content: ${(error as Error).message}\n\n`
138
- }
139
- }
140
- }
141
-
142
- results.push({
143
- type: 'text' as const,
144
- text: tableContent,
145
- })
146
-
147
- return {
148
- content: results,
149
- }
150
- } catch (error) {
151
- const errorMessage = (error as Error).message
152
- payload.logger.error(`[payload-mcp] Error reading collections: ${errorMessage}`)
153
- return {
154
- content: [
155
- {
156
- type: 'text' as const,
157
- text: `❌ **Error reading collections**: ${errorMessage}`,
158
- },
159
- ],
160
- }
161
- }
162
- }
163
-
164
- // MCP Server tool registration
165
- export const findCollectionTool = (
166
- server: McpServer,
167
- req: PayloadRequest,
168
- verboseLogs: boolean,
169
- collectionsDirPath: string,
170
- ) => {
171
- const tool = (
172
- collectionName?: string,
173
- includeContent: boolean = false,
174
- includeCount: boolean = false,
175
- ) => {
176
- const payload = req.payload
177
-
178
- if (verboseLogs) {
179
- payload.logger.info(
180
- `[payload-mcp] Finding collections${collectionName ? ` for: ${collectionName}` : ''}, includeContent: ${includeContent}, includeCount: ${includeCount}`,
181
- )
182
- }
183
-
184
- try {
185
- const result = readCollections(
186
- req,
187
- verboseLogs,
188
- collectionsDirPath,
189
- collectionName,
190
- includeContent,
191
- includeCount,
192
- )
193
-
194
- if (verboseLogs) {
195
- payload.logger.info(`[payload-mcp] Collection search completed`)
196
- }
197
-
198
- return result
199
- } catch (error) {
200
- const errorMessage = error instanceof Error ? error.message : 'Unknown error'
201
- payload.logger.error(`[payload-mcp] Error finding collections: ${errorMessage}`)
202
-
203
- return {
204
- content: [
205
- {
206
- type: 'text' as const,
207
- text: `Error finding collections: ${errorMessage}`,
208
- },
209
- ],
210
- }
211
- }
212
- }
213
-
214
- server.registerTool(
215
- 'findCollections',
216
- {
217
- description: toolSchemas.findCollections.description,
218
- inputSchema: toolSchemas.findCollections.parameters.shape,
219
- },
220
- ({ collectionName, includeContent, includeCount }) => {
221
- return tool(collectionName, includeContent, includeCount)
222
- },
223
- )
224
- }
@@ -1,290 +0,0 @@
1
- import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'
2
- import type { PayloadRequest } from 'payload'
3
-
4
- import { readFileSync, writeFileSync } from 'fs'
5
- import { join } from 'path'
6
-
7
- import {
8
- addFieldsToCollection,
9
- modifyFieldsInCollection,
10
- removeFieldsFromCollection,
11
- } from '../../helpers/fields.js'
12
- import { validateCollectionFile } from '../../helpers/fileValidation.js'
13
- import { toolSchemas } from '../schemas.js'
14
-
15
- export const updateCollection = async (
16
- req: PayloadRequest,
17
- verboseLogs: boolean,
18
- collectionsDirPath: string,
19
- configFilePath: string,
20
- collectionName: string,
21
- updateType: string,
22
- newFields?: any[],
23
- fieldNamesToRemove?: string[],
24
- fieldModifications?: any[],
25
- configUpdates?: any,
26
- newContent?: string,
27
- ) => {
28
- const payload = req.payload
29
- if (verboseLogs) {
30
- payload.logger.info(
31
- `[payload-mcp] Updating collection: ${collectionName}, updateType: ${updateType}`,
32
- )
33
- }
34
-
35
- const capitalizedName = collectionName.charAt(0).toUpperCase() + collectionName.slice(1)
36
- const fileName = `${capitalizedName}.ts`
37
- const filePath = join(collectionsDirPath, fileName)
38
-
39
- // Security check: ensure we're working with the collections directory
40
- if (!filePath.startsWith(collectionsDirPath)) {
41
- payload.logger.error(`[payload-mcp] Invalid collection path attempted: ${filePath}`)
42
- return {
43
- content: [
44
- {
45
- type: 'text' as const,
46
- text: '❌ **Error**: Invalid collection path',
47
- },
48
- ],
49
- }
50
- }
51
-
52
- try {
53
- // Check if collection file exists
54
- let currentContent: string
55
- try {
56
- currentContent = readFileSync(filePath, 'utf8')
57
- } catch (_ignore) {
58
- return {
59
- content: [
60
- {
61
- type: 'text' as const,
62
- text: `❌ **Error**: Collection file not found: ${fileName}`,
63
- },
64
- ],
65
- }
66
- }
67
-
68
- let updatedContent: string
69
- let updateSummary: string[] = []
70
-
71
- switch (updateType) {
72
- case 'add_field':
73
- if (!newFields || newFields.length === 0) {
74
- return {
75
- content: [
76
- {
77
- type: 'text' as const,
78
- text: '❌ **Error**: No fields provided for add_field update type',
79
- },
80
- ],
81
- }
82
- }
83
- updatedContent = addFieldsToCollection(currentContent, newFields)
84
- updateSummary = newFields.map((field: any) => `Added field: ${field.name} (${field.type})`)
85
- break
86
-
87
- case 'modify_field':
88
- if (!fieldModifications || fieldModifications.length === 0) {
89
- return {
90
- content: [
91
- {
92
- type: 'text' as const,
93
- text: '❌ **Error**: No field modifications provided for modify_field update type',
94
- },
95
- ],
96
- }
97
- }
98
- updatedContent = modifyFieldsInCollection(currentContent, fieldModifications)
99
- updateSummary = fieldModifications.map((mod: any) => `Modified field: ${mod.fieldName}`)
100
- break
101
-
102
- case 'remove_field':
103
- if (!fieldNamesToRemove || fieldNamesToRemove.length === 0) {
104
- return {
105
- content: [
106
- {
107
- type: 'text' as const,
108
- text: '❌ **Error**: No field names provided for remove_field update type',
109
- },
110
- ],
111
- }
112
- }
113
- updatedContent = removeFieldsFromCollection(currentContent, fieldNamesToRemove)
114
- updateSummary = fieldNamesToRemove.map((fieldName: string) => `Removed field: ${fieldName}`)
115
- break
116
-
117
- case 'replace_content':
118
- if (!newContent) {
119
- return {
120
- content: [
121
- {
122
- type: 'text' as const,
123
- text: '❌ **Error**: No new content provided for replace_content update type',
124
- },
125
- ],
126
- }
127
- }
128
- updatedContent = newContent
129
- updateSummary = ['Replaced entire collection content']
130
- break
131
-
132
- case 'update_config':
133
- if (!configUpdates) {
134
- return {
135
- content: [
136
- {
137
- type: 'text' as const,
138
- text: '❌ **Error**: No config updates provided for update_config update type',
139
- },
140
- ],
141
- }
142
- }
143
- // For now, we'll use a simple approach since the config helper might not have this functionality
144
- updatedContent = currentContent
145
- updateSummary = Object.keys(configUpdates).map((key) => `Updated config: ${key}`)
146
- break
147
-
148
- default:
149
- return {
150
- content: [
151
- {
152
- type: 'text' as const,
153
- text: `❌ **Error**: Unknown update type: ${updateType}`,
154
- },
155
- ],
156
- }
157
- }
158
-
159
- // Write the updated content back to the file
160
- writeFileSync(filePath, updatedContent, 'utf8')
161
- if (verboseLogs) {
162
- payload.logger.info(`[payload-mcp] Successfully updated collection file: ${filePath}`)
163
- }
164
-
165
- // Validate the updated file
166
- const validationResult = await validateCollectionFile(fileName)
167
- if (validationResult.error) {
168
- return {
169
- content: [
170
- {
171
- type: 'text' as const,
172
- text: `❌ **Error**: Updated collection has validation issues:\n\n${validationResult.error}`,
173
- },
174
- ],
175
- }
176
- }
177
-
178
- return {
179
- content: [
180
- {
181
- type: 'text' as const,
182
- text: `✅ **Collection updated successfully!**
183
-
184
- **File**: \`${fileName}\`
185
- **Update Type**: ${updateType}
186
-
187
- **Changes Made**:
188
- ${updateSummary.map((summary) => `- ${summary}`).join('\n')}
189
-
190
- **Updated Collection Code:**
191
- \`\`\`typescript
192
- ${updatedContent}
193
- \`\`\``,
194
- },
195
- ],
196
- }
197
- } catch (error) {
198
- const errorMessage = (error as Error).message
199
- payload.logger.error(`[payload-mcp] Error updating collection: ${errorMessage}`)
200
- return {
201
- content: [
202
- {
203
- type: 'text' as const,
204
- text: `❌ **Error updating collection**: ${errorMessage}`,
205
- },
206
- ],
207
- }
208
- }
209
- }
210
-
211
- export const updateCollectionTool = (
212
- server: McpServer,
213
- req: PayloadRequest,
214
- verboseLogs: boolean,
215
- collectionsDirPath: string,
216
- configFilePath: string,
217
- ) => {
218
- const tool = async ({
219
- collectionName,
220
- configUpdates,
221
- fieldModifications,
222
- fieldNamesToRemove,
223
- newContent,
224
- newFields,
225
- updateType,
226
- }: {
227
- collectionName: string
228
- configUpdates?: any
229
- fieldModifications?: any[]
230
- fieldNamesToRemove?: string[]
231
- newContent?: string
232
- newFields?: any[]
233
- updateType: string
234
- }) => {
235
- const payload = req.payload
236
-
237
- if (verboseLogs) {
238
- payload.logger.info(
239
- `[payload-mcp] Updating collection: ${collectionName}, updateType: ${updateType}`,
240
- )
241
- }
242
-
243
- try {
244
- const result = await updateCollection(
245
- req,
246
- verboseLogs,
247
- collectionsDirPath,
248
- configFilePath,
249
- collectionName,
250
- updateType,
251
- newFields,
252
- fieldNamesToRemove,
253
- fieldModifications,
254
- configUpdates,
255
- newContent,
256
- )
257
-
258
- if (verboseLogs) {
259
- payload.logger.info(`[payload-mcp] Collection update completed for: ${collectionName}`)
260
- }
261
-
262
- return result
263
- } catch (error) {
264
- const errorMessage = error instanceof Error ? error.message : 'Unknown error'
265
- payload.logger.error(
266
- `[payload-mcp] Error updating collection ${collectionName}: ${errorMessage}`,
267
- )
268
-
269
- return {
270
- content: [
271
- {
272
- type: 'text' as const,
273
- text: `Error updating collection "${collectionName}": ${errorMessage}`,
274
- },
275
- ],
276
- }
277
- }
278
- }
279
-
280
- server.registerTool(
281
- 'updateCollection',
282
- {
283
- description: toolSchemas.updateCollection.description,
284
- inputSchema: toolSchemas.updateCollection.parameters.shape,
285
- },
286
- async (args) => {
287
- return await tool(args)
288
- },
289
- )
290
- }
@@ -1,128 +0,0 @@
1
- import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'
2
- import type { PayloadRequest } from 'payload'
3
-
4
- import { readFileSync, statSync } from 'fs'
5
-
6
- import { toolSchemas } from '../schemas.js'
7
-
8
- export const readConfigFile = (
9
- req: PayloadRequest,
10
- verboseLogs: boolean,
11
- configFilePath: string,
12
- includeMetadata: boolean = false,
13
- ) => {
14
- const payload = req.payload
15
- if (verboseLogs) {
16
- payload.logger.info(`[payload-mcp] Reading config file, includeMetadata: ${includeMetadata}`)
17
- }
18
-
19
- try {
20
- // Security check: ensure we're working with the specified config file
21
- if (!configFilePath.startsWith(process.cwd()) && !configFilePath.startsWith('/')) {
22
- payload.logger.error(`[payload-mcp] Invalid config path attempted: ${configFilePath}`)
23
- return {
24
- content: [
25
- {
26
- type: 'text' as const,
27
- text: '❌ **Error**: Invalid config path',
28
- },
29
- ],
30
- }
31
- }
32
-
33
- const content = readFileSync(configFilePath, 'utf8')
34
- const stats = statSync(configFilePath)
35
-
36
- if (verboseLogs) {
37
- payload.logger.info(`[payload-mcp] Successfully read config file. Size: ${stats.size} bytes`)
38
- }
39
-
40
- let responseText = `# Payload Configuration
41
-
42
- **File**: \`${configFilePath}\``
43
-
44
- if (includeMetadata) {
45
- responseText += `
46
- **Size**: ${stats.size.toLocaleString()} bytes
47
- **Modified**: ${stats.mtime.toISOString()}
48
- **Created**: ${stats.birthtime.toISOString()}`
49
- }
50
-
51
- responseText += `
52
- ---
53
-
54
- **Configuration Content:**
55
- \`\`\`typescript
56
- ${content}
57
- \`\`\``
58
-
59
- return {
60
- content: [
61
- {
62
- type: 'text' as const,
63
- text: responseText,
64
- },
65
- ],
66
- }
67
- } catch (error) {
68
- const errorMessage = (error as Error).message
69
- payload.logger.error(`[payload-mcp] Error reading config file: ${errorMessage}`)
70
- return {
71
- content: [
72
- {
73
- type: 'text' as const,
74
- text: `❌ **Error reading config file**: ${errorMessage}`,
75
- },
76
- ],
77
- }
78
- }
79
- }
80
-
81
- // MCP Server tool registration
82
- export const findConfigTool = (
83
- server: McpServer,
84
- req: PayloadRequest,
85
- verboseLogs: boolean,
86
- configFilePath: string,
87
- ) => {
88
- const tool = (includeMetadata: boolean = false) => {
89
- const payload = req.payload
90
-
91
- if (verboseLogs) {
92
- payload.logger.info(`[payload-mcp] Finding config, includeMetadata: ${includeMetadata}`)
93
- }
94
-
95
- try {
96
- const result = readConfigFile(req, verboseLogs, configFilePath, includeMetadata)
97
-
98
- if (verboseLogs) {
99
- payload.logger.info(`[payload-mcp] Config search completed`)
100
- }
101
-
102
- return result
103
- } catch (error) {
104
- const errorMessage = error instanceof Error ? error.message : 'Unknown error'
105
- payload.logger.error(`[payload-mcp] Error finding config: ${errorMessage}`)
106
-
107
- return {
108
- content: [
109
- {
110
- type: 'text' as const,
111
- text: `Error finding config: ${errorMessage}`,
112
- },
113
- ],
114
- }
115
- }
116
- }
117
-
118
- server.registerTool(
119
- 'findConfig',
120
- {
121
- description: toolSchemas.findConfig.description,
122
- inputSchema: toolSchemas.findConfig.parameters.shape,
123
- },
124
- ({ includeMetadata }) => {
125
- return tool(includeMetadata)
126
- },
127
- )
128
- }