@payloadcms/plugin-mcp 4.0.0-canary.3 → 4.0.0-internal.17c142b

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 (418) hide show
  1. package/dist/@types/assets.d.js +2 -0
  2. package/dist/@types/assets.d.js.map +1 -0
  3. package/dist/defaultAccess.d.ts +3 -0
  4. package/dist/defaultAccess.d.ts.map +1 -0
  5. package/dist/defaultAccess.js +3 -0
  6. package/dist/defaultAccess.js.map +1 -0
  7. package/dist/endpoint/access.d.ts +17 -5
  8. package/dist/endpoint/access.d.ts.map +1 -1
  9. package/dist/endpoint/access.js +81 -103
  10. package/dist/endpoint/access.js.map +1 -1
  11. package/dist/endpoint/index.d.ts.map +1 -1
  12. package/dist/endpoint/index.js +11 -0
  13. package/dist/endpoint/index.js.map +1 -1
  14. package/dist/exports/client.d.ts +1 -4
  15. package/dist/exports/client.d.ts.map +1 -1
  16. package/dist/exports/client.js +1 -4
  17. package/dist/exports/client.js.map +1 -1
  18. package/dist/exports/internal.d.ts +2 -0
  19. package/dist/exports/internal.d.ts.map +1 -0
  20. package/dist/exports/internal.js +3 -0
  21. package/dist/exports/internal.js.map +1 -0
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +1 -54
  24. package/dist/index.js.map +1 -1
  25. package/dist/mcp/buildMcpServer.d.ts.map +1 -1
  26. package/dist/mcp/buildMcpServer.js.map +1 -1
  27. package/dist/mcp/builtin/collections/countTool.d.ts +2 -0
  28. package/dist/mcp/builtin/collections/countTool.d.ts.map +1 -0
  29. package/dist/mcp/builtin/collections/countTool.js +69 -0
  30. package/dist/mcp/builtin/collections/countTool.js.map +1 -0
  31. package/dist/mcp/builtin/collections/countVersionsTool.d.ts +2 -0
  32. package/dist/mcp/builtin/collections/countVersionsTool.d.ts.map +1 -0
  33. package/dist/mcp/builtin/collections/countVersionsTool.js +65 -0
  34. package/dist/mcp/builtin/collections/countVersionsTool.js.map +1 -0
  35. package/dist/mcp/builtin/collections/createTool.d.ts.map +1 -1
  36. package/dist/mcp/builtin/collections/createTool.js +2 -0
  37. package/dist/mcp/builtin/collections/createTool.js.map +1 -1
  38. package/dist/mcp/builtin/collections/deleteTool.d.ts.map +1 -1
  39. package/dist/mcp/builtin/collections/deleteTool.js +2 -0
  40. package/dist/mcp/builtin/collections/deleteTool.js.map +1 -1
  41. package/dist/mcp/builtin/collections/duplicateTool.d.ts +2 -0
  42. package/dist/mcp/builtin/collections/duplicateTool.d.ts.map +1 -0
  43. package/dist/mcp/builtin/collections/duplicateTool.js +97 -0
  44. package/dist/mcp/builtin/collections/duplicateTool.js.map +1 -0
  45. package/dist/mcp/builtin/collections/findDistinctTool.d.ts +2 -0
  46. package/dist/mcp/builtin/collections/findDistinctTool.d.ts.map +1 -0
  47. package/dist/mcp/builtin/collections/findDistinctTool.js +93 -0
  48. package/dist/mcp/builtin/collections/findDistinctTool.js.map +1 -0
  49. package/dist/mcp/builtin/collections/findTool.d.ts.map +1 -1
  50. package/dist/mcp/builtin/collections/findTool.js +2 -0
  51. package/dist/mcp/builtin/collections/findTool.js.map +1 -1
  52. package/dist/mcp/builtin/collections/findVersionByIDTool.d.ts +2 -0
  53. package/dist/mcp/builtin/collections/findVersionByIDTool.d.ts.map +1 -0
  54. package/dist/mcp/builtin/collections/findVersionByIDTool.js +84 -0
  55. package/dist/mcp/builtin/collections/findVersionByIDTool.js.map +1 -0
  56. package/dist/mcp/builtin/collections/findVersionsTool.d.ts +2 -0
  57. package/dist/mcp/builtin/collections/findVersionsTool.d.ts.map +1 -0
  58. package/dist/mcp/builtin/collections/findVersionsTool.js +99 -0
  59. package/dist/mcp/builtin/collections/findVersionsTool.js.map +1 -0
  60. package/dist/mcp/builtin/collections/formatCollectionError.d.ts +1 -1
  61. package/dist/mcp/builtin/collections/formatCollectionError.d.ts.map +1 -1
  62. package/dist/mcp/builtin/collections/formatCollectionError.js.map +1 -1
  63. package/dist/mcp/builtin/collections/getCollectionSchemaTool.d.ts.map +1 -1
  64. package/dist/mcp/builtin/collections/getCollectionSchemaTool.js +5 -0
  65. package/dist/mcp/builtin/collections/getCollectionSchemaTool.js.map +1 -1
  66. package/dist/mcp/builtin/collections/restoreVersionTool.d.ts +2 -0
  67. package/dist/mcp/builtin/collections/restoreVersionTool.d.ts.map +1 -0
  68. package/dist/mcp/builtin/collections/restoreVersionTool.js +82 -0
  69. package/dist/mcp/builtin/collections/restoreVersionTool.js.map +1 -0
  70. package/dist/mcp/builtin/collections/updateTool.d.ts.map +1 -1
  71. package/dist/mcp/builtin/collections/updateTool.js +2 -0
  72. package/dist/mcp/builtin/collections/updateTool.js.map +1 -1
  73. package/dist/mcp/builtin/getConfigInfoTool.d.ts.map +1 -1
  74. package/dist/mcp/builtin/getConfigInfoTool.js +20 -5
  75. package/dist/mcp/builtin/getConfigInfoTool.js.map +1 -1
  76. package/dist/mcp/builtin/globals/countVersionsTool.d.ts +2 -0
  77. package/dist/mcp/builtin/globals/countVersionsTool.d.ts.map +1 -0
  78. package/dist/mcp/builtin/globals/countVersionsTool.js +65 -0
  79. package/dist/mcp/builtin/globals/countVersionsTool.js.map +1 -0
  80. package/dist/mcp/builtin/globals/findTool.d.ts.map +1 -1
  81. package/dist/mcp/builtin/globals/findTool.js +2 -0
  82. package/dist/mcp/builtin/globals/findTool.js.map +1 -1
  83. package/dist/mcp/builtin/globals/findVersionByIDTool.d.ts +2 -0
  84. package/dist/mcp/builtin/globals/findVersionByIDTool.d.ts.map +1 -0
  85. package/dist/mcp/builtin/globals/findVersionByIDTool.js +80 -0
  86. package/dist/mcp/builtin/globals/findVersionByIDTool.js.map +1 -0
  87. package/dist/mcp/builtin/globals/findVersionsTool.d.ts +2 -0
  88. package/dist/mcp/builtin/globals/findVersionsTool.d.ts.map +1 -0
  89. package/dist/mcp/builtin/globals/findVersionsTool.js +95 -0
  90. package/dist/mcp/builtin/globals/findVersionsTool.js.map +1 -0
  91. package/dist/mcp/builtin/globals/getGlobalSchemaTool.d.ts.map +1 -1
  92. package/dist/mcp/builtin/globals/getGlobalSchemaTool.js +5 -0
  93. package/dist/mcp/builtin/globals/getGlobalSchemaTool.js.map +1 -1
  94. package/dist/mcp/builtin/globals/restoreVersionTool.d.ts +2 -0
  95. package/dist/mcp/builtin/globals/restoreVersionTool.d.ts.map +1 -0
  96. package/dist/mcp/builtin/globals/restoreVersionTool.js +78 -0
  97. package/dist/mcp/builtin/globals/restoreVersionTool.js.map +1 -0
  98. package/dist/mcp/builtin/globals/updateTool.d.ts.map +1 -1
  99. package/dist/mcp/builtin/globals/updateTool.js +2 -0
  100. package/dist/mcp/builtin/globals/updateTool.js.map +1 -1
  101. package/dist/mcp/builtinTools.d.ts +67 -2
  102. package/dist/mcp/builtinTools.d.ts.map +1 -1
  103. package/dist/mcp/builtinTools.js +64 -0
  104. package/dist/mcp/builtinTools.js.map +1 -1
  105. package/dist/mcp/sanitizeMCPConfig.d.ts +0 -1
  106. package/dist/mcp/sanitizeMCPConfig.d.ts.map +1 -1
  107. package/dist/mcp/sanitizeMCPConfig.js +44 -17
  108. package/dist/mcp/sanitizeMCPConfig.js.map +1 -1
  109. package/dist/stdio.d.ts +3 -2
  110. package/dist/stdio.d.ts.map +1 -1
  111. package/dist/stdio.js +27 -8
  112. package/dist/stdio.js.map +1 -1
  113. package/dist/types.d.ts +43 -85
  114. package/dist/types.d.ts.map +1 -1
  115. package/dist/types.js +4 -4
  116. package/dist/types.js.map +1 -1
  117. package/dist/utils/getPluginConfig.d.ts +1 -1
  118. package/dist/utils/getPluginConfig.js +1 -1
  119. package/dist/utils/getPluginConfig.js.map +1 -1
  120. package/package.json +9 -13
  121. package/src/@types/assets.d.ts +3 -0
  122. package/src/defaultAccess.ts +3 -0
  123. package/src/endpoint/access.ts +87 -112
  124. package/src/endpoint/index.ts +14 -1
  125. package/src/exports/client.ts +2 -4
  126. package/src/exports/internal.ts +1 -0
  127. package/src/index.ts +1 -58
  128. package/src/mcp/buildMcpServer.ts +6 -1
  129. package/src/mcp/builtin/collections/countTool.ts +74 -0
  130. package/src/mcp/builtin/collections/countVersionsTool.ts +70 -0
  131. package/src/mcp/builtin/collections/createTool.ts +3 -0
  132. package/src/mcp/builtin/collections/deleteTool.ts +3 -0
  133. package/src/mcp/builtin/collections/duplicateTool.ts +135 -0
  134. package/src/mcp/builtin/collections/findDistinctTool.ts +120 -0
  135. package/src/mcp/builtin/collections/findTool.ts +3 -0
  136. package/src/mcp/builtin/collections/findVersionByIDTool.ts +110 -0
  137. package/src/mcp/builtin/collections/findVersionsTool.ts +155 -0
  138. package/src/mcp/builtin/collections/formatCollectionError.ts +1 -1
  139. package/src/mcp/builtin/collections/getCollectionSchemaTool.ts +11 -0
  140. package/src/mcp/builtin/collections/restoreVersionTool.ts +108 -0
  141. package/src/mcp/builtin/collections/updateTool.ts +3 -0
  142. package/src/mcp/builtin/getConfigInfoTool.ts +22 -4
  143. package/src/mcp/builtin/globals/countVersionsTool.ts +69 -0
  144. package/src/mcp/builtin/globals/findTool.ts +3 -0
  145. package/src/mcp/builtin/globals/findVersionByIDTool.ts +104 -0
  146. package/src/mcp/builtin/globals/findVersionsTool.ts +148 -0
  147. package/src/mcp/builtin/globals/getGlobalSchemaTool.ts +6 -0
  148. package/src/mcp/builtin/globals/restoreVersionTool.ts +100 -0
  149. package/src/mcp/builtin/globals/updateTool.ts +3 -0
  150. package/src/mcp/builtinTools.ts +63 -4
  151. package/src/mcp/sanitizeMCPConfig.ts +32 -19
  152. package/src/stdio.ts +23 -8
  153. package/src/types.ts +50 -88
  154. package/src/utils/getPluginConfig.ts +1 -1
  155. package/dist/collection/getAccessField.d.ts +0 -12
  156. package/dist/collection/getAccessField.d.ts.map +0 -1
  157. package/dist/collection/getAccessField.js +0 -72
  158. package/dist/collection/getAccessField.js.map +0 -1
  159. package/dist/collection/index.d.ts +0 -6
  160. package/dist/collection/index.d.ts.map +0 -1
  161. package/dist/collection/index.js +0 -105
  162. package/dist/collection/index.js.map +0 -1
  163. package/dist/components/APIKeyField/index.client.d.ts +0 -9
  164. package/dist/components/APIKeyField/index.client.d.ts.map +0 -1
  165. package/dist/components/APIKeyField/index.client.js +0 -85
  166. package/dist/components/APIKeyField/index.client.js.map +0 -1
  167. package/dist/components/APIKeyField/index.css +0 -105
  168. package/dist/components/APIKeysEmptyState/index.client.d.ts +0 -4
  169. package/dist/components/APIKeysEmptyState/index.client.d.ts.map +0 -1
  170. package/dist/components/APIKeysEmptyState/index.client.js +0 -21
  171. package/dist/components/APIKeysEmptyState/index.client.js.map +0 -1
  172. package/dist/components/AccessField/index.client.d.ts +0 -10
  173. package/dist/components/AccessField/index.client.d.ts.map +0 -1
  174. package/dist/components/AccessField/index.client.js +0 -247
  175. package/dist/components/AccessField/index.client.js.map +0 -1
  176. package/dist/components/AccessField/index.css +0 -99
  177. package/dist/components/SettingsMenu/index.client.d.ts +0 -8
  178. package/dist/components/SettingsMenu/index.client.d.ts.map +0 -1
  179. package/dist/components/SettingsMenu/index.client.js +0 -24
  180. package/dist/components/SettingsMenu/index.client.js.map +0 -1
  181. package/dist/translations/index.d.ts +0 -11
  182. package/dist/translations/index.d.ts.map +0 -1
  183. package/dist/translations/index.js +0 -92
  184. package/dist/translations/index.js.map +0 -1
  185. package/dist/translations/languages/ar.d.ts +0 -31
  186. package/dist/translations/languages/ar.d.ts.map +0 -1
  187. package/dist/translations/languages/ar.js +0 -34
  188. package/dist/translations/languages/ar.js.map +0 -1
  189. package/dist/translations/languages/az.d.ts +0 -31
  190. package/dist/translations/languages/az.d.ts.map +0 -1
  191. package/dist/translations/languages/az.js +0 -34
  192. package/dist/translations/languages/az.js.map +0 -1
  193. package/dist/translations/languages/bg.d.ts +0 -31
  194. package/dist/translations/languages/bg.d.ts.map +0 -1
  195. package/dist/translations/languages/bg.js +0 -34
  196. package/dist/translations/languages/bg.js.map +0 -1
  197. package/dist/translations/languages/bnBd.d.ts +0 -31
  198. package/dist/translations/languages/bnBd.d.ts.map +0 -1
  199. package/dist/translations/languages/bnBd.js +0 -34
  200. package/dist/translations/languages/bnBd.js.map +0 -1
  201. package/dist/translations/languages/bnIn.d.ts +0 -31
  202. package/dist/translations/languages/bnIn.d.ts.map +0 -1
  203. package/dist/translations/languages/bnIn.js +0 -34
  204. package/dist/translations/languages/bnIn.js.map +0 -1
  205. package/dist/translations/languages/ca.d.ts +0 -31
  206. package/dist/translations/languages/ca.d.ts.map +0 -1
  207. package/dist/translations/languages/ca.js +0 -34
  208. package/dist/translations/languages/ca.js.map +0 -1
  209. package/dist/translations/languages/cs.d.ts +0 -31
  210. package/dist/translations/languages/cs.d.ts.map +0 -1
  211. package/dist/translations/languages/cs.js +0 -34
  212. package/dist/translations/languages/cs.js.map +0 -1
  213. package/dist/translations/languages/da.d.ts +0 -31
  214. package/dist/translations/languages/da.d.ts.map +0 -1
  215. package/dist/translations/languages/da.js +0 -34
  216. package/dist/translations/languages/da.js.map +0 -1
  217. package/dist/translations/languages/de.d.ts +0 -31
  218. package/dist/translations/languages/de.d.ts.map +0 -1
  219. package/dist/translations/languages/de.js +0 -34
  220. package/dist/translations/languages/de.js.map +0 -1
  221. package/dist/translations/languages/en.d.ts +0 -31
  222. package/dist/translations/languages/en.d.ts.map +0 -1
  223. package/dist/translations/languages/en.js +0 -34
  224. package/dist/translations/languages/en.js.map +0 -1
  225. package/dist/translations/languages/es.d.ts +0 -31
  226. package/dist/translations/languages/es.d.ts.map +0 -1
  227. package/dist/translations/languages/es.js +0 -34
  228. package/dist/translations/languages/es.js.map +0 -1
  229. package/dist/translations/languages/et.d.ts +0 -31
  230. package/dist/translations/languages/et.d.ts.map +0 -1
  231. package/dist/translations/languages/et.js +0 -34
  232. package/dist/translations/languages/et.js.map +0 -1
  233. package/dist/translations/languages/fa.d.ts +0 -31
  234. package/dist/translations/languages/fa.d.ts.map +0 -1
  235. package/dist/translations/languages/fa.js +0 -34
  236. package/dist/translations/languages/fa.js.map +0 -1
  237. package/dist/translations/languages/fr.d.ts +0 -31
  238. package/dist/translations/languages/fr.d.ts.map +0 -1
  239. package/dist/translations/languages/fr.js +0 -34
  240. package/dist/translations/languages/fr.js.map +0 -1
  241. package/dist/translations/languages/he.d.ts +0 -31
  242. package/dist/translations/languages/he.d.ts.map +0 -1
  243. package/dist/translations/languages/he.js +0 -34
  244. package/dist/translations/languages/he.js.map +0 -1
  245. package/dist/translations/languages/hr.d.ts +0 -31
  246. package/dist/translations/languages/hr.d.ts.map +0 -1
  247. package/dist/translations/languages/hr.js +0 -34
  248. package/dist/translations/languages/hr.js.map +0 -1
  249. package/dist/translations/languages/hu.d.ts +0 -31
  250. package/dist/translations/languages/hu.d.ts.map +0 -1
  251. package/dist/translations/languages/hu.js +0 -34
  252. package/dist/translations/languages/hu.js.map +0 -1
  253. package/dist/translations/languages/hy.d.ts +0 -31
  254. package/dist/translations/languages/hy.d.ts.map +0 -1
  255. package/dist/translations/languages/hy.js +0 -34
  256. package/dist/translations/languages/hy.js.map +0 -1
  257. package/dist/translations/languages/id.d.ts +0 -31
  258. package/dist/translations/languages/id.d.ts.map +0 -1
  259. package/dist/translations/languages/id.js +0 -34
  260. package/dist/translations/languages/id.js.map +0 -1
  261. package/dist/translations/languages/is.d.ts +0 -31
  262. package/dist/translations/languages/is.d.ts.map +0 -1
  263. package/dist/translations/languages/is.js +0 -34
  264. package/dist/translations/languages/is.js.map +0 -1
  265. package/dist/translations/languages/it.d.ts +0 -31
  266. package/dist/translations/languages/it.d.ts.map +0 -1
  267. package/dist/translations/languages/it.js +0 -34
  268. package/dist/translations/languages/it.js.map +0 -1
  269. package/dist/translations/languages/ja.d.ts +0 -31
  270. package/dist/translations/languages/ja.d.ts.map +0 -1
  271. package/dist/translations/languages/ja.js +0 -34
  272. package/dist/translations/languages/ja.js.map +0 -1
  273. package/dist/translations/languages/ko.d.ts +0 -31
  274. package/dist/translations/languages/ko.d.ts.map +0 -1
  275. package/dist/translations/languages/ko.js +0 -34
  276. package/dist/translations/languages/ko.js.map +0 -1
  277. package/dist/translations/languages/lt.d.ts +0 -31
  278. package/dist/translations/languages/lt.d.ts.map +0 -1
  279. package/dist/translations/languages/lt.js +0 -34
  280. package/dist/translations/languages/lt.js.map +0 -1
  281. package/dist/translations/languages/lv.d.ts +0 -31
  282. package/dist/translations/languages/lv.d.ts.map +0 -1
  283. package/dist/translations/languages/lv.js +0 -34
  284. package/dist/translations/languages/lv.js.map +0 -1
  285. package/dist/translations/languages/my.d.ts +0 -31
  286. package/dist/translations/languages/my.d.ts.map +0 -1
  287. package/dist/translations/languages/my.js +0 -34
  288. package/dist/translations/languages/my.js.map +0 -1
  289. package/dist/translations/languages/nb.d.ts +0 -31
  290. package/dist/translations/languages/nb.d.ts.map +0 -1
  291. package/dist/translations/languages/nb.js +0 -34
  292. package/dist/translations/languages/nb.js.map +0 -1
  293. package/dist/translations/languages/nl.d.ts +0 -31
  294. package/dist/translations/languages/nl.d.ts.map +0 -1
  295. package/dist/translations/languages/nl.js +0 -34
  296. package/dist/translations/languages/nl.js.map +0 -1
  297. package/dist/translations/languages/pl.d.ts +0 -31
  298. package/dist/translations/languages/pl.d.ts.map +0 -1
  299. package/dist/translations/languages/pl.js +0 -34
  300. package/dist/translations/languages/pl.js.map +0 -1
  301. package/dist/translations/languages/pt.d.ts +0 -31
  302. package/dist/translations/languages/pt.d.ts.map +0 -1
  303. package/dist/translations/languages/pt.js +0 -34
  304. package/dist/translations/languages/pt.js.map +0 -1
  305. package/dist/translations/languages/ro.d.ts +0 -31
  306. package/dist/translations/languages/ro.d.ts.map +0 -1
  307. package/dist/translations/languages/ro.js +0 -34
  308. package/dist/translations/languages/ro.js.map +0 -1
  309. package/dist/translations/languages/rs.d.ts +0 -31
  310. package/dist/translations/languages/rs.d.ts.map +0 -1
  311. package/dist/translations/languages/rs.js +0 -34
  312. package/dist/translations/languages/rs.js.map +0 -1
  313. package/dist/translations/languages/rsLatin.d.ts +0 -31
  314. package/dist/translations/languages/rsLatin.d.ts.map +0 -1
  315. package/dist/translations/languages/rsLatin.js +0 -34
  316. package/dist/translations/languages/rsLatin.js.map +0 -1
  317. package/dist/translations/languages/ru.d.ts +0 -31
  318. package/dist/translations/languages/ru.d.ts.map +0 -1
  319. package/dist/translations/languages/ru.js +0 -34
  320. package/dist/translations/languages/ru.js.map +0 -1
  321. package/dist/translations/languages/sk.d.ts +0 -31
  322. package/dist/translations/languages/sk.d.ts.map +0 -1
  323. package/dist/translations/languages/sk.js +0 -34
  324. package/dist/translations/languages/sk.js.map +0 -1
  325. package/dist/translations/languages/sl.d.ts +0 -31
  326. package/dist/translations/languages/sl.d.ts.map +0 -1
  327. package/dist/translations/languages/sl.js +0 -34
  328. package/dist/translations/languages/sl.js.map +0 -1
  329. package/dist/translations/languages/sv.d.ts +0 -31
  330. package/dist/translations/languages/sv.d.ts.map +0 -1
  331. package/dist/translations/languages/sv.js +0 -34
  332. package/dist/translations/languages/sv.js.map +0 -1
  333. package/dist/translations/languages/ta.d.ts +0 -31
  334. package/dist/translations/languages/ta.d.ts.map +0 -1
  335. package/dist/translations/languages/ta.js +0 -34
  336. package/dist/translations/languages/ta.js.map +0 -1
  337. package/dist/translations/languages/th.d.ts +0 -31
  338. package/dist/translations/languages/th.d.ts.map +0 -1
  339. package/dist/translations/languages/th.js +0 -34
  340. package/dist/translations/languages/th.js.map +0 -1
  341. package/dist/translations/languages/tr.d.ts +0 -31
  342. package/dist/translations/languages/tr.d.ts.map +0 -1
  343. package/dist/translations/languages/tr.js +0 -34
  344. package/dist/translations/languages/tr.js.map +0 -1
  345. package/dist/translations/languages/uk.d.ts +0 -31
  346. package/dist/translations/languages/uk.d.ts.map +0 -1
  347. package/dist/translations/languages/uk.js +0 -34
  348. package/dist/translations/languages/uk.js.map +0 -1
  349. package/dist/translations/languages/vi.d.ts +0 -31
  350. package/dist/translations/languages/vi.d.ts.map +0 -1
  351. package/dist/translations/languages/vi.js +0 -34
  352. package/dist/translations/languages/vi.js.map +0 -1
  353. package/dist/translations/languages/zh.d.ts +0 -31
  354. package/dist/translations/languages/zh.d.ts.map +0 -1
  355. package/dist/translations/languages/zh.js +0 -34
  356. package/dist/translations/languages/zh.js.map +0 -1
  357. package/dist/translations/languages/zhTw.d.ts +0 -31
  358. package/dist/translations/languages/zhTw.d.ts.map +0 -1
  359. package/dist/translations/languages/zhTw.js +0 -34
  360. package/dist/translations/languages/zhTw.js.map +0 -1
  361. package/dist/translations/types.d.ts +0 -32
  362. package/dist/translations/types.d.ts.map +0 -1
  363. package/dist/translations/types.js +0 -3
  364. package/dist/translations/types.js.map +0 -1
  365. package/src/collection/getAccessField.ts +0 -84
  366. package/src/collection/index.ts +0 -105
  367. package/src/components/APIKeyField/index.client.tsx +0 -68
  368. package/src/components/APIKeyField/index.css +0 -105
  369. package/src/components/APIKeysEmptyState/index.client.tsx +0 -33
  370. package/src/components/AccessField/index.client.tsx +0 -296
  371. package/src/components/AccessField/index.css +0 -99
  372. package/src/components/SettingsMenu/index.client.tsx +0 -30
  373. package/src/translations/index.ts +0 -105
  374. package/src/translations/languages/ar.ts +0 -38
  375. package/src/translations/languages/az.ts +0 -38
  376. package/src/translations/languages/bg.ts +0 -39
  377. package/src/translations/languages/bnBd.ts +0 -39
  378. package/src/translations/languages/bnIn.ts +0 -39
  379. package/src/translations/languages/ca.ts +0 -39
  380. package/src/translations/languages/cs.ts +0 -39
  381. package/src/translations/languages/da.ts +0 -38
  382. package/src/translations/languages/de.ts +0 -39
  383. package/src/translations/languages/en.ts +0 -39
  384. package/src/translations/languages/es.ts +0 -39
  385. package/src/translations/languages/et.ts +0 -38
  386. package/src/translations/languages/fa.ts +0 -39
  387. package/src/translations/languages/fr.ts +0 -39
  388. package/src/translations/languages/he.ts +0 -37
  389. package/src/translations/languages/hr.ts +0 -39
  390. package/src/translations/languages/hu.ts +0 -39
  391. package/src/translations/languages/hy.ts +0 -39
  392. package/src/translations/languages/id.ts +0 -39
  393. package/src/translations/languages/is.ts +0 -39
  394. package/src/translations/languages/it.ts +0 -39
  395. package/src/translations/languages/ja.ts +0 -39
  396. package/src/translations/languages/ko.ts +0 -39
  397. package/src/translations/languages/lt.ts +0 -39
  398. package/src/translations/languages/lv.ts +0 -38
  399. package/src/translations/languages/my.ts +0 -39
  400. package/src/translations/languages/nb.ts +0 -39
  401. package/src/translations/languages/nl.ts +0 -39
  402. package/src/translations/languages/pl.ts +0 -38
  403. package/src/translations/languages/pt.ts +0 -39
  404. package/src/translations/languages/ro.ts +0 -39
  405. package/src/translations/languages/rs.ts +0 -38
  406. package/src/translations/languages/rsLatin.ts +0 -38
  407. package/src/translations/languages/ru.ts +0 -39
  408. package/src/translations/languages/sk.ts +0 -39
  409. package/src/translations/languages/sl.ts +0 -38
  410. package/src/translations/languages/sv.ts +0 -39
  411. package/src/translations/languages/ta.ts +0 -39
  412. package/src/translations/languages/th.ts +0 -38
  413. package/src/translations/languages/tr.ts +0 -38
  414. package/src/translations/languages/uk.ts +0 -39
  415. package/src/translations/languages/vi.ts +0 -39
  416. package/src/translations/languages/zh.ts +0 -36
  417. package/src/translations/languages/zhTw.ts +0 -36
  418. package/src/translations/types.ts +0 -34
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/mcp/builtin/globals/updateTool.ts"],"sourcesContent":["import type { SelectType } from 'payload'\n\nimport { z } from 'zod'\n\nimport { defineGlobalTool } from '../../../defineTool.js'\nimport { getLogger } from '../../../utils/getLogger.js'\nimport {\n getGlobalVirtualFieldNames,\n stripVirtualFields,\n} from '../../../utils/getVirtualFieldNames.js'\nimport { localAPIDefaults } from '../../../utils/localAPIDefaults.js'\nimport { transformPointDataToPayload } from '../../../utils/transformPointDataToPayload.js'\nimport { validateGlobalData } from '../validateEntityData.js'\n\nconst DEFAULT_DESCRIPTION = 'Update any Payload global by passing the global slug and data.'\n\nexport const updateGlobalTool = defineGlobalTool({\n annotations: {\n destructiveHint: true,\n idempotentHint: false,\n openWorldHint: false,\n readOnlyHint: false,\n title: 'Update Global',\n },\n description: DEFAULT_DESCRIPTION,\n input: z.object({\n data: z.record(z.string(), z.unknown()).describe('The global fields to update'),\n depth: z\n .number()\n .describe('Optional: Depth of relationships to populate')\n .optional()\n .default(0),\n draft: z\n .boolean()\n .describe('Optional: Whether to save as draft (default: false)')\n .optional()\n .default(false),\n fallbackLocale: z\n .string()\n .describe('Optional: fallback locale code to use when requested locale is not available')\n .optional(),\n locale: z\n .string()\n .describe(\n 'Optional: locale code to update data in (e.g., \"en\", \"es\"). Use \"all\" to update all locales for localized fields',\n )\n .optional(),\n select: z\n .record(z.string(), z.unknown())\n .describe(\n 'Optional: define exactly which fields you\\'d like to return in the response, e.g., {\"siteName\": true}',\n )\n .optional(),\n }),\n}).handler(async ({ authorizedMCP, globalSlug, input, req }) => {\n const payload = req.payload\n const logger = getLogger({ payload })\n\n const { data, depth, draft, fallbackLocale, locale, select } = input\n\n logger.info(\n `Updating global: ${globalSlug}, draft: ${draft}${locale ? `, locale: ${locale}` : ''}`,\n )\n\n try {\n const virtualFieldNames = getGlobalVirtualFieldNames(payload.config, globalSlug)\n const inputData = stripVirtualFields(data, virtualFieldNames)\n const validationError = validateGlobalData({ data: inputData, globalSlug, req })\n\n if (validationError) {\n return validationError\n }\n\n const parsedData = transformPointDataToPayload(inputData)\n\n const updateOptions: Parameters<typeof payload.updateGlobal>[0] = {\n slug: globalSlug,\n data: parsedData,\n depth,\n draft,\n ...localAPIDefaults(authorizedMCP),\n }\n\n if (locale) {\n updateOptions.locale = locale\n }\n if (fallbackLocale) {\n updateOptions.fallbackLocale = fallbackLocale\n }\n if (select) {\n updateOptions.select = select as SelectType\n }\n\n const result = await payload.updateGlobal(updateOptions)\n\n return {\n content: [\n {\n type: 'text',\n text: `Global \"${globalSlug}\" updated successfully!\\n\\`\\`\\`json\\n${JSON.stringify(result)}\\n\\`\\`\\``,\n },\n ],\n doc: result as Record<string, unknown>,\n }\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : 'Unknown error'\n logger.error(`Error updating global ${globalSlug}: ${errorMessage}`)\n return {\n content: [{ type: 'text', text: `Error updating global \"${globalSlug}\": ${errorMessage}` }],\n }\n }\n})\n"],"names":["z","defineGlobalTool","getLogger","getGlobalVirtualFieldNames","stripVirtualFields","localAPIDefaults","transformPointDataToPayload","validateGlobalData","DEFAULT_DESCRIPTION","updateGlobalTool","annotations","destructiveHint","idempotentHint","openWorldHint","readOnlyHint","title","description","input","object","data","record","string","unknown","describe","depth","number","optional","default","draft","boolean","fallbackLocale","locale","select","handler","authorizedMCP","globalSlug","req","payload","logger","info","virtualFieldNames","config","inputData","validationError","parsedData","updateOptions","slug","result","updateGlobal","content","type","text","JSON","stringify","doc","error","errorMessage","Error","message"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../src/mcp/builtin/globals/updateTool.ts"],"sourcesContent":["import type { SelectType } from 'payload'\n\nimport { z } from 'zod'\n\nimport { defaultAccess } from '../../../defaultAccess.js'\nimport { defineGlobalTool } from '../../../defineTool.js'\nimport { getLogger } from '../../../utils/getLogger.js'\nimport {\n getGlobalVirtualFieldNames,\n stripVirtualFields,\n} from '../../../utils/getVirtualFieldNames.js'\nimport { localAPIDefaults } from '../../../utils/localAPIDefaults.js'\nimport { transformPointDataToPayload } from '../../../utils/transformPointDataToPayload.js'\nimport { validateGlobalData } from '../validateEntityData.js'\n\nconst DEFAULT_DESCRIPTION = 'Update any Payload global by passing the global slug and data.'\n\nexport const updateGlobalTool = defineGlobalTool({\n access: (args) =>\n defaultAccess(args) && Boolean(args.permissions?.globals?.[args.globalSlug]?.update),\n annotations: {\n destructiveHint: true,\n idempotentHint: false,\n openWorldHint: false,\n readOnlyHint: false,\n title: 'Update Global',\n },\n description: DEFAULT_DESCRIPTION,\n input: z.object({\n data: z.record(z.string(), z.unknown()).describe('The global fields to update'),\n depth: z\n .number()\n .describe('Optional: Depth of relationships to populate')\n .optional()\n .default(0),\n draft: z\n .boolean()\n .describe('Optional: Whether to save as draft (default: false)')\n .optional()\n .default(false),\n fallbackLocale: z\n .string()\n .describe('Optional: fallback locale code to use when requested locale is not available')\n .optional(),\n locale: z\n .string()\n .describe(\n 'Optional: locale code to update data in (e.g., \"en\", \"es\"). Use \"all\" to update all locales for localized fields',\n )\n .optional(),\n select: z\n .record(z.string(), z.unknown())\n .describe(\n 'Optional: define exactly which fields you\\'d like to return in the response, e.g., {\"siteName\": true}',\n )\n .optional(),\n }),\n}).handler(async ({ authorizedMCP, globalSlug, input, req }) => {\n const payload = req.payload\n const logger = getLogger({ payload })\n\n const { data, depth, draft, fallbackLocale, locale, select } = input\n\n logger.info(\n `Updating global: ${globalSlug}, draft: ${draft}${locale ? `, locale: ${locale}` : ''}`,\n )\n\n try {\n const virtualFieldNames = getGlobalVirtualFieldNames(payload.config, globalSlug)\n const inputData = stripVirtualFields(data, virtualFieldNames)\n const validationError = validateGlobalData({ data: inputData, globalSlug, req })\n\n if (validationError) {\n return validationError\n }\n\n const parsedData = transformPointDataToPayload(inputData)\n\n const updateOptions: Parameters<typeof payload.updateGlobal>[0] = {\n slug: globalSlug,\n data: parsedData,\n depth,\n draft,\n ...localAPIDefaults(authorizedMCP),\n }\n\n if (locale) {\n updateOptions.locale = locale\n }\n if (fallbackLocale) {\n updateOptions.fallbackLocale = fallbackLocale\n }\n if (select) {\n updateOptions.select = select as SelectType\n }\n\n const result = await payload.updateGlobal(updateOptions)\n\n return {\n content: [\n {\n type: 'text',\n text: `Global \"${globalSlug}\" updated successfully!\\n\\`\\`\\`json\\n${JSON.stringify(result)}\\n\\`\\`\\``,\n },\n ],\n doc: result as Record<string, unknown>,\n }\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : 'Unknown error'\n logger.error(`Error updating global ${globalSlug}: ${errorMessage}`)\n return {\n content: [{ type: 'text', text: `Error updating global \"${globalSlug}\": ${errorMessage}` }],\n }\n }\n})\n"],"names":["z","defaultAccess","defineGlobalTool","getLogger","getGlobalVirtualFieldNames","stripVirtualFields","localAPIDefaults","transformPointDataToPayload","validateGlobalData","DEFAULT_DESCRIPTION","updateGlobalTool","access","args","Boolean","permissions","globals","globalSlug","update","annotations","destructiveHint","idempotentHint","openWorldHint","readOnlyHint","title","description","input","object","data","record","string","unknown","describe","depth","number","optional","default","draft","boolean","fallbackLocale","locale","select","handler","authorizedMCP","req","payload","logger","info","virtualFieldNames","config","inputData","validationError","parsedData","updateOptions","slug","result","updateGlobal","content","type","text","JSON","stringify","doc","error","errorMessage","Error","message"],"mappings":"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"}
@@ -1,4 +1,15 @@
1
1
  import type { CollectionTool, GlobalTool, Tool } from '../types.js';
2
+ type CollectionBuiltin = {
3
+ mcpName: string;
4
+ requiresDuplicateEnabled?: boolean;
5
+ requiresVersions?: boolean;
6
+ tool: CollectionTool;
7
+ };
8
+ type GlobalBuiltin = {
9
+ mcpName: string;
10
+ requiresVersions?: boolean;
11
+ tool: GlobalTool;
12
+ };
2
13
  export declare const TOOL_BUILTINS: {
3
14
  getConfigInfo: {
4
15
  mcpName: string;
@@ -11,6 +22,15 @@ export declare const TOOL_BUILTINS: {
11
22
  * automatically.
12
23
  */
13
24
  export declare const COLLECTION_BUILTINS: {
25
+ count: {
26
+ mcpName: string;
27
+ tool: CollectionTool;
28
+ };
29
+ countVersions: {
30
+ mcpName: string;
31
+ requiresVersions: true;
32
+ tool: CollectionTool;
33
+ };
14
34
  create: {
15
35
  mcpName: string;
16
36
  tool: CollectionTool;
@@ -19,14 +39,38 @@ export declare const COLLECTION_BUILTINS: {
19
39
  mcpName: string;
20
40
  tool: CollectionTool;
21
41
  };
42
+ duplicate: {
43
+ mcpName: string;
44
+ requiresDuplicateEnabled: true;
45
+ tool: CollectionTool;
46
+ };
22
47
  find: {
23
48
  mcpName: string;
24
49
  tool: CollectionTool;
25
50
  };
51
+ findDistinct: {
52
+ mcpName: string;
53
+ tool: CollectionTool;
54
+ };
55
+ findVersionByID: {
56
+ mcpName: string;
57
+ requiresVersions: true;
58
+ tool: CollectionTool;
59
+ };
60
+ findVersions: {
61
+ mcpName: string;
62
+ requiresVersions: true;
63
+ tool: CollectionTool;
64
+ };
26
65
  getCollectionSchema: {
27
66
  mcpName: string;
28
67
  tool: CollectionTool;
29
68
  };
69
+ restoreVersion: {
70
+ mcpName: string;
71
+ requiresVersions: true;
72
+ tool: CollectionTool;
73
+ };
30
74
  update: {
31
75
  mcpName: string;
32
76
  tool: CollectionTool;
@@ -67,14 +111,34 @@ export declare const COLLECTION_AUTH_BUILTINS: {
67
111
  * `MCPGlobalBuiltinName`.
68
112
  */
69
113
  export declare const GLOBAL_BUILTINS: {
114
+ countGlobalVersions: {
115
+ mcpName: string;
116
+ requiresVersions: true;
117
+ tool: GlobalTool;
118
+ };
70
119
  find: {
71
120
  mcpName: string;
72
121
  tool: GlobalTool;
73
122
  };
123
+ findGlobalVersionByID: {
124
+ mcpName: string;
125
+ requiresVersions: true;
126
+ tool: GlobalTool;
127
+ };
128
+ findGlobalVersions: {
129
+ mcpName: string;
130
+ requiresVersions: true;
131
+ tool: GlobalTool;
132
+ };
74
133
  getGlobalSchema: {
75
134
  mcpName: string;
76
135
  tool: GlobalTool;
77
136
  };
137
+ restoreGlobalVersion: {
138
+ mcpName: string;
139
+ requiresVersions: true;
140
+ tool: GlobalTool;
141
+ };
78
142
  update: {
79
143
  mcpName: string;
80
144
  tool: GlobalTool;
@@ -91,7 +155,8 @@ export type MCPTopLevelBuiltinName = keyof typeof TOOL_BUILTINS;
91
155
  * defeats the narrow type lookups on `MCPCollectionToolsMap`.
92
156
  */
93
157
  export declare const TOOL_BUILTIN_ENTRIES: Array<[MCPTopLevelBuiltinName, (typeof TOOL_BUILTINS)[MCPTopLevelBuiltinName]]>;
94
- export declare const COLLECTION_BUILTIN_ENTRIES: Array<[MCPCollectionBuiltinName, (typeof COLLECTION_BUILTINS)[MCPCollectionBuiltinName]]>;
158
+ export declare const COLLECTION_BUILTIN_ENTRIES: Array<[MCPCollectionBuiltinName, CollectionBuiltin]>;
95
159
  export declare const COLLECTION_AUTH_BUILTIN_ENTRIES: Array<[MCPCollectionAuthToolName, (typeof COLLECTION_AUTH_BUILTINS)[MCPCollectionAuthToolName]]>;
96
- export declare const GLOBAL_BUILTIN_ENTRIES: Array<[MCPGlobalBuiltinName, (typeof GLOBAL_BUILTINS)[MCPGlobalBuiltinName]]>;
160
+ export declare const GLOBAL_BUILTIN_ENTRIES: Array<[MCPGlobalBuiltinName, GlobalBuiltin]>;
161
+ export {};
97
162
  //# sourceMappingURL=builtinTools.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"builtinTools.d.ts","sourceRoot":"","sources":["../../src/mcp/builtinTools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAoBnE,eAAO,MAAM,aAAa;;;;;CAEiC,CAAA;AAE3D;;;;GAIG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;CAMqC,CAAA;AAErE;;;GAGG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;CAagC,CAAA;AAErE;;;GAGG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;CAIqC,CAAA;AAEjE,MAAM,MAAM,wBAAwB,GAAG,MAAM,OAAO,mBAAmB,CAAA;AAEvE,MAAM,MAAM,yBAAyB,GAAG,MAAM,OAAO,wBAAwB,CAAA;AAE7E,MAAM,MAAM,oBAAoB,GAAG,MAAM,OAAO,eAAe,CAAA;AAE/D,MAAM,MAAM,sBAAsB,GAAG,MAAM,OAAO,aAAa,CAAA;AAE/D;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,EAAoC,KAAK,CACxE,CAAC,sBAAsB,EAAE,CAAC,OAAO,aAAa,EAAE,sBAAsB,CAAC,CAAC,CACzE,CAAA;AAED,eAAO,MAAM,0BAA0B,EAA0C,KAAK,CACpF,CAAC,wBAAwB,EAAE,CAAC,OAAO,mBAAmB,EAAE,wBAAwB,CAAC,CAAC,CACnF,CAAA;AAED,eAAO,MAAM,+BAA+B,EAA+C,KAAK,CAC9F,CAAC,yBAAyB,EAAE,CAAC,OAAO,wBAAwB,EAAE,yBAAyB,CAAC,CAAC,CAC1F,CAAA;AAED,eAAO,MAAM,sBAAsB,EAAsC,KAAK,CAC5E,CAAC,oBAAoB,EAAE,CAAC,OAAO,eAAe,EAAE,oBAAoB,CAAC,CAAC,CACvE,CAAA"}
1
+ {"version":3,"file":"builtinTools.d.ts","sourceRoot":"","sources":["../../src/mcp/builtinTools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AA+BnE,KAAK,iBAAiB,GAAG;IACvB,OAAO,EAAE,MAAM,CAAA;IACf,wBAAwB,CAAC,EAAE,OAAO,CAAA;IAClC,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,IAAI,EAAE,cAAc,CAAA;CACrB,CAAA;AAED,KAAK,aAAa,GAAG;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,IAAI,EAAE,UAAU,CAAA;CACjB,CAAA;AAED,eAAO,MAAM,aAAa;;;;;CAEiC,CAAA;AAE3D;;;;GAIG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqBa,CAAA;AAE7C;;;GAGG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;CAagC,CAAA;AAErE;;;GAGG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwBa,CAAA;AAEzC,MAAM,MAAM,wBAAwB,GAAG,MAAM,OAAO,mBAAmB,CAAA;AAEvE,MAAM,MAAM,yBAAyB,GAAG,MAAM,OAAO,wBAAwB,CAAA;AAE7E,MAAM,MAAM,oBAAoB,GAAG,MAAM,OAAO,eAAe,CAAA;AAE/D,MAAM,MAAM,sBAAsB,GAAG,MAAM,OAAO,aAAa,CAAA;AAE/D;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,EAAoC,KAAK,CACxE,CAAC,sBAAsB,EAAE,CAAC,OAAO,aAAa,EAAE,sBAAsB,CAAC,CAAC,CACzE,CAAA;AAED,eAAO,MAAM,0BAA0B,EAA0C,KAAK,CACpF,CAAC,wBAAwB,EAAE,iBAAiB,CAAC,CAC9C,CAAA;AAED,eAAO,MAAM,+BAA+B,EAA+C,KAAK,CAC9F,CAAC,yBAAyB,EAAE,CAAC,OAAO,wBAAwB,EAAE,yBAAyB,CAAC,CAAC,CAC1F,CAAA;AAED,eAAO,MAAM,sBAAsB,EAAsC,KAAK,CAC5E,CAAC,oBAAoB,EAAE,aAAa,CAAC,CACtC,CAAA"}
@@ -1,12 +1,23 @@
1
1
  import { authCollectionTool, forgotPasswordCollectionTool, loginCollectionTool, resetPasswordCollectionTool, unlockCollectionTool, verifyCollectionTool } from './builtin/collections/authTools.js';
2
+ import { countDocumentsTool } from './builtin/collections/countTool.js';
3
+ import { countVersionsTool } from './builtin/collections/countVersionsTool.js';
2
4
  import { createDocumentTool } from './builtin/collections/createTool.js';
3
5
  import { deleteDocumentsTool } from './builtin/collections/deleteTool.js';
6
+ import { duplicateDocumentTool } from './builtin/collections/duplicateTool.js';
7
+ import { findDistinctTool } from './builtin/collections/findDistinctTool.js';
4
8
  import { findDocumentsTool } from './builtin/collections/findTool.js';
9
+ import { findVersionByIDTool } from './builtin/collections/findVersionByIDTool.js';
10
+ import { findVersionsTool } from './builtin/collections/findVersionsTool.js';
5
11
  import { getCollectionSchemaTool } from './builtin/collections/getCollectionSchemaTool.js';
12
+ import { restoreVersionTool } from './builtin/collections/restoreVersionTool.js';
6
13
  import { updateDocumentTool } from './builtin/collections/updateTool.js';
7
14
  import { getConfigInfoTool } from './builtin/getConfigInfoTool.js';
15
+ import { countGlobalVersionsTool } from './builtin/globals/countVersionsTool.js';
8
16
  import { findGlobalTool } from './builtin/globals/findTool.js';
17
+ import { findGlobalVersionByIDTool } from './builtin/globals/findVersionByIDTool.js';
18
+ import { findGlobalVersionsTool } from './builtin/globals/findVersionsTool.js';
9
19
  import { getGlobalSchemaTool } from './builtin/globals/getGlobalSchemaTool.js';
20
+ import { restoreGlobalVersionTool } from './builtin/globals/restoreVersionTool.js';
10
21
  import { updateGlobalTool } from './builtin/globals/updateTool.js';
11
22
  export const TOOL_BUILTINS = {
12
23
  getConfigInfo: {
@@ -19,6 +30,15 @@ export const TOOL_BUILTINS = {
19
30
  * for `MCPCollectionBuiltinName` — adding/removing an entry updates the type
20
31
  * automatically.
21
32
  */ export const COLLECTION_BUILTINS = {
33
+ count: {
34
+ mcpName: 'countDocuments',
35
+ tool: countDocumentsTool
36
+ },
37
+ countVersions: {
38
+ mcpName: 'countVersions',
39
+ requiresVersions: true,
40
+ tool: countVersionsTool
41
+ },
22
42
  create: {
23
43
  mcpName: 'createDocument',
24
44
  tool: createDocumentTool
@@ -27,14 +47,38 @@ export const TOOL_BUILTINS = {
27
47
  mcpName: 'deleteDocuments',
28
48
  tool: deleteDocumentsTool
29
49
  },
50
+ duplicate: {
51
+ mcpName: 'duplicateDocument',
52
+ requiresDuplicateEnabled: true,
53
+ tool: duplicateDocumentTool
54
+ },
30
55
  find: {
31
56
  mcpName: 'findDocuments',
32
57
  tool: findDocumentsTool
33
58
  },
59
+ findDistinct: {
60
+ mcpName: 'findDistinct',
61
+ tool: findDistinctTool
62
+ },
63
+ findVersionByID: {
64
+ mcpName: 'findVersionByID',
65
+ requiresVersions: true,
66
+ tool: findVersionByIDTool
67
+ },
68
+ findVersions: {
69
+ mcpName: 'findVersions',
70
+ requiresVersions: true,
71
+ tool: findVersionsTool
72
+ },
34
73
  getCollectionSchema: {
35
74
  mcpName: 'getCollectionSchema',
36
75
  tool: getCollectionSchemaTool
37
76
  },
77
+ restoreVersion: {
78
+ mcpName: 'restoreVersion',
79
+ requiresVersions: true,
80
+ tool: restoreVersionTool
81
+ },
38
82
  update: {
39
83
  mcpName: 'updateDocument',
40
84
  tool: updateDocumentTool
@@ -73,14 +117,34 @@ export const TOOL_BUILTINS = {
73
117
  * The static built-in global tools. Keys are the source of truth for
74
118
  * `MCPGlobalBuiltinName`.
75
119
  */ export const GLOBAL_BUILTINS = {
120
+ countGlobalVersions: {
121
+ mcpName: 'countGlobalVersions',
122
+ requiresVersions: true,
123
+ tool: countGlobalVersionsTool
124
+ },
76
125
  find: {
77
126
  mcpName: 'findGlobal',
78
127
  tool: findGlobalTool
79
128
  },
129
+ findGlobalVersionByID: {
130
+ mcpName: 'findGlobalVersionByID',
131
+ requiresVersions: true,
132
+ tool: findGlobalVersionByIDTool
133
+ },
134
+ findGlobalVersions: {
135
+ mcpName: 'findGlobalVersions',
136
+ requiresVersions: true,
137
+ tool: findGlobalVersionsTool
138
+ },
80
139
  getGlobalSchema: {
81
140
  mcpName: 'getGlobalSchema',
82
141
  tool: getGlobalSchemaTool
83
142
  },
143
+ restoreGlobalVersion: {
144
+ mcpName: 'restoreGlobalVersion',
145
+ requiresVersions: true,
146
+ tool: restoreGlobalVersionTool
147
+ },
84
148
  update: {
85
149
  mcpName: 'updateGlobal',
86
150
  tool: updateGlobalTool
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/mcp/builtinTools.ts"],"sourcesContent":["import type { CollectionTool, GlobalTool, Tool } from '../types.js'\n\nimport {\n authCollectionTool,\n forgotPasswordCollectionTool,\n loginCollectionTool,\n resetPasswordCollectionTool,\n unlockCollectionTool,\n verifyCollectionTool,\n} from './builtin/collections/authTools.js'\nimport { createDocumentTool } from './builtin/collections/createTool.js'\nimport { deleteDocumentsTool } from './builtin/collections/deleteTool.js'\nimport { findDocumentsTool } from './builtin/collections/findTool.js'\nimport { getCollectionSchemaTool } from './builtin/collections/getCollectionSchemaTool.js'\nimport { updateDocumentTool } from './builtin/collections/updateTool.js'\nimport { getConfigInfoTool } from './builtin/getConfigInfoTool.js'\nimport { findGlobalTool } from './builtin/globals/findTool.js'\nimport { getGlobalSchemaTool } from './builtin/globals/getGlobalSchemaTool.js'\nimport { updateGlobalTool } from './builtin/globals/updateTool.js'\n\nexport const TOOL_BUILTINS = {\n getConfigInfo: { mcpName: 'getConfigInfo', tool: getConfigInfoTool },\n} satisfies Record<string, { mcpName: string; tool: Tool }>\n\n/**\n * The static built-in collection CRUD tools. Keys here are the source of truth\n * for `MCPCollectionBuiltinName` — adding/removing an entry updates the type\n * automatically.\n */\nexport const COLLECTION_BUILTINS = {\n create: { mcpName: 'createDocument', tool: createDocumentTool },\n delete: { mcpName: 'deleteDocuments', tool: deleteDocumentsTool },\n find: { mcpName: 'findDocuments', tool: findDocumentsTool },\n getCollectionSchema: { mcpName: 'getCollectionSchema', tool: getCollectionSchemaTool },\n update: { mcpName: 'updateDocument', tool: updateDocumentTool },\n} satisfies Record<string, { mcpName: string; tool: CollectionTool }>\n\n/**\n * The static auth tools surfaced under auth-enabled collections. Keys are the\n * source of truth for `MCPCollectionAuthToolName`.\n */\nexport const COLLECTION_AUTH_BUILTINS = {\n auth: { mcpName: 'auth', tool: authCollectionTool },\n forgotPassword: {\n mcpName: 'forgotPassword',\n tool: forgotPasswordCollectionTool,\n },\n login: { mcpName: 'login', tool: loginCollectionTool },\n resetPassword: {\n mcpName: 'resetPassword',\n tool: resetPasswordCollectionTool,\n },\n unlock: { mcpName: 'unlock', tool: unlockCollectionTool },\n verify: { mcpName: 'verify', tool: verifyCollectionTool },\n} satisfies Record<string, { mcpName: string; tool: CollectionTool }>\n\n/**\n * The static built-in global tools. Keys are the source of truth for\n * `MCPGlobalBuiltinName`.\n */\nexport const GLOBAL_BUILTINS = {\n find: { mcpName: 'findGlobal', tool: findGlobalTool },\n getGlobalSchema: { mcpName: 'getGlobalSchema', tool: getGlobalSchemaTool },\n update: { mcpName: 'updateGlobal', tool: updateGlobalTool },\n} satisfies Record<string, { mcpName: string; tool: GlobalTool }>\n\nexport type MCPCollectionBuiltinName = keyof typeof COLLECTION_BUILTINS\n\nexport type MCPCollectionAuthToolName = keyof typeof COLLECTION_AUTH_BUILTINS\n\nexport type MCPGlobalBuiltinName = keyof typeof GLOBAL_BUILTINS\n\nexport type MCPTopLevelBuiltinName = keyof typeof TOOL_BUILTINS\n\n/**\n * Pre-typed `Object.entries` for each registry. The cast from `string` to the\n * literal key union lives here once so consumers can iterate without their own\n * cast — TypeScript's `Object.entries` always widens keys to `string`, which\n * defeats the narrow type lookups on `MCPCollectionToolsMap`.\n */\nexport const TOOL_BUILTIN_ENTRIES = Object.entries(TOOL_BUILTINS) as Array<\n [MCPTopLevelBuiltinName, (typeof TOOL_BUILTINS)[MCPTopLevelBuiltinName]]\n>\n\nexport const COLLECTION_BUILTIN_ENTRIES = Object.entries(COLLECTION_BUILTINS) as Array<\n [MCPCollectionBuiltinName, (typeof COLLECTION_BUILTINS)[MCPCollectionBuiltinName]]\n>\n\nexport const COLLECTION_AUTH_BUILTIN_ENTRIES = Object.entries(COLLECTION_AUTH_BUILTINS) as Array<\n [MCPCollectionAuthToolName, (typeof COLLECTION_AUTH_BUILTINS)[MCPCollectionAuthToolName]]\n>\n\nexport const GLOBAL_BUILTIN_ENTRIES = Object.entries(GLOBAL_BUILTINS) as Array<\n [MCPGlobalBuiltinName, (typeof GLOBAL_BUILTINS)[MCPGlobalBuiltinName]]\n>\n"],"names":["authCollectionTool","forgotPasswordCollectionTool","loginCollectionTool","resetPasswordCollectionTool","unlockCollectionTool","verifyCollectionTool","createDocumentTool","deleteDocumentsTool","findDocumentsTool","getCollectionSchemaTool","updateDocumentTool","getConfigInfoTool","findGlobalTool","getGlobalSchemaTool","updateGlobalTool","TOOL_BUILTINS","getConfigInfo","mcpName","tool","COLLECTION_BUILTINS","create","delete","find","getCollectionSchema","update","COLLECTION_AUTH_BUILTINS","auth","forgotPassword","login","resetPassword","unlock","verify","GLOBAL_BUILTINS","getGlobalSchema","TOOL_BUILTIN_ENTRIES","Object","entries","COLLECTION_BUILTIN_ENTRIES","COLLECTION_AUTH_BUILTIN_ENTRIES","GLOBAL_BUILTIN_ENTRIES"],"mappings":"AAEA,SACEA,kBAAkB,EAClBC,4BAA4B,EAC5BC,mBAAmB,EACnBC,2BAA2B,EAC3BC,oBAAoB,EACpBC,oBAAoB,QACf,qCAAoC;AAC3C,SAASC,kBAAkB,QAAQ,sCAAqC;AACxE,SAASC,mBAAmB,QAAQ,sCAAqC;AACzE,SAASC,iBAAiB,QAAQ,oCAAmC;AACrE,SAASC,uBAAuB,QAAQ,mDAAkD;AAC1F,SAASC,kBAAkB,QAAQ,sCAAqC;AACxE,SAASC,iBAAiB,QAAQ,iCAAgC;AAClE,SAASC,cAAc,QAAQ,gCAA+B;AAC9D,SAASC,mBAAmB,QAAQ,2CAA0C;AAC9E,SAASC,gBAAgB,QAAQ,kCAAiC;AAElE,OAAO,MAAMC,gBAAgB;IAC3BC,eAAe;QAAEC,SAAS;QAAiBC,MAAMP;IAAkB;AACrE,EAA2D;AAE3D;;;;CAIC,GACD,OAAO,MAAMQ,sBAAsB;IACjCC,QAAQ;QAAEH,SAAS;QAAkBC,MAAMZ;IAAmB;IAC9De,QAAQ;QAAEJ,SAAS;QAAmBC,MAAMX;IAAoB;IAChEe,MAAM;QAAEL,SAAS;QAAiBC,MAAMV;IAAkB;IAC1De,qBAAqB;QAAEN,SAAS;QAAuBC,MAAMT;IAAwB;IACrFe,QAAQ;QAAEP,SAAS;QAAkBC,MAAMR;IAAmB;AAChE,EAAqE;AAErE;;;CAGC,GACD,OAAO,MAAMe,2BAA2B;IACtCC,MAAM;QAAET,SAAS;QAAQC,MAAMlB;IAAmB;IAClD2B,gBAAgB;QACdV,SAAS;QACTC,MAAMjB;IACR;IACA2B,OAAO;QAAEX,SAAS;QAASC,MAAMhB;IAAoB;IACrD2B,eAAe;QACbZ,SAAS;QACTC,MAAMf;IACR;IACA2B,QAAQ;QAAEb,SAAS;QAAUC,MAAMd;IAAqB;IACxD2B,QAAQ;QAAEd,SAAS;QAAUC,MAAMb;IAAqB;AAC1D,EAAqE;AAErE;;;CAGC,GACD,OAAO,MAAM2B,kBAAkB;IAC7BV,MAAM;QAAEL,SAAS;QAAcC,MAAMN;IAAe;IACpDqB,iBAAiB;QAAEhB,SAAS;QAAmBC,MAAML;IAAoB;IACzEW,QAAQ;QAAEP,SAAS;QAAgBC,MAAMJ;IAAiB;AAC5D,EAAiE;AAUjE;;;;;CAKC,GACD,OAAO,MAAMoB,uBAAuBC,OAAOC,OAAO,CAACrB,eAElD;AAED,OAAO,MAAMsB,6BAA6BF,OAAOC,OAAO,CAACjB,qBAExD;AAED,OAAO,MAAMmB,kCAAkCH,OAAOC,OAAO,CAACX,0BAE7D;AAED,OAAO,MAAMc,yBAAyBJ,OAAOC,OAAO,CAACJ,iBAEpD"}
1
+ {"version":3,"sources":["../../src/mcp/builtinTools.ts"],"sourcesContent":["import type { CollectionTool, GlobalTool, Tool } from '../types.js'\n\nimport {\n authCollectionTool,\n forgotPasswordCollectionTool,\n loginCollectionTool,\n resetPasswordCollectionTool,\n unlockCollectionTool,\n verifyCollectionTool,\n} from './builtin/collections/authTools.js'\nimport { countDocumentsTool } from './builtin/collections/countTool.js'\nimport { countVersionsTool } from './builtin/collections/countVersionsTool.js'\nimport { createDocumentTool } from './builtin/collections/createTool.js'\nimport { deleteDocumentsTool } from './builtin/collections/deleteTool.js'\nimport { duplicateDocumentTool } from './builtin/collections/duplicateTool.js'\nimport { findDistinctTool } from './builtin/collections/findDistinctTool.js'\nimport { findDocumentsTool } from './builtin/collections/findTool.js'\nimport { findVersionByIDTool } from './builtin/collections/findVersionByIDTool.js'\nimport { findVersionsTool } from './builtin/collections/findVersionsTool.js'\nimport { getCollectionSchemaTool } from './builtin/collections/getCollectionSchemaTool.js'\nimport { restoreVersionTool } from './builtin/collections/restoreVersionTool.js'\nimport { updateDocumentTool } from './builtin/collections/updateTool.js'\nimport { getConfigInfoTool } from './builtin/getConfigInfoTool.js'\nimport { countGlobalVersionsTool } from './builtin/globals/countVersionsTool.js'\nimport { findGlobalTool } from './builtin/globals/findTool.js'\nimport { findGlobalVersionByIDTool } from './builtin/globals/findVersionByIDTool.js'\nimport { findGlobalVersionsTool } from './builtin/globals/findVersionsTool.js'\nimport { getGlobalSchemaTool } from './builtin/globals/getGlobalSchemaTool.js'\nimport { restoreGlobalVersionTool } from './builtin/globals/restoreVersionTool.js'\nimport { updateGlobalTool } from './builtin/globals/updateTool.js'\n\ntype CollectionBuiltin = {\n mcpName: string\n requiresDuplicateEnabled?: boolean\n requiresVersions?: boolean\n tool: CollectionTool\n}\n\ntype GlobalBuiltin = {\n mcpName: string\n requiresVersions?: boolean\n tool: GlobalTool\n}\n\nexport const TOOL_BUILTINS = {\n getConfigInfo: { mcpName: 'getConfigInfo', tool: getConfigInfoTool },\n} satisfies Record<string, { mcpName: string; tool: Tool }>\n\n/**\n * The static built-in collection CRUD tools. Keys here are the source of truth\n * for `MCPCollectionBuiltinName` — adding/removing an entry updates the type\n * automatically.\n */\nexport const COLLECTION_BUILTINS = {\n count: { mcpName: 'countDocuments', tool: countDocumentsTool },\n countVersions: { mcpName: 'countVersions', requiresVersions: true, tool: countVersionsTool },\n create: { mcpName: 'createDocument', tool: createDocumentTool },\n delete: { mcpName: 'deleteDocuments', tool: deleteDocumentsTool },\n duplicate: {\n mcpName: 'duplicateDocument',\n requiresDuplicateEnabled: true,\n tool: duplicateDocumentTool,\n },\n find: { mcpName: 'findDocuments', tool: findDocumentsTool },\n findDistinct: { mcpName: 'findDistinct', tool: findDistinctTool },\n findVersionByID: {\n mcpName: 'findVersionByID',\n requiresVersions: true,\n tool: findVersionByIDTool,\n },\n findVersions: { mcpName: 'findVersions', requiresVersions: true, tool: findVersionsTool },\n getCollectionSchema: { mcpName: 'getCollectionSchema', tool: getCollectionSchemaTool },\n restoreVersion: { mcpName: 'restoreVersion', requiresVersions: true, tool: restoreVersionTool },\n update: { mcpName: 'updateDocument', tool: updateDocumentTool },\n} satisfies Record<string, CollectionBuiltin>\n\n/**\n * The static auth tools surfaced under auth-enabled collections. Keys are the\n * source of truth for `MCPCollectionAuthToolName`.\n */\nexport const COLLECTION_AUTH_BUILTINS = {\n auth: { mcpName: 'auth', tool: authCollectionTool },\n forgotPassword: {\n mcpName: 'forgotPassword',\n tool: forgotPasswordCollectionTool,\n },\n login: { mcpName: 'login', tool: loginCollectionTool },\n resetPassword: {\n mcpName: 'resetPassword',\n tool: resetPasswordCollectionTool,\n },\n unlock: { mcpName: 'unlock', tool: unlockCollectionTool },\n verify: { mcpName: 'verify', tool: verifyCollectionTool },\n} satisfies Record<string, { mcpName: string; tool: CollectionTool }>\n\n/**\n * The static built-in global tools. Keys are the source of truth for\n * `MCPGlobalBuiltinName`.\n */\nexport const GLOBAL_BUILTINS = {\n countGlobalVersions: {\n mcpName: 'countGlobalVersions',\n requiresVersions: true,\n tool: countGlobalVersionsTool,\n },\n find: { mcpName: 'findGlobal', tool: findGlobalTool },\n findGlobalVersionByID: {\n mcpName: 'findGlobalVersionByID',\n requiresVersions: true,\n tool: findGlobalVersionByIDTool,\n },\n findGlobalVersions: {\n mcpName: 'findGlobalVersions',\n requiresVersions: true,\n tool: findGlobalVersionsTool,\n },\n getGlobalSchema: { mcpName: 'getGlobalSchema', tool: getGlobalSchemaTool },\n restoreGlobalVersion: {\n mcpName: 'restoreGlobalVersion',\n requiresVersions: true,\n tool: restoreGlobalVersionTool,\n },\n update: { mcpName: 'updateGlobal', tool: updateGlobalTool },\n} satisfies Record<string, GlobalBuiltin>\n\nexport type MCPCollectionBuiltinName = keyof typeof COLLECTION_BUILTINS\n\nexport type MCPCollectionAuthToolName = keyof typeof COLLECTION_AUTH_BUILTINS\n\nexport type MCPGlobalBuiltinName = keyof typeof GLOBAL_BUILTINS\n\nexport type MCPTopLevelBuiltinName = keyof typeof TOOL_BUILTINS\n\n/**\n * Pre-typed `Object.entries` for each registry. The cast from `string` to the\n * literal key union lives here once so consumers can iterate without their own\n * cast — TypeScript's `Object.entries` always widens keys to `string`, which\n * defeats the narrow type lookups on `MCPCollectionToolsMap`.\n */\nexport const TOOL_BUILTIN_ENTRIES = Object.entries(TOOL_BUILTINS) as Array<\n [MCPTopLevelBuiltinName, (typeof TOOL_BUILTINS)[MCPTopLevelBuiltinName]]\n>\n\nexport const COLLECTION_BUILTIN_ENTRIES = Object.entries(COLLECTION_BUILTINS) as Array<\n [MCPCollectionBuiltinName, CollectionBuiltin]\n>\n\nexport const COLLECTION_AUTH_BUILTIN_ENTRIES = Object.entries(COLLECTION_AUTH_BUILTINS) as Array<\n [MCPCollectionAuthToolName, (typeof COLLECTION_AUTH_BUILTINS)[MCPCollectionAuthToolName]]\n>\n\nexport const GLOBAL_BUILTIN_ENTRIES = Object.entries(GLOBAL_BUILTINS) as Array<\n [MCPGlobalBuiltinName, GlobalBuiltin]\n>\n"],"names":["authCollectionTool","forgotPasswordCollectionTool","loginCollectionTool","resetPasswordCollectionTool","unlockCollectionTool","verifyCollectionTool","countDocumentsTool","countVersionsTool","createDocumentTool","deleteDocumentsTool","duplicateDocumentTool","findDistinctTool","findDocumentsTool","findVersionByIDTool","findVersionsTool","getCollectionSchemaTool","restoreVersionTool","updateDocumentTool","getConfigInfoTool","countGlobalVersionsTool","findGlobalTool","findGlobalVersionByIDTool","findGlobalVersionsTool","getGlobalSchemaTool","restoreGlobalVersionTool","updateGlobalTool","TOOL_BUILTINS","getConfigInfo","mcpName","tool","COLLECTION_BUILTINS","count","countVersions","requiresVersions","create","delete","duplicate","requiresDuplicateEnabled","find","findDistinct","findVersionByID","findVersions","getCollectionSchema","restoreVersion","update","COLLECTION_AUTH_BUILTINS","auth","forgotPassword","login","resetPassword","unlock","verify","GLOBAL_BUILTINS","countGlobalVersions","findGlobalVersionByID","findGlobalVersions","getGlobalSchema","restoreGlobalVersion","TOOL_BUILTIN_ENTRIES","Object","entries","COLLECTION_BUILTIN_ENTRIES","COLLECTION_AUTH_BUILTIN_ENTRIES","GLOBAL_BUILTIN_ENTRIES"],"mappings":"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"}
@@ -5,7 +5,6 @@ import type { MCPPluginConfig, SanitizedMCPPluginConfig } from '../types.js';
5
5
  * - Flattens `tools` / `prompts` / `resources` / per-collection / per-global
6
6
  * tool maps into a single `items` array.
7
7
  * - Applies built-in tools for collections and globals, respecting opt-out user overrides.
8
- * - Applies the `userCollection` default
9
8
  *
10
9
  * Called once during plugin init. After that, `plugins['@payloadcms/plugin-mcp']
11
10
  * ?.options` holds the sanitized result
@@ -1 +1 @@
1
- {"version":3,"file":"sanitizeMCPConfig.d.ts","sourceRoot":"","sources":["../../src/mcp/sanitizeMCPConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,MAAM,EAGN,eAAe,EAEhB,MAAM,SAAS,CAAA;AAEhB,OAAO,KAAK,EAMV,eAAe,EACf,wBAAwB,EACzB,MAAM,aAAa,CAAA;AAapB;;;;;;;;;GASG;AACH,eAAO,MAAM,iBAAiB,GAAI,2BAG/B;IACD,MAAM,EAAE,MAAM,GAAG,eAAe,CAAA;IAChC,YAAY,EAAE,eAAe,CAAA;CAC9B,KAAG,wBAkEH,CAAA"}
1
+ {"version":3,"file":"sanitizeMCPConfig.d.ts","sourceRoot":"","sources":["../../src/mcp/sanitizeMCPConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,MAAM,EAGN,eAAe,EAEhB,MAAM,SAAS,CAAA;AAEhB,OAAO,KAAK,EAMV,eAAe,EACf,wBAAwB,EACzB,MAAM,aAAa,CAAA;AAcpB;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB,GAAI,2BAG/B;IACD,MAAM,EAAE,MAAM,GAAG,eAAe,CAAA;IAChC,YAAY,EAAE,eAAe,CAAA;CAC9B,KAAG,wBA4DH,CAAA"}
@@ -1,10 +1,10 @@
1
+ import { defaultAccess } from '../defaultAccess.js';
1
2
  import { COLLECTION_AUTH_BUILTIN_ENTRIES, COLLECTION_AUTH_BUILTINS, COLLECTION_BUILTIN_ENTRIES, COLLECTION_BUILTINS, GLOBAL_BUILTIN_ENTRIES, GLOBAL_BUILTINS, TOOL_BUILTIN_ENTRIES, TOOL_BUILTINS } from './builtinTools.js';
2
3
  /**
3
4
  * Converts the user-configured `MCPPluginConfig` into a `SanitizedMCPPluginConfig`:
4
5
  * - Flattens `tools` / `prompts` / `resources` / per-collection / per-global
5
6
  * tool maps into a single `items` array.
6
7
  * - Applies built-in tools for collections and globals, respecting opt-out user overrides.
7
- * - Applies the `userCollection` default
8
8
  *
9
9
  * Called once during plugin init. After that, `plugins['@payloadcms/plugin-mcp']
10
10
  * ?.options` holds the sanitized result
@@ -28,7 +28,10 @@ import { COLLECTION_AUTH_BUILTIN_ENTRIES, COLLECTION_AUTH_BUILTINS, COLLECTION_B
28
28
  configKey,
29
29
  label: tool.annotations?.title ?? configKey,
30
30
  mcpName,
31
- tool
31
+ tool: {
32
+ ...tool,
33
+ access: tool.access ?? defaultAccess
34
+ }
32
35
  });
33
36
  }
34
37
  for (const [configKey, tool] of Object.entries(pluginConfig.tools ?? {})){
@@ -40,7 +43,10 @@ import { COLLECTION_AUTH_BUILTIN_ENTRIES, COLLECTION_AUTH_BUILTINS, COLLECTION_B
40
43
  configKey,
41
44
  label: tool.annotations?.title ?? configKey,
42
45
  mcpName: configKey,
43
- tool
46
+ tool: {
47
+ ...tool,
48
+ access: tool.access ?? defaultAccess
49
+ }
44
50
  });
45
51
  }
46
52
  for (const [configKey, prompt] of Object.entries(pluginConfig.prompts ?? {})){
@@ -49,7 +55,10 @@ import { COLLECTION_AUTH_BUILTIN_ENTRIES, COLLECTION_AUTH_BUILTINS, COLLECTION_B
49
55
  configKey,
50
56
  label: prompt.title ?? configKey,
51
57
  mcpName: configKey,
52
- prompt
58
+ prompt: {
59
+ ...prompt,
60
+ access: prompt.access ?? defaultAccess
61
+ }
53
62
  });
54
63
  }
55
64
  for (const [configKey, resource] of Object.entries(pluginConfig.resources ?? {})){
@@ -58,28 +67,34 @@ import { COLLECTION_AUTH_BUILTIN_ENTRIES, COLLECTION_AUTH_BUILTINS, COLLECTION_B
58
67
  configKey,
59
68
  label: resource.title ?? configKey,
60
69
  mcpName: configKey,
61
- resource
70
+ resource: {
71
+ ...resource,
72
+ access: resource.access ?? defaultAccess
73
+ }
62
74
  });
63
75
  }
64
- // Mirror Payload's own admin.user detection (sanitize.ts) since plugins run first.
65
- const firstCollectionWithAuth = config.collections.find(({ auth })=>Boolean(auth));
66
76
  return {
67
77
  disabled: pluginConfig.disabled,
68
78
  items,
69
79
  mcp: pluginConfig.mcp,
70
- overrideApiKeyCollection: pluginConfig.overrideApiKeyCollection,
71
- overrideAuth: pluginConfig.overrideAuth,
72
- userCollection: pluginConfig.userCollection ?? config.admin?.user ?? firstCollectionWithAuth?.slug ?? 'users'
80
+ overrideGetAuthorizedMCP: pluginConfig.overrideGetAuthorizedMCP
73
81
  };
74
82
  };
75
83
  const sanitizeCollectionConfig = ({ collection, pluginConfig })=>{
76
- if (collection.slug === 'payload-mcp-api-keys') {
77
- return [];
78
- }
79
84
  const slug = collection.slug;
80
85
  const collectionPluginConfig = pluginConfig.collections?.[slug];
81
86
  const items = [];
82
- for (const [toolKey, { mcpName, tool }] of COLLECTION_BUILTIN_ENTRIES){
87
+ /**
88
+ * Payload disables duplicate for auth collections by default unless the
89
+ * collection explicitly opts back in with `disableDuplicate: false`.
90
+ */ const isDuplicateDisabled = collection.disableDuplicate === true || Boolean(collection.auth) && collection.disableDuplicate !== false;
91
+ for (const [toolKey, { mcpName, requiresDuplicateEnabled, requiresVersions, tool }] of COLLECTION_BUILTIN_ENTRIES){
92
+ if (requiresVersions && !collection.versions) {
93
+ continue;
94
+ }
95
+ if (requiresDuplicateEnabled && isDuplicateDisabled) {
96
+ continue;
97
+ }
83
98
  const matchedConfigEntry = collectionPluginConfig?.tools?.[toolKey];
84
99
  if (matchedConfigEntry === false) {
85
100
  continue;
@@ -97,6 +112,7 @@ const sanitizeCollectionConfig = ({ collection, pluginConfig })=>{
97
112
  mcpName,
98
113
  tool: {
99
114
  ...tool,
115
+ access: override?.access ?? tool.access ?? defaultAccess,
100
116
  annotations,
101
117
  description: override?.description ?? tool.description,
102
118
  overrideResponse: override?.overrideResponse ?? collectionPluginConfig?.overrideResponse ?? tool.overrideResponse
@@ -123,6 +139,7 @@ const sanitizeCollectionConfig = ({ collection, pluginConfig })=>{
123
139
  mcpName,
124
140
  tool: {
125
141
  ...tool,
142
+ access: override?.access ?? tool.access ?? defaultAccess,
126
143
  annotations,
127
144
  description: override?.description ?? tool.description,
128
145
  overrideResponse: override?.overrideResponse ?? collectionPluginConfig?.overrideResponse ?? tool.overrideResponse
@@ -146,7 +163,10 @@ const sanitizeCollectionConfig = ({ collection, pluginConfig })=>{
146
163
  configKey,
147
164
  label: customTool.annotations?.title ?? configKey,
148
165
  mcpName: configKey,
149
- tool: customTool
166
+ tool: {
167
+ ...customTool,
168
+ access: customTool.access ?? defaultAccess
169
+ }
150
170
  });
151
171
  }
152
172
  return items;
@@ -155,7 +175,10 @@ const sanitizeGlobalConfig = ({ global, pluginConfig })=>{
155
175
  const slug = global.slug;
156
176
  const globalPluginConfig = pluginConfig.globals?.[slug];
157
177
  const items = [];
158
- for (const [toolKey, { mcpName, tool }] of GLOBAL_BUILTIN_ENTRIES){
178
+ for (const [toolKey, { mcpName, requiresVersions, tool }] of GLOBAL_BUILTIN_ENTRIES){
179
+ if (requiresVersions && !global.versions) {
180
+ continue;
181
+ }
159
182
  const matchedConfigEntry = globalPluginConfig?.tools?.[toolKey];
160
183
  if (matchedConfigEntry === false) {
161
184
  continue;
@@ -173,6 +196,7 @@ const sanitizeGlobalConfig = ({ global, pluginConfig })=>{
173
196
  mcpName,
174
197
  tool: {
175
198
  ...tool,
199
+ access: override?.access ?? tool.access ?? defaultAccess,
176
200
  annotations,
177
201
  description: override?.description ?? tool.description,
178
202
  overrideResponse: override?.overrideResponse ?? globalPluginConfig?.overrideResponse ?? tool.overrideResponse
@@ -193,7 +217,10 @@ const sanitizeGlobalConfig = ({ global, pluginConfig })=>{
193
217
  globalSlug: slug,
194
218
  label: customTool.annotations?.title ?? configKey,
195
219
  mcpName: configKey,
196
- tool: customTool
220
+ tool: {
221
+ ...customTool,
222
+ access: customTool.access ?? defaultAccess
223
+ }
197
224
  });
198
225
  }
199
226
  return items;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/mcp/sanitizeMCPConfig.ts"],"sourcesContent":["import type {\n CollectionConfig,\n Config,\n GlobalConfig,\n SanitizedCollectionConfig,\n SanitizedConfig,\n SanitizedGlobalConfig,\n} from 'payload'\n\nimport type {\n CollectionMCPItem,\n CollectionTool,\n GlobalMCPItem,\n GlobalTool,\n MCPItem,\n MCPPluginConfig,\n SanitizedMCPPluginConfig,\n} from '../types.js'\n\nimport {\n COLLECTION_AUTH_BUILTIN_ENTRIES,\n COLLECTION_AUTH_BUILTINS,\n COLLECTION_BUILTIN_ENTRIES,\n COLLECTION_BUILTINS,\n GLOBAL_BUILTIN_ENTRIES,\n GLOBAL_BUILTINS,\n TOOL_BUILTIN_ENTRIES,\n TOOL_BUILTINS,\n} from './builtinTools.js'\n\n/**\n * Converts the user-configured `MCPPluginConfig` into a `SanitizedMCPPluginConfig`:\n * - Flattens `tools` / `prompts` / `resources` / per-collection / per-global\n * tool maps into a single `items` array.\n * - Applies built-in tools for collections and globals, respecting opt-out user overrides.\n * - Applies the `userCollection` default\n *\n * Called once during plugin init. After that, `plugins['@payloadcms/plugin-mcp']\n * ?.options` holds the sanitized result\n */\nexport const sanitizeMCPConfig = ({\n config,\n pluginConfig,\n}: {\n config: Config | SanitizedConfig\n pluginConfig: MCPPluginConfig\n}): SanitizedMCPPluginConfig => {\n const items: MCPItem[] = []\n\n for (const collection of config.collections ?? []) {\n items.push(...sanitizeCollectionConfig({ collection, pluginConfig }))\n }\n\n for (const global of config.globals ?? []) {\n items.push(...sanitizeGlobalConfig({ global, pluginConfig }))\n }\n\n for (const [configKey, { mcpName, tool }] of TOOL_BUILTIN_ENTRIES) {\n items.push({\n type: 'tool',\n configKey,\n label: tool.annotations?.title ?? configKey,\n mcpName,\n tool,\n })\n }\n\n for (const [configKey, tool] of Object.entries(pluginConfig.tools ?? {})) {\n if (configKey in TOOL_BUILTINS) {\n continue\n }\n items.push({\n type: 'tool',\n configKey,\n label: tool.annotations?.title ?? configKey,\n mcpName: configKey,\n tool,\n })\n }\n\n for (const [configKey, prompt] of Object.entries(pluginConfig.prompts ?? {})) {\n items.push({\n type: 'prompt',\n configKey,\n label: prompt.title ?? configKey,\n mcpName: configKey,\n prompt,\n })\n }\n\n for (const [configKey, resource] of Object.entries(pluginConfig.resources ?? {})) {\n items.push({\n type: 'resource',\n configKey,\n label: resource.title ?? configKey,\n mcpName: configKey,\n resource,\n })\n }\n\n // Mirror Payload's own admin.user detection (sanitize.ts) since plugins run first.\n const firstCollectionWithAuth = config.collections!.find(({ auth }) => Boolean(auth))\n\n return {\n disabled: pluginConfig.disabled,\n items,\n mcp: pluginConfig.mcp,\n overrideApiKeyCollection: pluginConfig.overrideApiKeyCollection,\n overrideAuth: pluginConfig.overrideAuth,\n userCollection:\n pluginConfig.userCollection ?? config.admin?.user ?? firstCollectionWithAuth?.slug ?? 'users',\n }\n}\n\nconst sanitizeCollectionConfig = ({\n collection,\n pluginConfig,\n}: {\n collection: CollectionConfig | SanitizedCollectionConfig\n pluginConfig: MCPPluginConfig\n}): CollectionMCPItem[] => {\n if (collection.slug === 'payload-mcp-api-keys') {\n return []\n }\n const slug = collection.slug\n const collectionPluginConfig = pluginConfig.collections?.[slug]\n const items: CollectionMCPItem[] = []\n\n for (const [toolKey, { mcpName, tool }] of COLLECTION_BUILTIN_ENTRIES) {\n const matchedConfigEntry = collectionPluginConfig?.tools?.[toolKey]\n if (matchedConfigEntry === false) {\n continue\n }\n const override = typeof matchedConfigEntry === 'object' ? matchedConfigEntry : undefined\n const annotations = { ...tool.annotations, ...override?.annotations }\n items.push({\n type: 'collectionTool',\n collectionSlug: slug,\n configKey: toolKey,\n label: annotations.title ?? toolKey,\n mcpName,\n tool: {\n ...tool,\n annotations,\n description: override?.description ?? tool.description,\n overrideResponse:\n override?.overrideResponse ??\n collectionPluginConfig?.overrideResponse ??\n tool.overrideResponse,\n },\n })\n }\n\n if (collection.auth) {\n for (const [authToolKey, { mcpName, tool }] of COLLECTION_AUTH_BUILTIN_ENTRIES) {\n const matchedConfigEntry = collectionPluginConfig?.tools?.[authToolKey]\n if (!matchedConfigEntry) {\n continue\n }\n // `true` means \"enable, no override\"; only the object form carries fields.\n const override = typeof matchedConfigEntry === 'object' ? matchedConfigEntry : undefined\n const annotations = { ...tool.annotations, ...override?.annotations }\n items.push({\n type: 'collectionTool',\n collectionSlug: slug,\n configKey: authToolKey,\n label: annotations.title ?? authToolKey,\n mcpName,\n tool: {\n ...tool,\n annotations,\n description: override?.description ?? tool.description,\n overrideResponse:\n override?.overrideResponse ??\n collectionPluginConfig?.overrideResponse ??\n tool.overrideResponse,\n },\n })\n }\n }\n\n // Cast: builtin keys are filtered out below, so the remaining values are\n // always custom tools (`CollectionTool`) or undefined\n const customEntries = Object.entries(collectionPluginConfig?.tools ?? {}) as Array<\n [string, CollectionTool | undefined]\n >\n for (const [configKey, customTool] of customEntries) {\n if (configKey in COLLECTION_BUILTINS || configKey in COLLECTION_AUTH_BUILTINS) {\n continue\n }\n if (!customTool) {\n continue\n }\n items.push({\n type: 'collectionTool',\n collectionSlug: slug,\n configKey,\n label: customTool.annotations?.title ?? configKey,\n mcpName: configKey,\n tool: customTool,\n })\n }\n\n return items\n}\n\nconst sanitizeGlobalConfig = ({\n global,\n pluginConfig,\n}: {\n global: GlobalConfig | SanitizedGlobalConfig\n pluginConfig: MCPPluginConfig\n}): GlobalMCPItem[] => {\n const slug = global.slug\n const globalPluginConfig = pluginConfig.globals?.[slug]\n const items: GlobalMCPItem[] = []\n\n for (const [toolKey, { mcpName, tool }] of GLOBAL_BUILTIN_ENTRIES) {\n const matchedConfigEntry = globalPluginConfig?.tools?.[toolKey]\n if (matchedConfigEntry === false) {\n continue\n }\n const override = typeof matchedConfigEntry === 'object' ? matchedConfigEntry : undefined\n const annotations = { ...tool.annotations, ...override?.annotations }\n items.push({\n type: 'globalTool',\n configKey: toolKey,\n globalSlug: slug,\n label: annotations.title ?? toolKey,\n mcpName,\n tool: {\n ...tool,\n annotations,\n description: override?.description ?? tool.description,\n overrideResponse:\n override?.overrideResponse ??\n globalPluginConfig?.overrideResponse ??\n tool.overrideResponse,\n },\n })\n }\n\n const customEntries = Object.entries(globalPluginConfig?.tools ?? {}) as Array<\n [string, GlobalTool | undefined]\n >\n for (const [configKey, customTool] of customEntries) {\n if (configKey in GLOBAL_BUILTINS) {\n continue\n }\n if (!customTool) {\n continue\n }\n items.push({\n type: 'globalTool',\n configKey,\n globalSlug: slug,\n label: customTool.annotations?.title ?? configKey,\n mcpName: configKey,\n tool: customTool,\n })\n }\n\n return items\n}\n"],"names":["COLLECTION_AUTH_BUILTIN_ENTRIES","COLLECTION_AUTH_BUILTINS","COLLECTION_BUILTIN_ENTRIES","COLLECTION_BUILTINS","GLOBAL_BUILTIN_ENTRIES","GLOBAL_BUILTINS","TOOL_BUILTIN_ENTRIES","TOOL_BUILTINS","sanitizeMCPConfig","config","pluginConfig","items","collection","collections","push","sanitizeCollectionConfig","global","globals","sanitizeGlobalConfig","configKey","mcpName","tool","type","label","annotations","title","Object","entries","tools","prompt","prompts","resource","resources","firstCollectionWithAuth","find","auth","Boolean","disabled","mcp","overrideApiKeyCollection","overrideAuth","userCollection","admin","user","slug","collectionPluginConfig","toolKey","matchedConfigEntry","override","undefined","collectionSlug","description","overrideResponse","authToolKey","customEntries","customTool","globalPluginConfig","globalSlug"],"mappings":"AAmBA,SACEA,+BAA+B,EAC/BC,wBAAwB,EACxBC,0BAA0B,EAC1BC,mBAAmB,EACnBC,sBAAsB,EACtBC,eAAe,EACfC,oBAAoB,EACpBC,aAAa,QACR,oBAAmB;AAE1B;;;;;;;;;CASC,GACD,OAAO,MAAMC,oBAAoB,CAAC,EAChCC,MAAM,EACNC,YAAY,EAIb;IACC,MAAMC,QAAmB,EAAE;IAE3B,KAAK,MAAMC,cAAcH,OAAOI,WAAW,IAAI,EAAE,CAAE;QACjDF,MAAMG,IAAI,IAAIC,yBAAyB;YAAEH;YAAYF;QAAa;IACpE;IAEA,KAAK,MAAMM,UAAUP,OAAOQ,OAAO,IAAI,EAAE,CAAE;QACzCN,MAAMG,IAAI,IAAII,qBAAqB;YAAEF;YAAQN;QAAa;IAC5D;IAEA,KAAK,MAAM,CAACS,WAAW,EAAEC,OAAO,EAAEC,IAAI,EAAE,CAAC,IAAIf,qBAAsB;QACjEK,MAAMG,IAAI,CAAC;YACTQ,MAAM;YACNH;YACAI,OAAOF,KAAKG,WAAW,EAAEC,SAASN;YAClCC;YACAC;QACF;IACF;IAEA,KAAK,MAAM,CAACF,WAAWE,KAAK,IAAIK,OAAOC,OAAO,CAACjB,aAAakB,KAAK,IAAI,CAAC,GAAI;QACxE,IAAIT,aAAaZ,eAAe;YAC9B;QACF;QACAI,MAAMG,IAAI,CAAC;YACTQ,MAAM;YACNH;YACAI,OAAOF,KAAKG,WAAW,EAAEC,SAASN;YAClCC,SAASD;YACTE;QACF;IACF;IAEA,KAAK,MAAM,CAACF,WAAWU,OAAO,IAAIH,OAAOC,OAAO,CAACjB,aAAaoB,OAAO,IAAI,CAAC,GAAI;QAC5EnB,MAAMG,IAAI,CAAC;YACTQ,MAAM;YACNH;YACAI,OAAOM,OAAOJ,KAAK,IAAIN;YACvBC,SAASD;YACTU;QACF;IACF;IAEA,KAAK,MAAM,CAACV,WAAWY,SAAS,IAAIL,OAAOC,OAAO,CAACjB,aAAasB,SAAS,IAAI,CAAC,GAAI;QAChFrB,MAAMG,IAAI,CAAC;YACTQ,MAAM;YACNH;YACAI,OAAOQ,SAASN,KAAK,IAAIN;YACzBC,SAASD;YACTY;QACF;IACF;IAEA,mFAAmF;IACnF,MAAME,0BAA0BxB,OAAOI,WAAW,CAAEqB,IAAI,CAAC,CAAC,EAAEC,IAAI,EAAE,GAAKC,QAAQD;IAE/E,OAAO;QACLE,UAAU3B,aAAa2B,QAAQ;QAC/B1B;QACA2B,KAAK5B,aAAa4B,GAAG;QACrBC,0BAA0B7B,aAAa6B,wBAAwB;QAC/DC,cAAc9B,aAAa8B,YAAY;QACvCC,gBACE/B,aAAa+B,cAAc,IAAIhC,OAAOiC,KAAK,EAAEC,QAAQV,yBAAyBW,QAAQ;IAC1F;AACF,EAAC;AAED,MAAM7B,2BAA2B,CAAC,EAChCH,UAAU,EACVF,YAAY,EAIb;IACC,IAAIE,WAAWgC,IAAI,KAAK,wBAAwB;QAC9C,OAAO,EAAE;IACX;IACA,MAAMA,OAAOhC,WAAWgC,IAAI;IAC5B,MAAMC,yBAAyBnC,aAAaG,WAAW,EAAE,CAAC+B,KAAK;IAC/D,MAAMjC,QAA6B,EAAE;IAErC,KAAK,MAAM,CAACmC,SAAS,EAAE1B,OAAO,EAAEC,IAAI,EAAE,CAAC,IAAInB,2BAA4B;QACrE,MAAM6C,qBAAqBF,wBAAwBjB,OAAO,CAACkB,QAAQ;QACnE,IAAIC,uBAAuB,OAAO;YAChC;QACF;QACA,MAAMC,WAAW,OAAOD,uBAAuB,WAAWA,qBAAqBE;QAC/E,MAAMzB,cAAc;YAAE,GAAGH,KAAKG,WAAW;YAAE,GAAGwB,UAAUxB,WAAW;QAAC;QACpEb,MAAMG,IAAI,CAAC;YACTQ,MAAM;YACN4B,gBAAgBN;YAChBzB,WAAW2B;YACXvB,OAAOC,YAAYC,KAAK,IAAIqB;YAC5B1B;YACAC,MAAM;gBACJ,GAAGA,IAAI;gBACPG;gBACA2B,aAAaH,UAAUG,eAAe9B,KAAK8B,WAAW;gBACtDC,kBACEJ,UAAUI,oBACVP,wBAAwBO,oBACxB/B,KAAK+B,gBAAgB;YACzB;QACF;IACF;IAEA,IAAIxC,WAAWuB,IAAI,EAAE;QACnB,KAAK,MAAM,CAACkB,aAAa,EAAEjC,OAAO,EAAEC,IAAI,EAAE,CAAC,IAAIrB,gCAAiC;YAC9E,MAAM+C,qBAAqBF,wBAAwBjB,OAAO,CAACyB,YAAY;YACvE,IAAI,CAACN,oBAAoB;gBACvB;YACF;YACA,2EAA2E;YAC3E,MAAMC,WAAW,OAAOD,uBAAuB,WAAWA,qBAAqBE;YAC/E,MAAMzB,cAAc;gBAAE,GAAGH,KAAKG,WAAW;gBAAE,GAAGwB,UAAUxB,WAAW;YAAC;YACpEb,MAAMG,IAAI,CAAC;gBACTQ,MAAM;gBACN4B,gBAAgBN;gBAChBzB,WAAWkC;gBACX9B,OAAOC,YAAYC,KAAK,IAAI4B;gBAC5BjC;gBACAC,MAAM;oBACJ,GAAGA,IAAI;oBACPG;oBACA2B,aAAaH,UAAUG,eAAe9B,KAAK8B,WAAW;oBACtDC,kBACEJ,UAAUI,oBACVP,wBAAwBO,oBACxB/B,KAAK+B,gBAAgB;gBACzB;YACF;QACF;IACF;IAEA,yEAAyE;IACzE,sDAAsD;IACtD,MAAME,gBAAgB5B,OAAOC,OAAO,CAACkB,wBAAwBjB,SAAS,CAAC;IAGvE,KAAK,MAAM,CAACT,WAAWoC,WAAW,IAAID,cAAe;QACnD,IAAInC,aAAahB,uBAAuBgB,aAAalB,0BAA0B;YAC7E;QACF;QACA,IAAI,CAACsD,YAAY;YACf;QACF;QACA5C,MAAMG,IAAI,CAAC;YACTQ,MAAM;YACN4B,gBAAgBN;YAChBzB;YACAI,OAAOgC,WAAW/B,WAAW,EAAEC,SAASN;YACxCC,SAASD;YACTE,MAAMkC;QACR;IACF;IAEA,OAAO5C;AACT;AAEA,MAAMO,uBAAuB,CAAC,EAC5BF,MAAM,EACNN,YAAY,EAIb;IACC,MAAMkC,OAAO5B,OAAO4B,IAAI;IACxB,MAAMY,qBAAqB9C,aAAaO,OAAO,EAAE,CAAC2B,KAAK;IACvD,MAAMjC,QAAyB,EAAE;IAEjC,KAAK,MAAM,CAACmC,SAAS,EAAE1B,OAAO,EAAEC,IAAI,EAAE,CAAC,IAAIjB,uBAAwB;QACjE,MAAM2C,qBAAqBS,oBAAoB5B,OAAO,CAACkB,QAAQ;QAC/D,IAAIC,uBAAuB,OAAO;YAChC;QACF;QACA,MAAMC,WAAW,OAAOD,uBAAuB,WAAWA,qBAAqBE;QAC/E,MAAMzB,cAAc;YAAE,GAAGH,KAAKG,WAAW;YAAE,GAAGwB,UAAUxB,WAAW;QAAC;QACpEb,MAAMG,IAAI,CAAC;YACTQ,MAAM;YACNH,WAAW2B;YACXW,YAAYb;YACZrB,OAAOC,YAAYC,KAAK,IAAIqB;YAC5B1B;YACAC,MAAM;gBACJ,GAAGA,IAAI;gBACPG;gBACA2B,aAAaH,UAAUG,eAAe9B,KAAK8B,WAAW;gBACtDC,kBACEJ,UAAUI,oBACVI,oBAAoBJ,oBACpB/B,KAAK+B,gBAAgB;YACzB;QACF;IACF;IAEA,MAAME,gBAAgB5B,OAAOC,OAAO,CAAC6B,oBAAoB5B,SAAS,CAAC;IAGnE,KAAK,MAAM,CAACT,WAAWoC,WAAW,IAAID,cAAe;QACnD,IAAInC,aAAad,iBAAiB;YAChC;QACF;QACA,IAAI,CAACkD,YAAY;YACf;QACF;QACA5C,MAAMG,IAAI,CAAC;YACTQ,MAAM;YACNH;YACAsC,YAAYb;YACZrB,OAAOgC,WAAW/B,WAAW,EAAEC,SAASN;YACxCC,SAASD;YACTE,MAAMkC;QACR;IACF;IAEA,OAAO5C;AACT"}
1
+ {"version":3,"sources":["../../src/mcp/sanitizeMCPConfig.ts"],"sourcesContent":["import type {\n CollectionConfig,\n Config,\n GlobalConfig,\n SanitizedCollectionConfig,\n SanitizedConfig,\n SanitizedGlobalConfig,\n} from 'payload'\n\nimport type {\n CollectionMCPItem,\n CollectionTool,\n GlobalMCPItem,\n GlobalTool,\n MCPItem,\n MCPPluginConfig,\n SanitizedMCPPluginConfig,\n} from '../types.js'\n\nimport { defaultAccess } from '../defaultAccess.js'\nimport {\n COLLECTION_AUTH_BUILTIN_ENTRIES,\n COLLECTION_AUTH_BUILTINS,\n COLLECTION_BUILTIN_ENTRIES,\n COLLECTION_BUILTINS,\n GLOBAL_BUILTIN_ENTRIES,\n GLOBAL_BUILTINS,\n TOOL_BUILTIN_ENTRIES,\n TOOL_BUILTINS,\n} from './builtinTools.js'\n\n/**\n * Converts the user-configured `MCPPluginConfig` into a `SanitizedMCPPluginConfig`:\n * - Flattens `tools` / `prompts` / `resources` / per-collection / per-global\n * tool maps into a single `items` array.\n * - Applies built-in tools for collections and globals, respecting opt-out user overrides.\n *\n * Called once during plugin init. After that, `plugins['@payloadcms/plugin-mcp']\n * ?.options` holds the sanitized result\n */\nexport const sanitizeMCPConfig = ({\n config,\n pluginConfig,\n}: {\n config: Config | SanitizedConfig\n pluginConfig: MCPPluginConfig\n}): SanitizedMCPPluginConfig => {\n const items: MCPItem[] = []\n\n for (const collection of config.collections ?? []) {\n items.push(...sanitizeCollectionConfig({ collection, pluginConfig }))\n }\n\n for (const global of config.globals ?? []) {\n items.push(...sanitizeGlobalConfig({ global, pluginConfig }))\n }\n\n for (const [configKey, { mcpName, tool }] of TOOL_BUILTIN_ENTRIES) {\n items.push({\n type: 'tool',\n configKey,\n label: tool.annotations?.title ?? configKey,\n mcpName,\n tool: { ...tool, access: tool.access ?? defaultAccess },\n })\n }\n\n for (const [configKey, tool] of Object.entries(pluginConfig.tools ?? {})) {\n if (configKey in TOOL_BUILTINS) {\n continue\n }\n items.push({\n type: 'tool',\n configKey,\n label: tool.annotations?.title ?? configKey,\n mcpName: configKey,\n tool: { ...tool, access: tool.access ?? defaultAccess },\n })\n }\n\n for (const [configKey, prompt] of Object.entries(pluginConfig.prompts ?? {})) {\n items.push({\n type: 'prompt',\n configKey,\n label: prompt.title ?? configKey,\n mcpName: configKey,\n prompt: { ...prompt, access: prompt.access ?? defaultAccess },\n })\n }\n\n for (const [configKey, resource] of Object.entries(pluginConfig.resources ?? {})) {\n items.push({\n type: 'resource',\n configKey,\n label: resource.title ?? configKey,\n mcpName: configKey,\n resource: { ...resource, access: resource.access ?? defaultAccess },\n })\n }\n\n return {\n disabled: pluginConfig.disabled,\n items,\n mcp: pluginConfig.mcp,\n overrideGetAuthorizedMCP: pluginConfig.overrideGetAuthorizedMCP,\n }\n}\n\nconst sanitizeCollectionConfig = ({\n collection,\n pluginConfig,\n}: {\n collection: CollectionConfig | SanitizedCollectionConfig\n pluginConfig: MCPPluginConfig\n}): CollectionMCPItem[] => {\n const slug = collection.slug\n const collectionPluginConfig = pluginConfig.collections?.[slug]\n const items: CollectionMCPItem[] = []\n /**\n * Payload disables duplicate for auth collections by default unless the\n * collection explicitly opts back in with `disableDuplicate: false`.\n */\n const isDuplicateDisabled =\n collection.disableDuplicate === true ||\n (Boolean(collection.auth) && collection.disableDuplicate !== false)\n\n for (const [\n toolKey,\n { mcpName, requiresDuplicateEnabled, requiresVersions, tool },\n ] of COLLECTION_BUILTIN_ENTRIES) {\n if (requiresVersions && !collection.versions) {\n continue\n }\n if (requiresDuplicateEnabled && isDuplicateDisabled) {\n continue\n }\n const matchedConfigEntry = collectionPluginConfig?.tools?.[toolKey]\n if (matchedConfigEntry === false) {\n continue\n }\n const override = typeof matchedConfigEntry === 'object' ? matchedConfigEntry : undefined\n const annotations = { ...tool.annotations, ...override?.annotations }\n items.push({\n type: 'collectionTool',\n collectionSlug: slug,\n configKey: toolKey,\n label: annotations.title ?? toolKey,\n mcpName,\n tool: {\n ...tool,\n access: override?.access ?? tool.access ?? defaultAccess,\n annotations,\n description: override?.description ?? tool.description,\n overrideResponse:\n override?.overrideResponse ??\n collectionPluginConfig?.overrideResponse ??\n tool.overrideResponse,\n },\n })\n }\n\n if (collection.auth) {\n for (const [authToolKey, { mcpName, tool }] of COLLECTION_AUTH_BUILTIN_ENTRIES) {\n const matchedConfigEntry = collectionPluginConfig?.tools?.[authToolKey]\n if (!matchedConfigEntry) {\n continue\n }\n // `true` means \"enable, no override\"; only the object form carries fields.\n const override = typeof matchedConfigEntry === 'object' ? matchedConfigEntry : undefined\n const annotations = { ...tool.annotations, ...override?.annotations }\n items.push({\n type: 'collectionTool',\n collectionSlug: slug,\n configKey: authToolKey,\n label: annotations.title ?? authToolKey,\n mcpName,\n tool: {\n ...tool,\n access: override?.access ?? tool.access ?? defaultAccess,\n annotations,\n description: override?.description ?? tool.description,\n overrideResponse:\n override?.overrideResponse ??\n collectionPluginConfig?.overrideResponse ??\n tool.overrideResponse,\n },\n })\n }\n }\n\n // Cast: builtin keys are filtered out below, so the remaining values are\n // always custom tools (`CollectionTool`) or undefined\n const customEntries = Object.entries(collectionPluginConfig?.tools ?? {}) as Array<\n [string, CollectionTool | undefined]\n >\n for (const [configKey, customTool] of customEntries) {\n if (configKey in COLLECTION_BUILTINS || configKey in COLLECTION_AUTH_BUILTINS) {\n continue\n }\n if (!customTool) {\n continue\n }\n items.push({\n type: 'collectionTool',\n collectionSlug: slug,\n configKey,\n label: customTool.annotations?.title ?? configKey,\n mcpName: configKey,\n tool: { ...customTool, access: customTool.access ?? defaultAccess },\n })\n }\n\n return items\n}\n\nconst sanitizeGlobalConfig = ({\n global,\n pluginConfig,\n}: {\n global: GlobalConfig | SanitizedGlobalConfig\n pluginConfig: MCPPluginConfig\n}): GlobalMCPItem[] => {\n const slug = global.slug\n const globalPluginConfig = pluginConfig.globals?.[slug]\n const items: GlobalMCPItem[] = []\n\n for (const [toolKey, { mcpName, requiresVersions, tool }] of GLOBAL_BUILTIN_ENTRIES) {\n if (requiresVersions && !global.versions) {\n continue\n }\n const matchedConfigEntry = globalPluginConfig?.tools?.[toolKey]\n if (matchedConfigEntry === false) {\n continue\n }\n const override = typeof matchedConfigEntry === 'object' ? matchedConfigEntry : undefined\n const annotations = { ...tool.annotations, ...override?.annotations }\n items.push({\n type: 'globalTool',\n configKey: toolKey,\n globalSlug: slug,\n label: annotations.title ?? toolKey,\n mcpName,\n tool: {\n ...tool,\n access: override?.access ?? tool.access ?? defaultAccess,\n annotations,\n description: override?.description ?? tool.description,\n overrideResponse:\n override?.overrideResponse ??\n globalPluginConfig?.overrideResponse ??\n tool.overrideResponse,\n },\n })\n }\n\n const customEntries = Object.entries(globalPluginConfig?.tools ?? {}) as Array<\n [string, GlobalTool | undefined]\n >\n for (const [configKey, customTool] of customEntries) {\n if (configKey in GLOBAL_BUILTINS) {\n continue\n }\n if (!customTool) {\n continue\n }\n items.push({\n type: 'globalTool',\n configKey,\n globalSlug: slug,\n label: customTool.annotations?.title ?? configKey,\n mcpName: configKey,\n tool: { ...customTool, access: customTool.access ?? defaultAccess },\n })\n }\n\n return items\n}\n"],"names":["defaultAccess","COLLECTION_AUTH_BUILTIN_ENTRIES","COLLECTION_AUTH_BUILTINS","COLLECTION_BUILTIN_ENTRIES","COLLECTION_BUILTINS","GLOBAL_BUILTIN_ENTRIES","GLOBAL_BUILTINS","TOOL_BUILTIN_ENTRIES","TOOL_BUILTINS","sanitizeMCPConfig","config","pluginConfig","items","collection","collections","push","sanitizeCollectionConfig","global","globals","sanitizeGlobalConfig","configKey","mcpName","tool","type","label","annotations","title","access","Object","entries","tools","prompt","prompts","resource","resources","disabled","mcp","overrideGetAuthorizedMCP","slug","collectionPluginConfig","isDuplicateDisabled","disableDuplicate","Boolean","auth","toolKey","requiresDuplicateEnabled","requiresVersions","versions","matchedConfigEntry","override","undefined","collectionSlug","description","overrideResponse","authToolKey","customEntries","customTool","globalPluginConfig","globalSlug"],"mappings":"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"}
package/dist/stdio.d.ts CHANGED
@@ -1,8 +1,9 @@
1
1
  /**
2
2
  * Stdio adapter for the Payload MCP server.
3
3
  *
4
- * Do not use in production. There's no auth; whoever can spawn the process gets
5
- * full access to your local data.
4
+ * Pass PAYLOAD_MCP_AUTHORIZATION when stdio should authenticate with the same
5
+ * Payload auth header as HTTP. In development, PAYLOAD_MCP_OVERRIDE_ACCESS=true
6
+ * skips access control for local setup.
6
7
  */
7
8
  export declare const runMcpStdio: () => Promise<void>;
8
9
  //# sourceMappingURL=stdio.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"stdio.d.ts","sourceRoot":"","sources":["../src/stdio.ts"],"names":[],"mappings":"AAeA;;;;;GAKG;AACH,eAAO,MAAM,WAAW,QAAa,OAAO,CAAC,IAAI,CA4EhD,CAAA"}
1
+ {"version":3,"file":"stdio.d.ts","sourceRoot":"","sources":["../src/stdio.ts"],"names":[],"mappings":"AAgBA;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,QAAa,OAAO,CAAC,IAAI,CAyFhD,CAAA"}
package/dist/stdio.js CHANGED
@@ -2,6 +2,7 @@
2
2
  import { fileURLToPath, pathToFileURL } from 'node:url';
3
3
  import { createLocalReq, getPayload } from 'payload';
4
4
  import { findConfig } from 'payload/node';
5
+ import { getAuthorizedMCP } from './endpoint/access.js';
5
6
  import { buildMcpServer } from './mcp/buildMcpServer.js';
6
7
  import { sanitizeMCPConfig } from './mcp/sanitizeMCPConfig.js';
7
8
  import { getPluginConfig } from './utils/getPluginConfig.js';
@@ -9,8 +10,9 @@ import { resolveProjectRoot } from './utils/resolveProjectRoot.js';
9
10
  /**
10
11
  * Stdio adapter for the Payload MCP server.
11
12
  *
12
- * Do not use in production. There's no auth; whoever can spawn the process gets
13
- * full access to your local data.
13
+ * Pass PAYLOAD_MCP_AUTHORIZATION when stdio should authenticate with the same
14
+ * Payload auth header as HTTP. In development, PAYLOAD_MCP_OVERRIDE_ACCESS=true
15
+ * skips access control for local setup.
14
16
  */ export const runMcpStdio = async ()=>{
15
17
  /**
16
18
  * If MCP clients spawn stdio servers from an arbitrary working directory,
@@ -52,13 +54,30 @@ import { resolveProjectRoot } from './utils/resolveProjectRoot.js';
52
54
  fakePluginFn.sanitizedOptions = pluginConfig;
53
55
  (payload.config.plugins ??= []).push(fakePluginFn);
54
56
  }
55
- const authorizedMCP = {
56
- items: pluginConfig.items,
57
- overrideAccess: true,
58
- user: null
59
- };
60
- const req = await createLocalReq({}, payload);
57
+ const overrideAccessEnv = process.env.PAYLOAD_MCP_OVERRIDE_ACCESS;
58
+ let overrideAccess = false;
59
+ if (overrideAccessEnv === 'true') {
60
+ overrideAccess = true;
61
+ } else if (overrideAccessEnv && overrideAccessEnv !== 'false') {
62
+ throw new Error('PAYLOAD_MCP_OVERRIDE_ACCESS must be "true" or "false".');
63
+ }
64
+ if (overrideAccess && process.env.NODE_ENV !== 'development') {
65
+ throw new Error('PAYLOAD_MCP_OVERRIDE_ACCESS is only available in development.');
66
+ }
67
+ const headers = new Headers();
68
+ if (process.env.PAYLOAD_MCP_AUTHORIZATION) {
69
+ headers.set('Authorization', process.env.PAYLOAD_MCP_AUTHORIZATION);
70
+ }
71
+ const req = await createLocalReq({
72
+ req: {
73
+ headers
74
+ }
75
+ }, payload);
61
76
  req.payloadAPI = 'MCP';
77
+ const authorizedMCP = await getAuthorizedMCP({
78
+ overrideAccess,
79
+ req
80
+ });
62
81
  const server = buildMcpServer({
63
82
  authorizedMCP,
64
83
  pluginConfig,