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

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 (420) hide show
  1. package/dist/defaultAccess.d.ts +3 -0
  2. package/dist/defaultAccess.d.ts.map +1 -0
  3. package/dist/defaultAccess.js +3 -0
  4. package/dist/defaultAccess.js.map +1 -0
  5. package/dist/endpoint/access.d.ts +17 -5
  6. package/dist/endpoint/access.d.ts.map +1 -1
  7. package/dist/endpoint/access.js +81 -103
  8. package/dist/endpoint/access.js.map +1 -1
  9. package/dist/endpoint/index.d.ts.map +1 -1
  10. package/dist/endpoint/index.js +11 -0
  11. package/dist/endpoint/index.js.map +1 -1
  12. package/dist/exports/client.d.ts +1 -4
  13. package/dist/exports/client.d.ts.map +1 -1
  14. package/dist/exports/client.js +1 -4
  15. package/dist/exports/client.js.map +1 -1
  16. package/dist/exports/internal.d.ts +2 -0
  17. package/dist/exports/internal.d.ts.map +1 -0
  18. package/dist/exports/internal.js +3 -0
  19. package/dist/exports/internal.js.map +1 -0
  20. package/dist/index.d.ts.map +1 -1
  21. package/dist/index.js +1 -49
  22. package/dist/index.js.map +1 -1
  23. package/dist/mcp/buildMcpServer.d.ts.map +1 -1
  24. package/dist/mcp/buildMcpServer.js +2 -0
  25. package/dist/mcp/buildMcpServer.js.map +1 -1
  26. package/dist/mcp/builtin/collections/authTools.d.ts.map +1 -1
  27. package/dist/mcp/builtin/collections/authTools.js +44 -6
  28. package/dist/mcp/builtin/collections/authTools.js.map +1 -1
  29. package/dist/mcp/builtin/collections/countTool.d.ts +2 -0
  30. package/dist/mcp/builtin/collections/countTool.d.ts.map +1 -0
  31. package/dist/mcp/builtin/collections/countTool.js +69 -0
  32. package/dist/mcp/builtin/collections/countTool.js.map +1 -0
  33. package/dist/mcp/builtin/collections/countVersionsTool.d.ts +2 -0
  34. package/dist/mcp/builtin/collections/countVersionsTool.d.ts.map +1 -0
  35. package/dist/mcp/builtin/collections/countVersionsTool.js +65 -0
  36. package/dist/mcp/builtin/collections/countVersionsTool.js.map +1 -0
  37. package/dist/mcp/builtin/collections/createTool.d.ts.map +1 -1
  38. package/dist/mcp/builtin/collections/createTool.js +12 -19
  39. package/dist/mcp/builtin/collections/createTool.js.map +1 -1
  40. package/dist/mcp/builtin/collections/deleteTool.d.ts.map +1 -1
  41. package/dist/mcp/builtin/collections/deleteTool.js +9 -0
  42. package/dist/mcp/builtin/collections/deleteTool.js.map +1 -1
  43. package/dist/mcp/builtin/collections/duplicateTool.d.ts +2 -0
  44. package/dist/mcp/builtin/collections/duplicateTool.d.ts.map +1 -0
  45. package/dist/mcp/builtin/collections/duplicateTool.js +97 -0
  46. package/dist/mcp/builtin/collections/duplicateTool.js.map +1 -0
  47. package/dist/mcp/builtin/collections/findDistinctTool.d.ts +2 -0
  48. package/dist/mcp/builtin/collections/findDistinctTool.d.ts.map +1 -0
  49. package/dist/mcp/builtin/collections/findDistinctTool.js +93 -0
  50. package/dist/mcp/builtin/collections/findDistinctTool.js.map +1 -0
  51. package/dist/mcp/builtin/collections/findTool.d.ts.map +1 -1
  52. package/dist/mcp/builtin/collections/findTool.js +43 -22
  53. package/dist/mcp/builtin/collections/findTool.js.map +1 -1
  54. package/dist/mcp/builtin/collections/findVersionByIDTool.d.ts +2 -0
  55. package/dist/mcp/builtin/collections/findVersionByIDTool.d.ts.map +1 -0
  56. package/dist/mcp/builtin/collections/findVersionByIDTool.js +84 -0
  57. package/dist/mcp/builtin/collections/findVersionByIDTool.js.map +1 -0
  58. package/dist/mcp/builtin/collections/findVersionsTool.d.ts +2 -0
  59. package/dist/mcp/builtin/collections/findVersionsTool.d.ts.map +1 -0
  60. package/dist/mcp/builtin/collections/findVersionsTool.js +99 -0
  61. package/dist/mcp/builtin/collections/findVersionsTool.js.map +1 -0
  62. package/dist/mcp/builtin/collections/formatCollectionError.d.ts +1 -1
  63. package/dist/mcp/builtin/collections/formatCollectionError.d.ts.map +1 -1
  64. package/dist/mcp/builtin/collections/formatCollectionError.js.map +1 -1
  65. package/dist/mcp/builtin/collections/getCollectionSchemaTool.d.ts.map +1 -1
  66. package/dist/mcp/builtin/collections/getCollectionSchemaTool.js +12 -0
  67. package/dist/mcp/builtin/collections/getCollectionSchemaTool.js.map +1 -1
  68. package/dist/mcp/builtin/collections/restoreVersionTool.d.ts +2 -0
  69. package/dist/mcp/builtin/collections/restoreVersionTool.d.ts.map +1 -0
  70. package/dist/mcp/builtin/collections/restoreVersionTool.js +82 -0
  71. package/dist/mcp/builtin/collections/restoreVersionTool.js.map +1 -0
  72. package/dist/mcp/builtin/collections/updateTool.d.ts.map +1 -1
  73. package/dist/mcp/builtin/collections/updateTool.js +14 -21
  74. package/dist/mcp/builtin/collections/updateTool.js.map +1 -1
  75. package/dist/mcp/builtin/getConfigInfoTool.d.ts.map +1 -1
  76. package/dist/mcp/builtin/getConfigInfoTool.js +27 -5
  77. package/dist/mcp/builtin/getConfigInfoTool.js.map +1 -1
  78. package/dist/mcp/builtin/globals/countVersionsTool.d.ts +2 -0
  79. package/dist/mcp/builtin/globals/countVersionsTool.d.ts.map +1 -0
  80. package/dist/mcp/builtin/globals/countVersionsTool.js +65 -0
  81. package/dist/mcp/builtin/globals/countVersionsTool.js.map +1 -0
  82. package/dist/mcp/builtin/globals/findTool.d.ts.map +1 -1
  83. package/dist/mcp/builtin/globals/findTool.js +17 -20
  84. package/dist/mcp/builtin/globals/findTool.js.map +1 -1
  85. package/dist/mcp/builtin/globals/findVersionByIDTool.d.ts +2 -0
  86. package/dist/mcp/builtin/globals/findVersionByIDTool.d.ts.map +1 -0
  87. package/dist/mcp/builtin/globals/findVersionByIDTool.js +80 -0
  88. package/dist/mcp/builtin/globals/findVersionByIDTool.js.map +1 -0
  89. package/dist/mcp/builtin/globals/findVersionsTool.d.ts +2 -0
  90. package/dist/mcp/builtin/globals/findVersionsTool.d.ts.map +1 -0
  91. package/dist/mcp/builtin/globals/findVersionsTool.js +95 -0
  92. package/dist/mcp/builtin/globals/findVersionsTool.js.map +1 -0
  93. package/dist/mcp/builtin/globals/getGlobalSchemaTool.d.ts.map +1 -1
  94. package/dist/mcp/builtin/globals/getGlobalSchemaTool.js +12 -0
  95. package/dist/mcp/builtin/globals/getGlobalSchemaTool.js.map +1 -1
  96. package/dist/mcp/builtin/globals/restoreVersionTool.d.ts +2 -0
  97. package/dist/mcp/builtin/globals/restoreVersionTool.d.ts.map +1 -0
  98. package/dist/mcp/builtin/globals/restoreVersionTool.js +78 -0
  99. package/dist/mcp/builtin/globals/restoreVersionTool.js.map +1 -0
  100. package/dist/mcp/builtin/globals/updateTool.d.ts.map +1 -1
  101. package/dist/mcp/builtin/globals/updateTool.js +12 -19
  102. package/dist/mcp/builtin/globals/updateTool.js.map +1 -1
  103. package/dist/mcp/builtinTools.d.ts +69 -12
  104. package/dist/mcp/builtinTools.d.ts.map +1 -1
  105. package/dist/mcp/builtinTools.js +66 -10
  106. package/dist/mcp/builtinTools.js.map +1 -1
  107. package/dist/mcp/sanitizeMCPConfig.d.ts +0 -1
  108. package/dist/mcp/sanitizeMCPConfig.d.ts.map +1 -1
  109. package/dist/mcp/sanitizeMCPConfig.js +68 -27
  110. package/dist/mcp/sanitizeMCPConfig.js.map +1 -1
  111. package/dist/stdio.d.ts +3 -2
  112. package/dist/stdio.d.ts.map +1 -1
  113. package/dist/stdio.js +27 -8
  114. package/dist/stdio.js.map +1 -1
  115. package/dist/types.d.ts +50 -90
  116. package/dist/types.d.ts.map +1 -1
  117. package/dist/types.js +4 -4
  118. package/dist/types.js.map +1 -1
  119. package/dist/utils/getPluginConfig.d.ts +1 -1
  120. package/dist/utils/getPluginConfig.js +1 -1
  121. package/dist/utils/getPluginConfig.js.map +1 -1
  122. package/package.json +9 -13
  123. package/src/defaultAccess.ts +3 -0
  124. package/src/endpoint/access.ts +87 -112
  125. package/src/endpoint/index.ts +14 -1
  126. package/src/exports/client.ts +2 -4
  127. package/src/exports/internal.ts +1 -0
  128. package/src/index.ts +1 -55
  129. package/src/mcp/buildMcpServer.ts +8 -1
  130. package/src/mcp/builtin/collections/authTools.ts +45 -9
  131. package/src/mcp/builtin/collections/countTool.ts +74 -0
  132. package/src/mcp/builtin/collections/countVersionsTool.ts +70 -0
  133. package/src/mcp/builtin/collections/createTool.ts +13 -13
  134. package/src/mcp/builtin/collections/deleteTool.ts +10 -0
  135. package/src/mcp/builtin/collections/duplicateTool.ts +135 -0
  136. package/src/mcp/builtin/collections/findDistinctTool.ts +120 -0
  137. package/src/mcp/builtin/collections/findTool.ts +56 -16
  138. package/src/mcp/builtin/collections/findVersionByIDTool.ts +110 -0
  139. package/src/mcp/builtin/collections/findVersionsTool.ts +155 -0
  140. package/src/mcp/builtin/collections/formatCollectionError.ts +1 -1
  141. package/src/mcp/builtin/collections/getCollectionSchemaTool.ts +18 -0
  142. package/src/mcp/builtin/collections/restoreVersionTool.ts +108 -0
  143. package/src/mcp/builtin/collections/updateTool.ts +14 -14
  144. package/src/mcp/builtin/getConfigInfoTool.ts +29 -4
  145. package/src/mcp/builtin/globals/countVersionsTool.ts +69 -0
  146. package/src/mcp/builtin/globals/findTool.ts +25 -16
  147. package/src/mcp/builtin/globals/findVersionByIDTool.ts +104 -0
  148. package/src/mcp/builtin/globals/findVersionsTool.ts +148 -0
  149. package/src/mcp/builtin/globals/getGlobalSchemaTool.ts +13 -0
  150. package/src/mcp/builtin/globals/restoreVersionTool.ts +100 -0
  151. package/src/mcp/builtin/globals/updateTool.ts +14 -14
  152. package/src/mcp/builtinTools.ts +72 -16
  153. package/src/mcp/sanitizeMCPConfig.ts +47 -30
  154. package/src/stdio.ts +23 -8
  155. package/src/types.ts +57 -92
  156. package/src/utils/getPluginConfig.ts +1 -1
  157. package/dist/collection/getAccessField.d.ts +0 -12
  158. package/dist/collection/getAccessField.d.ts.map +0 -1
  159. package/dist/collection/getAccessField.js +0 -72
  160. package/dist/collection/getAccessField.js.map +0 -1
  161. package/dist/collection/index.d.ts +0 -6
  162. package/dist/collection/index.d.ts.map +0 -1
  163. package/dist/collection/index.js +0 -105
  164. package/dist/collection/index.js.map +0 -1
  165. package/dist/components/APIKeyField/index.client.d.ts +0 -9
  166. package/dist/components/APIKeyField/index.client.d.ts.map +0 -1
  167. package/dist/components/APIKeyField/index.client.js +0 -85
  168. package/dist/components/APIKeyField/index.client.js.map +0 -1
  169. package/dist/components/APIKeyField/index.css +0 -105
  170. package/dist/components/APIKeysEmptyState/index.client.d.ts +0 -4
  171. package/dist/components/APIKeysEmptyState/index.client.d.ts.map +0 -1
  172. package/dist/components/APIKeysEmptyState/index.client.js +0 -21
  173. package/dist/components/APIKeysEmptyState/index.client.js.map +0 -1
  174. package/dist/components/AccessField/index.client.d.ts +0 -10
  175. package/dist/components/AccessField/index.client.d.ts.map +0 -1
  176. package/dist/components/AccessField/index.client.js +0 -247
  177. package/dist/components/AccessField/index.client.js.map +0 -1
  178. package/dist/components/AccessField/index.css +0 -99
  179. package/dist/components/SettingsMenu/index.client.d.ts +0 -8
  180. package/dist/components/SettingsMenu/index.client.d.ts.map +0 -1
  181. package/dist/components/SettingsMenu/index.client.js +0 -29
  182. package/dist/components/SettingsMenu/index.client.js.map +0 -1
  183. package/dist/translations/index.d.ts +0 -11
  184. package/dist/translations/index.d.ts.map +0 -1
  185. package/dist/translations/index.js +0 -92
  186. package/dist/translations/index.js.map +0 -1
  187. package/dist/translations/languages/ar.d.ts +0 -31
  188. package/dist/translations/languages/ar.d.ts.map +0 -1
  189. package/dist/translations/languages/ar.js +0 -34
  190. package/dist/translations/languages/ar.js.map +0 -1
  191. package/dist/translations/languages/az.d.ts +0 -31
  192. package/dist/translations/languages/az.d.ts.map +0 -1
  193. package/dist/translations/languages/az.js +0 -34
  194. package/dist/translations/languages/az.js.map +0 -1
  195. package/dist/translations/languages/bg.d.ts +0 -31
  196. package/dist/translations/languages/bg.d.ts.map +0 -1
  197. package/dist/translations/languages/bg.js +0 -34
  198. package/dist/translations/languages/bg.js.map +0 -1
  199. package/dist/translations/languages/bnBd.d.ts +0 -31
  200. package/dist/translations/languages/bnBd.d.ts.map +0 -1
  201. package/dist/translations/languages/bnBd.js +0 -34
  202. package/dist/translations/languages/bnBd.js.map +0 -1
  203. package/dist/translations/languages/bnIn.d.ts +0 -31
  204. package/dist/translations/languages/bnIn.d.ts.map +0 -1
  205. package/dist/translations/languages/bnIn.js +0 -34
  206. package/dist/translations/languages/bnIn.js.map +0 -1
  207. package/dist/translations/languages/ca.d.ts +0 -31
  208. package/dist/translations/languages/ca.d.ts.map +0 -1
  209. package/dist/translations/languages/ca.js +0 -34
  210. package/dist/translations/languages/ca.js.map +0 -1
  211. package/dist/translations/languages/cs.d.ts +0 -31
  212. package/dist/translations/languages/cs.d.ts.map +0 -1
  213. package/dist/translations/languages/cs.js +0 -34
  214. package/dist/translations/languages/cs.js.map +0 -1
  215. package/dist/translations/languages/da.d.ts +0 -31
  216. package/dist/translations/languages/da.d.ts.map +0 -1
  217. package/dist/translations/languages/da.js +0 -34
  218. package/dist/translations/languages/da.js.map +0 -1
  219. package/dist/translations/languages/de.d.ts +0 -31
  220. package/dist/translations/languages/de.d.ts.map +0 -1
  221. package/dist/translations/languages/de.js +0 -34
  222. package/dist/translations/languages/de.js.map +0 -1
  223. package/dist/translations/languages/en.d.ts +0 -31
  224. package/dist/translations/languages/en.d.ts.map +0 -1
  225. package/dist/translations/languages/en.js +0 -34
  226. package/dist/translations/languages/en.js.map +0 -1
  227. package/dist/translations/languages/es.d.ts +0 -31
  228. package/dist/translations/languages/es.d.ts.map +0 -1
  229. package/dist/translations/languages/es.js +0 -34
  230. package/dist/translations/languages/es.js.map +0 -1
  231. package/dist/translations/languages/et.d.ts +0 -31
  232. package/dist/translations/languages/et.d.ts.map +0 -1
  233. package/dist/translations/languages/et.js +0 -34
  234. package/dist/translations/languages/et.js.map +0 -1
  235. package/dist/translations/languages/fa.d.ts +0 -31
  236. package/dist/translations/languages/fa.d.ts.map +0 -1
  237. package/dist/translations/languages/fa.js +0 -34
  238. package/dist/translations/languages/fa.js.map +0 -1
  239. package/dist/translations/languages/fr.d.ts +0 -31
  240. package/dist/translations/languages/fr.d.ts.map +0 -1
  241. package/dist/translations/languages/fr.js +0 -34
  242. package/dist/translations/languages/fr.js.map +0 -1
  243. package/dist/translations/languages/he.d.ts +0 -31
  244. package/dist/translations/languages/he.d.ts.map +0 -1
  245. package/dist/translations/languages/he.js +0 -34
  246. package/dist/translations/languages/he.js.map +0 -1
  247. package/dist/translations/languages/hr.d.ts +0 -31
  248. package/dist/translations/languages/hr.d.ts.map +0 -1
  249. package/dist/translations/languages/hr.js +0 -34
  250. package/dist/translations/languages/hr.js.map +0 -1
  251. package/dist/translations/languages/hu.d.ts +0 -31
  252. package/dist/translations/languages/hu.d.ts.map +0 -1
  253. package/dist/translations/languages/hu.js +0 -34
  254. package/dist/translations/languages/hu.js.map +0 -1
  255. package/dist/translations/languages/hy.d.ts +0 -31
  256. package/dist/translations/languages/hy.d.ts.map +0 -1
  257. package/dist/translations/languages/hy.js +0 -34
  258. package/dist/translations/languages/hy.js.map +0 -1
  259. package/dist/translations/languages/id.d.ts +0 -31
  260. package/dist/translations/languages/id.d.ts.map +0 -1
  261. package/dist/translations/languages/id.js +0 -34
  262. package/dist/translations/languages/id.js.map +0 -1
  263. package/dist/translations/languages/is.d.ts +0 -31
  264. package/dist/translations/languages/is.d.ts.map +0 -1
  265. package/dist/translations/languages/is.js +0 -34
  266. package/dist/translations/languages/is.js.map +0 -1
  267. package/dist/translations/languages/it.d.ts +0 -31
  268. package/dist/translations/languages/it.d.ts.map +0 -1
  269. package/dist/translations/languages/it.js +0 -34
  270. package/dist/translations/languages/it.js.map +0 -1
  271. package/dist/translations/languages/ja.d.ts +0 -31
  272. package/dist/translations/languages/ja.d.ts.map +0 -1
  273. package/dist/translations/languages/ja.js +0 -34
  274. package/dist/translations/languages/ja.js.map +0 -1
  275. package/dist/translations/languages/ko.d.ts +0 -31
  276. package/dist/translations/languages/ko.d.ts.map +0 -1
  277. package/dist/translations/languages/ko.js +0 -34
  278. package/dist/translations/languages/ko.js.map +0 -1
  279. package/dist/translations/languages/lt.d.ts +0 -31
  280. package/dist/translations/languages/lt.d.ts.map +0 -1
  281. package/dist/translations/languages/lt.js +0 -34
  282. package/dist/translations/languages/lt.js.map +0 -1
  283. package/dist/translations/languages/lv.d.ts +0 -31
  284. package/dist/translations/languages/lv.d.ts.map +0 -1
  285. package/dist/translations/languages/lv.js +0 -34
  286. package/dist/translations/languages/lv.js.map +0 -1
  287. package/dist/translations/languages/my.d.ts +0 -31
  288. package/dist/translations/languages/my.d.ts.map +0 -1
  289. package/dist/translations/languages/my.js +0 -34
  290. package/dist/translations/languages/my.js.map +0 -1
  291. package/dist/translations/languages/nb.d.ts +0 -31
  292. package/dist/translations/languages/nb.d.ts.map +0 -1
  293. package/dist/translations/languages/nb.js +0 -34
  294. package/dist/translations/languages/nb.js.map +0 -1
  295. package/dist/translations/languages/nl.d.ts +0 -31
  296. package/dist/translations/languages/nl.d.ts.map +0 -1
  297. package/dist/translations/languages/nl.js +0 -34
  298. package/dist/translations/languages/nl.js.map +0 -1
  299. package/dist/translations/languages/pl.d.ts +0 -31
  300. package/dist/translations/languages/pl.d.ts.map +0 -1
  301. package/dist/translations/languages/pl.js +0 -34
  302. package/dist/translations/languages/pl.js.map +0 -1
  303. package/dist/translations/languages/pt.d.ts +0 -31
  304. package/dist/translations/languages/pt.d.ts.map +0 -1
  305. package/dist/translations/languages/pt.js +0 -34
  306. package/dist/translations/languages/pt.js.map +0 -1
  307. package/dist/translations/languages/ro.d.ts +0 -31
  308. package/dist/translations/languages/ro.d.ts.map +0 -1
  309. package/dist/translations/languages/ro.js +0 -34
  310. package/dist/translations/languages/ro.js.map +0 -1
  311. package/dist/translations/languages/rs.d.ts +0 -31
  312. package/dist/translations/languages/rs.d.ts.map +0 -1
  313. package/dist/translations/languages/rs.js +0 -34
  314. package/dist/translations/languages/rs.js.map +0 -1
  315. package/dist/translations/languages/rsLatin.d.ts +0 -31
  316. package/dist/translations/languages/rsLatin.d.ts.map +0 -1
  317. package/dist/translations/languages/rsLatin.js +0 -34
  318. package/dist/translations/languages/rsLatin.js.map +0 -1
  319. package/dist/translations/languages/ru.d.ts +0 -31
  320. package/dist/translations/languages/ru.d.ts.map +0 -1
  321. package/dist/translations/languages/ru.js +0 -34
  322. package/dist/translations/languages/ru.js.map +0 -1
  323. package/dist/translations/languages/sk.d.ts +0 -31
  324. package/dist/translations/languages/sk.d.ts.map +0 -1
  325. package/dist/translations/languages/sk.js +0 -34
  326. package/dist/translations/languages/sk.js.map +0 -1
  327. package/dist/translations/languages/sl.d.ts +0 -31
  328. package/dist/translations/languages/sl.d.ts.map +0 -1
  329. package/dist/translations/languages/sl.js +0 -34
  330. package/dist/translations/languages/sl.js.map +0 -1
  331. package/dist/translations/languages/sv.d.ts +0 -31
  332. package/dist/translations/languages/sv.d.ts.map +0 -1
  333. package/dist/translations/languages/sv.js +0 -34
  334. package/dist/translations/languages/sv.js.map +0 -1
  335. package/dist/translations/languages/ta.d.ts +0 -31
  336. package/dist/translations/languages/ta.d.ts.map +0 -1
  337. package/dist/translations/languages/ta.js +0 -34
  338. package/dist/translations/languages/ta.js.map +0 -1
  339. package/dist/translations/languages/th.d.ts +0 -31
  340. package/dist/translations/languages/th.d.ts.map +0 -1
  341. package/dist/translations/languages/th.js +0 -34
  342. package/dist/translations/languages/th.js.map +0 -1
  343. package/dist/translations/languages/tr.d.ts +0 -31
  344. package/dist/translations/languages/tr.d.ts.map +0 -1
  345. package/dist/translations/languages/tr.js +0 -34
  346. package/dist/translations/languages/tr.js.map +0 -1
  347. package/dist/translations/languages/uk.d.ts +0 -31
  348. package/dist/translations/languages/uk.d.ts.map +0 -1
  349. package/dist/translations/languages/uk.js +0 -34
  350. package/dist/translations/languages/uk.js.map +0 -1
  351. package/dist/translations/languages/vi.d.ts +0 -31
  352. package/dist/translations/languages/vi.d.ts.map +0 -1
  353. package/dist/translations/languages/vi.js +0 -34
  354. package/dist/translations/languages/vi.js.map +0 -1
  355. package/dist/translations/languages/zh.d.ts +0 -31
  356. package/dist/translations/languages/zh.d.ts.map +0 -1
  357. package/dist/translations/languages/zh.js +0 -34
  358. package/dist/translations/languages/zh.js.map +0 -1
  359. package/dist/translations/languages/zhTw.d.ts +0 -31
  360. package/dist/translations/languages/zhTw.d.ts.map +0 -1
  361. package/dist/translations/languages/zhTw.js +0 -34
  362. package/dist/translations/languages/zhTw.js.map +0 -1
  363. package/dist/translations/types.d.ts +0 -32
  364. package/dist/translations/types.d.ts.map +0 -1
  365. package/dist/translations/types.js +0 -3
  366. package/dist/translations/types.js.map +0 -1
  367. package/src/collection/getAccessField.ts +0 -84
  368. package/src/collection/index.ts +0 -105
  369. package/src/components/APIKeyField/index.client.tsx +0 -73
  370. package/src/components/APIKeyField/index.css +0 -105
  371. package/src/components/APIKeysEmptyState/index.client.tsx +0 -36
  372. package/src/components/AccessField/index.client.tsx +0 -299
  373. package/src/components/AccessField/index.css +0 -99
  374. package/src/components/SettingsMenu/index.client.tsx +0 -34
  375. package/src/translations/index.ts +0 -108
  376. package/src/translations/languages/ar.ts +0 -35
  377. package/src/translations/languages/az.ts +0 -35
  378. package/src/translations/languages/bg.ts +0 -35
  379. package/src/translations/languages/bnBd.ts +0 -35
  380. package/src/translations/languages/bnIn.ts +0 -35
  381. package/src/translations/languages/ca.ts +0 -35
  382. package/src/translations/languages/cs.ts +0 -35
  383. package/src/translations/languages/da.ts +0 -35
  384. package/src/translations/languages/de.ts +0 -35
  385. package/src/translations/languages/en.ts +0 -35
  386. package/src/translations/languages/es.ts +0 -35
  387. package/src/translations/languages/et.ts +0 -35
  388. package/src/translations/languages/fa.ts +0 -35
  389. package/src/translations/languages/fr.ts +0 -35
  390. package/src/translations/languages/he.ts +0 -35
  391. package/src/translations/languages/hr.ts +0 -35
  392. package/src/translations/languages/hu.ts +0 -35
  393. package/src/translations/languages/hy.ts +0 -35
  394. package/src/translations/languages/id.ts +0 -35
  395. package/src/translations/languages/is.ts +0 -35
  396. package/src/translations/languages/it.ts +0 -35
  397. package/src/translations/languages/ja.ts +0 -35
  398. package/src/translations/languages/ko.ts +0 -35
  399. package/src/translations/languages/lt.ts +0 -35
  400. package/src/translations/languages/lv.ts +0 -35
  401. package/src/translations/languages/my.ts +0 -35
  402. package/src/translations/languages/nb.ts +0 -35
  403. package/src/translations/languages/nl.ts +0 -35
  404. package/src/translations/languages/pl.ts +0 -35
  405. package/src/translations/languages/pt.ts +0 -35
  406. package/src/translations/languages/ro.ts +0 -35
  407. package/src/translations/languages/rs.ts +0 -35
  408. package/src/translations/languages/rsLatin.ts +0 -35
  409. package/src/translations/languages/ru.ts +0 -35
  410. package/src/translations/languages/sk.ts +0 -35
  411. package/src/translations/languages/sl.ts +0 -35
  412. package/src/translations/languages/sv.ts +0 -35
  413. package/src/translations/languages/ta.ts +0 -35
  414. package/src/translations/languages/th.ts +0 -35
  415. package/src/translations/languages/tr.ts +0 -35
  416. package/src/translations/languages/uk.ts +0 -35
  417. package/src/translations/languages/vi.ts +0 -35
  418. package/src/translations/languages/zh.ts +0 -35
  419. package/src/translations/languages/zhTw.ts +0 -35
  420. package/src/translations/types.ts +0 -34
package/src/stdio.ts CHANGED
@@ -6,8 +6,9 @@ import { fileURLToPath, pathToFileURL } from 'node:url'
6
6
  import { createLocalReq, getPayload } from 'payload'
7
7
  import { findConfig } from 'payload/node'
8
8
 
9
- import type { AuthorizedMCP, SanitizedMCPPluginConfig } from './types.js'
9
+ import type { SanitizedMCPPluginConfig } from './types.js'
10
10
 
11
+ import { getAuthorizedMCP } from './endpoint/access.js'
11
12
  import { buildMcpServer } from './mcp/buildMcpServer.js'
12
13
  import { sanitizeMCPConfig } from './mcp/sanitizeMCPConfig.js'
13
14
  import { getPluginConfig } from './utils/getPluginConfig.js'
@@ -16,8 +17,9 @@ import { resolveProjectRoot } from './utils/resolveProjectRoot.js'
16
17
  /**
17
18
  * Stdio adapter for the Payload MCP server.
18
19
  *
19
- * Do not use in production. There's no auth; whoever can spawn the process gets
20
- * full access to your local data.
20
+ * Pass PAYLOAD_MCP_AUTHORIZATION when stdio should authenticate with the same
21
+ * Payload auth header as HTTP. In development, PAYLOAD_MCP_OVERRIDE_ACCESS=true
22
+ * skips access control for local setup.
21
23
  */
22
24
  export const runMcpStdio = async (): Promise<void> => {
23
25
  /**
@@ -62,14 +64,27 @@ export const runMcpStdio = async (): Promise<void> => {
62
64
  ;(payload.config.plugins ??= []).push(fakePluginFn)
63
65
  }
64
66
 
65
- const authorizedMCP: AuthorizedMCP = {
66
- items: pluginConfig.items,
67
- overrideAccess: true,
68
- user: null,
67
+ const overrideAccessEnv = process.env.PAYLOAD_MCP_OVERRIDE_ACCESS
68
+ let overrideAccess = false
69
+
70
+ if (overrideAccessEnv === 'true') {
71
+ overrideAccess = true
72
+ } else if (overrideAccessEnv && overrideAccessEnv !== 'false') {
73
+ throw new Error('PAYLOAD_MCP_OVERRIDE_ACCESS must be "true" or "false".')
74
+ }
75
+
76
+ if (overrideAccess && process.env.NODE_ENV !== 'development') {
77
+ throw new Error('PAYLOAD_MCP_OVERRIDE_ACCESS is only available in development.')
78
+ }
79
+
80
+ const headers = new Headers()
81
+ if (process.env.PAYLOAD_MCP_AUTHORIZATION) {
82
+ headers.set('Authorization', process.env.PAYLOAD_MCP_AUTHORIZATION)
69
83
  }
70
84
 
71
- const req = await createLocalReq({}, payload)
85
+ const req = await createLocalReq({ req: { headers } }, payload)
72
86
  req.payloadAPI = 'MCP' as const
87
+ const authorizedMCP = await getAuthorizedMCP({ overrideAccess, req })
73
88
 
74
89
  const server = buildMcpServer({ authorizedMCP, pluginConfig, req })
75
90
 
package/src/types.ts CHANGED
@@ -6,18 +6,19 @@ import type {
6
6
  ResourceTemplate,
7
7
  ServerContext,
8
8
  StandardSchemaWithJSON,
9
+ ToolAnnotations,
9
10
  } from '@modelcontextprotocol/server'
10
11
  import type {
11
12
  AuthCollectionSlug,
12
- CollectionConfig,
13
13
  CollectionSlug,
14
- DefaultDocumentIDType,
15
14
  GlobalSlug,
16
15
  MaybePromise,
17
16
  PayloadRequest,
17
+ SanitizedPermissions,
18
18
  TypedUser,
19
19
  } from 'payload'
20
20
 
21
+ import type { GetAuthorizedMCPArgs } from './endpoint/access.js'
21
22
  import type {
22
23
  MCPCollectionAuthToolName,
23
24
  MCPCollectionBuiltinName,
@@ -26,8 +27,8 @@ import type {
26
27
 
27
28
  export type { MCPCollectionAuthToolName, MCPCollectionBuiltinName, MCPGlobalBuiltinName }
28
29
 
29
- /** Re-exported from `@modelcontextprotocol/server` — the JSON Schema shape the MCP runtime validates against. */
30
- export type { JsonSchemaType, StandardSchemaWithJSON }
30
+ /** Re-exported from `@modelcontextprotocol/server` — common MCP types used in plugin config. */
31
+ export type { JsonSchemaType, StandardSchemaWithJSON, ToolAnnotations }
31
32
 
32
33
  /**
33
34
  * What a tool's `input` (or a prompt's `argsSchema`) can be — either a raw
@@ -35,27 +36,6 @@ export type { JsonSchemaType, StandardSchemaWithJSON }
35
36
  */
36
37
  export type ToolInputSchema = JsonSchemaType | StandardSchemaWithJSON
37
38
 
38
- /**
39
- * Serializable mirror of `SanitizedMCPPluginConfig` for client components —
40
- * the full sanitized config carries functions (tool handlers, etc.) that can't
41
- * cross the server→client boundary. Built by `sanitizeClientPluginConfig` and
42
- * passed to the `AccessField` component via `clientProps`.
43
- *
44
- * @internal
45
- */
46
- export type ClientMCPPluginConfig = {
47
- items: Array<{
48
- collectionSlug?: string
49
- configKey: string
50
- description?: string
51
- globalSlug?: string
52
- /** Admin-UI bucket for collection/global tools: built-in CRUD, auth, or custom. */
53
- group?: 'auth' | 'custom' | 'operations'
54
- label: string
55
- type: 'collectionTool' | 'globalTool' | 'prompt' | 'resource' | 'tool'
56
- }>
57
- }
58
-
59
39
  export type MCPToolResponse = {
60
40
  content: ContentBlock[]
61
41
  /**
@@ -82,6 +62,19 @@ export type TypedInput<TSchema> = TSchema extends StandardSchemaWithJSON
82
62
  : StandardSchemaWithJSON.InferOutput<TSchema>
83
63
  : Record<string, unknown>
84
64
 
65
+ export type MCPAccessArgs = {
66
+ permissions?: SanitizedPermissions
67
+ req: PayloadRequest
68
+ }
69
+
70
+ export type CollectionMCPAccessArgs = {
71
+ collectionSlug: CollectionSlug
72
+ } & MCPAccessArgs
73
+
74
+ export type GlobalMCPAccessArgs = {
75
+ globalSlug: GlobalSlug
76
+ } & MCPAccessArgs
77
+
85
78
  export type ToolHandlerArgs<TSchema = undefined> = {
86
79
  authorizedMCP: AuthorizedMCP
87
80
  input: TypedInput<TSchema>
@@ -98,6 +91,8 @@ export type GlobalToolHandlerArgs<TSchema = undefined> = {
98
91
  } & ToolHandlerArgs<TSchema>
99
92
 
100
93
  export type Tool<TSchema extends ToolInputSchema | undefined = ToolInputSchema | undefined> = {
94
+ access?: (args: MCPAccessArgs) => MaybePromise<boolean>
95
+ annotations?: ToolAnnotations
101
96
  description: string
102
97
  handler: (args: ToolHandlerArgs<TSchema>) => MaybePromise<MCPToolResponse>
103
98
  input?: TSchema
@@ -110,22 +105,34 @@ export type Tool<TSchema extends ToolInputSchema | undefined = ToolInputSchema |
110
105
  export type CollectionTool<
111
106
  TSchema extends ToolInputSchema | undefined = ToolInputSchema | undefined,
112
107
  > = {
108
+ access?: (args: CollectionMCPAccessArgs) => MaybePromise<boolean>
113
109
  handler: (args: CollectionToolHandlerArgs<TSchema>) => MaybePromise<MCPToolResponse>
114
110
  input?: TSchema
115
- } & Pick<Tool, 'description' | 'overrideResponse'>
111
+ } & Pick<Tool, 'annotations' | 'description' | 'overrideResponse'>
116
112
 
117
113
  export type GlobalTool<TSchema extends ToolInputSchema | undefined = ToolInputSchema | undefined> =
118
114
  {
115
+ access?: (args: GlobalMCPAccessArgs) => MaybePromise<boolean>
119
116
  handler: (args: GlobalToolHandlerArgs<TSchema>) => MaybePromise<MCPToolResponse>
120
117
  input?: TSchema
121
- } & Pick<Tool, 'description' | 'overrideResponse'>
118
+ } & Pick<Tool, 'annotations' | 'description' | 'overrideResponse'>
122
119
 
123
120
  /**
124
121
  * Configures (or disables) a built-in tool without replacing it.
125
122
  * `handler?: never` prevents a full `CollectionTool`/`GlobalTool` (which has a
126
123
  * required handler) from being silently accepted at a built-in key slot.
127
124
  */
128
- export type MCPBuiltInToolOverride = {
125
+ export type MCPBuiltInCollectionToolOverride = {
126
+ access?: (args: CollectionMCPAccessArgs) => MaybePromise<boolean>
127
+ annotations?: ToolAnnotations
128
+ description?: string
129
+ handler?: never
130
+ overrideResponse?: MCPResponseOverride
131
+ }
132
+
133
+ export type MCPBuiltInGlobalToolOverride = {
134
+ access?: (args: GlobalMCPAccessArgs) => MaybePromise<boolean>
135
+ annotations?: ToolAnnotations
129
136
  description?: string
130
137
  handler?: never
131
138
  overrideResponse?: MCPResponseOverride
@@ -139,13 +146,13 @@ export type MCPBuiltInToolOverride = {
139
146
  export type MCPTopLevelToolEntry = Tool
140
147
 
141
148
  export type MCPCollectionToolsMap = {
142
- [customToolName: string]: boolean | CollectionTool | MCPBuiltInToolOverride | undefined
149
+ [customToolName: string]: boolean | CollectionTool | MCPBuiltInCollectionToolOverride | undefined
143
150
  } & {
144
- [K in MCPCollectionBuiltinName]?: false | MCPBuiltInToolOverride
151
+ [K in MCPCollectionBuiltinName]?: false | MCPBuiltInCollectionToolOverride
145
152
  }
146
153
 
147
154
  export type MCPAuthCollectionToolsMap = {
148
- [K in MCPCollectionAuthToolName]?: MCPBuiltInToolOverride | true
155
+ [K in MCPCollectionAuthToolName]?: MCPBuiltInCollectionToolOverride | true
149
156
  } & MCPCollectionToolsMap
150
157
 
151
158
  /** Auth-enabled collections get auth-tool name autocomplete; others get CRUD-only. */
@@ -154,9 +161,9 @@ export type MCPToolsMapForCollection<Slug extends CollectionSlug> = Slug extends
154
161
  : MCPCollectionToolsMap
155
162
 
156
163
  export type MCPGlobalToolsMap = {
157
- [customToolName: string]: boolean | GlobalTool | MCPBuiltInToolOverride | undefined
164
+ [customToolName: string]: boolean | GlobalTool | MCPBuiltInGlobalToolOverride | undefined
158
165
  } & {
159
- [K in MCPGlobalBuiltinName]?: false | MCPBuiltInToolOverride
166
+ [K in MCPGlobalBuiltinName]?: false | MCPBuiltInGlobalToolOverride
160
167
  }
161
168
 
162
169
  export type MCPTopLevelToolsMap = Record<string, Tool>
@@ -168,6 +175,7 @@ export type PromptHandlerArgs<TSchema = undefined> = {
168
175
  }
169
176
 
170
177
  export type Prompt<TSchema extends ToolInputSchema = ToolInputSchema> = {
178
+ access?: (args: MCPAccessArgs) => MaybePromise<boolean>
171
179
  argsSchema: TSchema
172
180
  description: string
173
181
  handler: (args: PromptHandlerArgs<TSchema>) => MaybePromise<{
@@ -185,6 +193,7 @@ export type ResourceHandlerArgs = {
185
193
  }
186
194
 
187
195
  export type Resource = {
196
+ access?: (args: MCPAccessArgs) => MaybePromise<boolean>
188
197
  description: string
189
198
  handler: (args: ResourceHandlerArgs) => MaybePromise<{
190
199
  contents: Array<{ text: string; uri: string }>
@@ -218,7 +227,7 @@ export type MCPPluginConfig = {
218
227
  collections?: {
219
228
  [Slug in CollectionSlug]?: MCPPluginCollectionConfig<Slug>
220
229
  }
221
- /** Skip MCP registration. The API key collection is still added (so DB / types stay stable). */
230
+ /** Skip MCP endpoint registration. */
222
231
  disabled?: boolean
223
232
  globals?: {
224
233
  [Slug in GlobalSlug]?: MCPPluginGlobalConfig
@@ -227,25 +236,21 @@ export type MCPPluginConfig = {
227
236
  serverOptions?: MCPServerOptions
228
237
  verboseLogs?: boolean
229
238
  }
230
- overrideApiKeyCollection?: (collection: CollectionConfig) => CollectionConfig
231
- /** Replace the default API-key auth with a custom resolver. */
232
- overrideAuth?: (args: {
233
- getAPIKeyDoc: (overrideApiKey?: string) => Promise<MCPAPIKeysDoc>
234
- getAuthorizedMCP: (args: { apiKeyDoc: MCPAPIKeysDoc }) => AuthorizedMCP
235
- pluginConfig: SanitizedMCPPluginConfig
236
- req: PayloadRequest
237
- }) => MaybePromise<AuthorizedMCP>
239
+ /** Replace the default MCP authorization resolver. */
240
+ overrideGetAuthorizedMCP?: (
241
+ args: {
242
+ pluginConfig: SanitizedMCPPluginConfig
243
+ } & GetAuthorizedMCPArgs,
244
+ ) => MaybePromise<AuthorizedMCP>
238
245
  prompts?: Record<string, Prompt>
239
246
  resources?: Record<string, Resource>
240
247
  /** Cross-cutting tools (not scoped to any collection or global). */
241
248
  tools?: MCPTopLevelToolsMap
242
- userCollection?: CollectionSlug
243
249
  }
244
250
 
245
251
  export type SanitizedMCPPluginConfig = {
246
252
  items: MCPItem[]
247
- userCollection: CollectionSlug
248
- } & Pick<MCPPluginConfig, 'disabled' | 'mcp' | 'overrideApiKeyCollection' | 'overrideAuth'>
253
+ } & Pick<MCPPluginConfig, 'disabled' | 'mcp' | 'overrideGetAuthorizedMCP'>
249
254
 
250
255
  export type MCPServerOptions = {
251
256
  options?: ConstructorParameters<typeof McpServer>[1]
@@ -253,52 +258,12 @@ export type MCPServerOptions = {
253
258
  }
254
259
 
255
260
  /**
256
- * Nested access tree as stored in the collection.
257
- * A `false` leaf disables that tool; missing keys defer to
258
- * defaults (built-in CRUD is on, opt-in tools are off).
259
- */
260
- export type MCPAPIKeysDocAccessTree = {
261
- collections?: {
262
- [CollectionSlug: CollectionSlug]: {
263
- [ToolKey: string]: boolean
264
- }
265
- }
266
- globals?: {
267
- [GlobalSlug: GlobalSlug]: {
268
- [ToolKey: string]: boolean
269
- }
270
- }
271
- prompts?: {
272
- [PromptKey: string]: boolean
273
- }
274
- resources?: {
275
- [ResourceKey: string]: boolean
276
- }
277
- tools?: {
278
- [ToolKey: string]: boolean
279
- }
280
- }
281
-
282
- /**
283
- * Stored on `payload-mcp-api-keys` docs
284
- */
285
- export type MCPAPIKeysDoc = {
286
- access: MCPAPIKeysDocAccessTree
287
- apiKey?: string
288
- apiKeyIndex?: string
289
- id: DefaultDocumentIDType
290
- lastUsed?: string
291
- overrideAccess?: boolean
292
- user: null | TypedUser
293
- }
294
-
295
- /**
296
- * One MCP primitive plus the metadata needed for access checks, admin UI, and
261
+ * One MCP primitive plus the metadata needed for config-driven filtering and
297
262
  * registration.
298
263
  *
299
- * - `configKey`: the config/API-key identifier, e.g. `find` or `echo`.
264
+ * - `configKey`: the config identifier, e.g. `find` or `echo`.
300
265
  * - `mcpName`: the MCP wire name, e.g. `findDocuments` or `echo`.
301
- * - `label`: human-readable admin checkbox text.
266
+ * - `label`: human-readable display text.
302
267
  */
303
268
  export type MCPItemBase = {
304
269
  configKey: string
@@ -335,10 +300,10 @@ export type MCPItem =
335
300
  | GlobalMCPItem
336
301
 
337
302
  /**
338
- * The caller's identity + the MCP items they can use for this request. Returned
339
- * by `getAuthorizedMCP`; denied items are simply absent from `items`. Handlers
340
- * receive this via `args.authorizedMCP` so they can spread
341
- * `localAPIDefaults(authorizedMCP)` into every local API call.
303
+ * The caller's identity + the MCP items authorized for this request. Disabled
304
+ * items and items blocked by access callbacks or Payload operation access are
305
+ * absent from `items`. Tool handlers receive this via `args.authorizedMCP` so
306
+ * they can spread `localAPIDefaults(authorizedMCP)` into every local API call.
342
307
  */
343
308
  export type AuthorizedMCP = {
344
309
  items: MCPItem[]
@@ -5,7 +5,7 @@ import type { SanitizedMCPPluginConfig } from '../types.js'
5
5
  /**
6
6
  * Returns the sanitized plugin config — the form produced by
7
7
  * `sanitizeMCPConfig` and stashed back on the plugin's `options` during init.
8
- * Callers downstream of plugin init can rely on `items`, `userCollection`, etc.
8
+ * Callers downstream of plugin init can rely on `items` and other defaults
9
9
  * being fully resolved.
10
10
  */
11
11
  export const getPluginConfig: (args: { config: SanitizedConfig }) => SanitizedMCPPluginConfig = ({
@@ -1,12 +0,0 @@
1
- import type { JSONField } from 'payload';
2
- import type { SanitizedMCPPluginConfig } from '../types.js';
3
- /**
4
- * Returns the API key collection's `access` field — a JSON field whose value
5
- * is the `MCPAPIKeysDocAccessTree` the endpoint consults. The actual UI is
6
- * a custom client component (`AccessField`) which renders a permissions
7
- * matrix; the field's stored shape is just the runtime access tree.
8
- */
9
- export declare const getAccessField: ({ pluginConfig, }: {
10
- pluginConfig: SanitizedMCPPluginConfig;
11
- }) => JSONField;
12
- //# sourceMappingURL=getAccessField.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getAccessField.d.ts","sourceRoot":"","sources":["../../src/collection/getAccessField.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAExC,OAAO,KAAK,EAAkC,wBAAwB,EAAE,MAAM,aAAa,CAAA;AAQ3F;;;;;GAKG;AACH,eAAO,MAAM,cAAc,GAAI,mBAE5B;IACD,YAAY,EAAE,wBAAwB,CAAA;CACvC,KAAG,SAiBH,CAAA"}
@@ -1,72 +0,0 @@
1
- import { COLLECTION_AUTH_BUILTINS, COLLECTION_BUILTINS, GLOBAL_BUILTINS } from '../mcp/builtinTools.js';
2
- /**
3
- * Returns the API key collection's `access` field — a JSON field whose value
4
- * is the `MCPAPIKeysDocAccessTree` the endpoint consults. The actual UI is
5
- * a custom client component (`AccessField`) which renders a permissions
6
- * matrix; the field's stored shape is just the runtime access tree.
7
- */ export const getAccessField = ({ pluginConfig })=>{
8
- const clientPluginConfig = sanitizeClientPluginConfig(pluginConfig);
9
- return {
10
- name: 'access',
11
- type: 'json',
12
- admin: {
13
- components: {
14
- Field: {
15
- clientProps: {
16
- pluginConfig: clientPluginConfig
17
- },
18
- path: '@payloadcms/plugin-mcp/client#AccessField'
19
- }
20
- }
21
- },
22
- defaultValue: {},
23
- label: false
24
- };
25
- };
26
- /**
27
- * Strips the non-serializable parts of `SanitizedMCPPluginConfig` (handlers,
28
- * input/argsSchema functions, etc.) so the result is safe to thread to a
29
- * client component via `clientProps`.
30
- */ const sanitizeClientPluginConfig = (pluginConfig)=>({
31
- items: pluginConfig.items.map((item)=>{
32
- const group = itemGroup(item);
33
- return {
34
- ...item.type === 'collectionTool' ? {
35
- collectionSlug: item.collectionSlug
36
- } : {},
37
- ...item.type === 'globalTool' ? {
38
- globalSlug: item.globalSlug
39
- } : {},
40
- type: item.type,
41
- configKey: item.configKey,
42
- ...group === 'operations' ? {} : {
43
- description: itemDescription(item)
44
- },
45
- group,
46
- label: item.label
47
- };
48
- })
49
- });
50
- const itemDescription = (item)=>{
51
- if (item.type === 'prompt') {
52
- return item.prompt.description;
53
- }
54
- if (item.type === 'resource') {
55
- return item.resource.description;
56
- }
57
- return item.tool.description;
58
- };
59
- const itemGroup = (item)=>{
60
- if (item.type === 'collectionTool') {
61
- if (item.configKey in COLLECTION_BUILTINS) {
62
- return 'operations';
63
- }
64
- return item.configKey in COLLECTION_AUTH_BUILTINS ? 'auth' : 'custom';
65
- }
66
- if (item.type === 'globalTool') {
67
- return item.configKey in GLOBAL_BUILTINS ? 'operations' : 'custom';
68
- }
69
- return undefined;
70
- };
71
-
72
- //# sourceMappingURL=getAccessField.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/collection/getAccessField.ts"],"sourcesContent":["import type { JSONField } from 'payload'\n\nimport type { ClientMCPPluginConfig, MCPItem, SanitizedMCPPluginConfig } from '../types.js'\n\nimport {\n COLLECTION_AUTH_BUILTINS,\n COLLECTION_BUILTINS,\n GLOBAL_BUILTINS,\n} from '../mcp/builtinTools.js'\n\n/**\n * Returns the API key collection's `access` field — a JSON field whose value\n * is the `MCPAPIKeysDocAccessTree` the endpoint consults. The actual UI is\n * a custom client component (`AccessField`) which renders a permissions\n * matrix; the field's stored shape is just the runtime access tree.\n */\nexport const getAccessField = ({\n pluginConfig,\n}: {\n pluginConfig: SanitizedMCPPluginConfig\n}): JSONField => {\n const clientPluginConfig = sanitizeClientPluginConfig(pluginConfig)\n\n return {\n name: 'access',\n type: 'json',\n admin: {\n components: {\n Field: {\n clientProps: { pluginConfig: clientPluginConfig },\n path: '@payloadcms/plugin-mcp/client#AccessField',\n },\n },\n },\n defaultValue: {},\n label: false,\n }\n}\n\n/**\n * Strips the non-serializable parts of `SanitizedMCPPluginConfig` (handlers,\n * input/argsSchema functions, etc.) so the result is safe to thread to a\n * client component via `clientProps`.\n */\nconst sanitizeClientPluginConfig = (\n pluginConfig: SanitizedMCPPluginConfig,\n): ClientMCPPluginConfig => ({\n items: pluginConfig.items.map((item) => {\n const group = itemGroup(item)\n\n return {\n ...(item.type === 'collectionTool' ? { collectionSlug: item.collectionSlug } : {}),\n ...(item.type === 'globalTool' ? { globalSlug: item.globalSlug } : {}),\n type: item.type,\n configKey: item.configKey,\n ...(group === 'operations' ? {} : { description: itemDescription(item) }),\n group,\n label: item.label,\n }\n }),\n})\n\nconst itemDescription = (item: MCPItem): string => {\n if (item.type === 'prompt') {\n return item.prompt.description\n }\n if (item.type === 'resource') {\n return item.resource.description\n }\n return item.tool.description\n}\n\nconst itemGroup = (item: MCPItem): 'auth' | 'custom' | 'operations' | undefined => {\n if (item.type === 'collectionTool') {\n if (item.configKey in COLLECTION_BUILTINS) {\n return 'operations'\n }\n return item.configKey in COLLECTION_AUTH_BUILTINS ? 'auth' : 'custom'\n }\n if (item.type === 'globalTool') {\n return item.configKey in GLOBAL_BUILTINS ? 'operations' : 'custom'\n }\n return undefined\n}\n"],"names":["COLLECTION_AUTH_BUILTINS","COLLECTION_BUILTINS","GLOBAL_BUILTINS","getAccessField","pluginConfig","clientPluginConfig","sanitizeClientPluginConfig","name","type","admin","components","Field","clientProps","path","defaultValue","label","items","map","item","group","itemGroup","collectionSlug","globalSlug","configKey","description","itemDescription","prompt","resource","tool","undefined"],"mappings":"AAIA,SACEA,wBAAwB,EACxBC,mBAAmB,EACnBC,eAAe,QACV,yBAAwB;AAE/B;;;;;CAKC,GACD,OAAO,MAAMC,iBAAiB,CAAC,EAC7BC,YAAY,EAGb;IACC,MAAMC,qBAAqBC,2BAA2BF;IAEtD,OAAO;QACLG,MAAM;QACNC,MAAM;QACNC,OAAO;YACLC,YAAY;gBACVC,OAAO;oBACLC,aAAa;wBAAER,cAAcC;oBAAmB;oBAChDQ,MAAM;gBACR;YACF;QACF;QACAC,cAAc,CAAC;QACfC,OAAO;IACT;AACF,EAAC;AAED;;;;CAIC,GACD,MAAMT,6BAA6B,CACjCF,eAC2B,CAAA;QAC3BY,OAAOZ,aAAaY,KAAK,CAACC,GAAG,CAAC,CAACC;YAC7B,MAAMC,QAAQC,UAAUF;YAExB,OAAO;gBACL,GAAIA,KAAKV,IAAI,KAAK,mBAAmB;oBAAEa,gBAAgBH,KAAKG,cAAc;gBAAC,IAAI,CAAC,CAAC;gBACjF,GAAIH,KAAKV,IAAI,KAAK,eAAe;oBAAEc,YAAYJ,KAAKI,UAAU;gBAAC,IAAI,CAAC,CAAC;gBACrEd,MAAMU,KAAKV,IAAI;gBACfe,WAAWL,KAAKK,SAAS;gBACzB,GAAIJ,UAAU,eAAe,CAAC,IAAI;oBAAEK,aAAaC,gBAAgBP;gBAAM,CAAC;gBACxEC;gBACAJ,OAAOG,KAAKH,KAAK;YACnB;QACF;IACF,CAAA;AAEA,MAAMU,kBAAkB,CAACP;IACvB,IAAIA,KAAKV,IAAI,KAAK,UAAU;QAC1B,OAAOU,KAAKQ,MAAM,CAACF,WAAW;IAChC;IACA,IAAIN,KAAKV,IAAI,KAAK,YAAY;QAC5B,OAAOU,KAAKS,QAAQ,CAACH,WAAW;IAClC;IACA,OAAON,KAAKU,IAAI,CAACJ,WAAW;AAC9B;AAEA,MAAMJ,YAAY,CAACF;IACjB,IAAIA,KAAKV,IAAI,KAAK,kBAAkB;QAClC,IAAIU,KAAKK,SAAS,IAAItB,qBAAqB;YACzC,OAAO;QACT;QACA,OAAOiB,KAAKK,SAAS,IAAIvB,2BAA2B,SAAS;IAC/D;IACA,IAAIkB,KAAKV,IAAI,KAAK,cAAc;QAC9B,OAAOU,KAAKK,SAAS,IAAIrB,kBAAkB,eAAe;IAC5D;IACA,OAAO2B;AACT"}
@@ -1,6 +0,0 @@
1
- import type { CollectionConfig } from 'payload';
2
- import type { SanitizedMCPPluginConfig } from '../types.js';
3
- export declare const getAPIKeysCollection: ({ pluginConfig, }: {
4
- pluginConfig: SanitizedMCPPluginConfig;
5
- }) => CollectionConfig;
6
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/collection/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAI/C,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAA;AAkB3D,eAAO,MAAM,oBAAoB,GAAI,mBAElC;IACD,YAAY,EAAE,wBAAwB,CAAA;CACvC,KAAG,gBA8EH,CAAA"}
@@ -1,105 +0,0 @@
1
- import { createAPIKeyFields } from 'payload';
2
- import { getAccessField } from './getAccessField.js';
3
- const apiKeyStorageFields = createAPIKeyFields({
4
- apiKeyField: {
5
- admin: {
6
- components: {
7
- Field: '@payloadcms/plugin-mcp/client#APIKeyField'
8
- }
9
- },
10
- required: true
11
- },
12
- apiKeyIndexField: {
13
- index: true,
14
- required: true
15
- },
16
- includeEnableAPIKey: false
17
- });
18
- export const getAPIKeysCollection = ({ pluginConfig })=>{
19
- const collection = {
20
- slug: 'payload-mcp-api-keys',
21
- admin: {
22
- components: {
23
- views: {
24
- list: {
25
- NoResults: '@payloadcms/plugin-mcp/client#APIKeysEmptyState'
26
- }
27
- }
28
- },
29
- defaultColumns: [
30
- 'label',
31
- 'lastUsed',
32
- 'user'
33
- ],
34
- // Kept out of the main nav — reachable through the user menu's settings instead.
35
- group: false,
36
- useAsTitle: 'label'
37
- },
38
- fields: [
39
- ...apiKeyStorageFields,
40
- getAccessField({
41
- pluginConfig
42
- }),
43
- {
44
- name: 'label',
45
- type: 'text',
46
- admin: {
47
- description: ({ t })=>t('plugin-mcp:titleDescription'),
48
- position: 'sidebar'
49
- },
50
- label: ({ t })=>t('plugin-mcp:title')
51
- },
52
- {
53
- name: 'description',
54
- type: 'text',
55
- admin: {
56
- description: ({ t })=>t('plugin-mcp:descriptionDescription'),
57
- position: 'sidebar'
58
- },
59
- label: ({ t })=>t('plugin-mcp:description')
60
- },
61
- {
62
- name: 'lastUsed',
63
- type: 'date',
64
- admin: {
65
- date: {
66
- pickerAppearance: 'dayAndTime'
67
- },
68
- disabled: {
69
- field: true
70
- }
71
- },
72
- label: ({ t })=>t('plugin-mcp:lastUsed')
73
- },
74
- {
75
- name: 'user',
76
- type: 'relationship',
77
- admin: {
78
- description: ({ t })=>t('plugin-mcp:userDescription'),
79
- position: 'sidebar'
80
- },
81
- label: ({ t })=>t('general:user'),
82
- relationTo: pluginConfig.userCollection,
83
- required: true
84
- },
85
- {
86
- name: 'overrideAccess',
87
- type: 'checkbox',
88
- admin: {
89
- description: ({ t })=>t('plugin-mcp:overrideAccessDescription'),
90
- position: 'sidebar'
91
- },
92
- defaultValue: false,
93
- label: ({ t })=>t('plugin-mcp:overrideAccess')
94
- }
95
- ],
96
- labels: {
97
- plural: ({ t })=>`${t('plugin-mcp:mcp')} ${t('plugin-mcp:apiKeys')}`,
98
- singular: ({ t })=>`${t('plugin-mcp:mcp')} ${t('authentication:apiKey')}`
99
- },
100
- versions: false
101
- };
102
- return pluginConfig.overrideApiKeyCollection ? pluginConfig.overrideApiKeyCollection(collection) : collection;
103
- };
104
-
105
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/collection/index.ts"],"sourcesContent":["import type { CollectionConfig } from 'payload'\n\nimport { createAPIKeyFields } from 'payload'\n\nimport type { SanitizedMCPPluginConfig } from '../types.js'\n\nimport { getAccessField } from './getAccessField.js'\n\nconst apiKeyStorageFields = createAPIKeyFields({\n apiKeyField: {\n admin: {\n components: { Field: '@payloadcms/plugin-mcp/client#APIKeyField' },\n },\n required: true,\n },\n apiKeyIndexField: {\n index: true,\n required: true,\n },\n includeEnableAPIKey: false,\n})\n\nexport const getAPIKeysCollection = ({\n pluginConfig,\n}: {\n pluginConfig: SanitizedMCPPluginConfig\n}): CollectionConfig => {\n const collection: CollectionConfig = {\n slug: 'payload-mcp-api-keys',\n admin: {\n components: {\n views: {\n list: {\n NoResults: '@payloadcms/plugin-mcp/client#APIKeysEmptyState',\n },\n },\n },\n defaultColumns: ['label', 'lastUsed', 'user'],\n // Kept out of the main nav — reachable through the user menu's settings instead.\n group: false,\n useAsTitle: 'label',\n },\n fields: [\n ...apiKeyStorageFields,\n getAccessField({ pluginConfig }),\n {\n name: 'label',\n type: 'text',\n admin: {\n description: ({ t }) => t('plugin-mcp:titleDescription'),\n position: 'sidebar',\n },\n label: ({ t }) => t('plugin-mcp:title'),\n },\n {\n name: 'description',\n type: 'text',\n admin: {\n description: ({ t }) => t('plugin-mcp:descriptionDescription'),\n position: 'sidebar',\n },\n label: ({ t }) => t('plugin-mcp:description'),\n },\n {\n name: 'lastUsed',\n type: 'date',\n admin: {\n date: { pickerAppearance: 'dayAndTime' },\n disabled: { field: true },\n },\n label: ({ t }) => t('plugin-mcp:lastUsed'),\n },\n {\n name: 'user',\n type: 'relationship',\n admin: {\n description: ({ t }) => t('plugin-mcp:userDescription'),\n position: 'sidebar',\n },\n label: ({ t }) => t('general:user'),\n relationTo: pluginConfig.userCollection,\n required: true,\n },\n {\n name: 'overrideAccess',\n type: 'checkbox',\n admin: {\n description: ({ t }) => t('plugin-mcp:overrideAccessDescription'),\n position: 'sidebar',\n },\n defaultValue: false,\n label: ({ t }) => t('plugin-mcp:overrideAccess'),\n },\n ],\n labels: {\n plural: ({ t }) => `${t('plugin-mcp:mcp')} ${t('plugin-mcp:apiKeys')}`,\n singular: ({ t }) => `${t('plugin-mcp:mcp')} ${t('authentication:apiKey')}`,\n },\n versions: false,\n }\n\n return pluginConfig.overrideApiKeyCollection\n ? pluginConfig.overrideApiKeyCollection(collection)\n : collection\n}\n"],"names":["createAPIKeyFields","getAccessField","apiKeyStorageFields","apiKeyField","admin","components","Field","required","apiKeyIndexField","index","includeEnableAPIKey","getAPIKeysCollection","pluginConfig","collection","slug","views","list","NoResults","defaultColumns","group","useAsTitle","fields","name","type","description","t","position","label","date","pickerAppearance","disabled","field","relationTo","userCollection","defaultValue","labels","plural","singular","versions","overrideApiKeyCollection"],"mappings":"AAEA,SAASA,kBAAkB,QAAQ,UAAS;AAI5C,SAASC,cAAc,QAAQ,sBAAqB;AAEpD,MAAMC,sBAAsBF,mBAAmB;IAC7CG,aAAa;QACXC,OAAO;YACLC,YAAY;gBAAEC,OAAO;YAA4C;QACnE;QACAC,UAAU;IACZ;IACAC,kBAAkB;QAChBC,OAAO;QACPF,UAAU;IACZ;IACAG,qBAAqB;AACvB;AAEA,OAAO,MAAMC,uBAAuB,CAAC,EACnCC,YAAY,EAGb;IACC,MAAMC,aAA+B;QACnCC,MAAM;QACNV,OAAO;YACLC,YAAY;gBACVU,OAAO;oBACLC,MAAM;wBACJC,WAAW;oBACb;gBACF;YACF;YACAC,gBAAgB;gBAAC;gBAAS;gBAAY;aAAO;YAC7C,iFAAiF;YACjFC,OAAO;YACPC,YAAY;QACd;QACAC,QAAQ;eACHnB;YACHD,eAAe;gBAAEW;YAAa;YAC9B;gBACEU,MAAM;gBACNC,MAAM;gBACNnB,OAAO;oBACLoB,aAAa,CAAC,EAAEC,CAAC,EAAE,GAAKA,EAAE;oBAC1BC,UAAU;gBACZ;gBACAC,OAAO,CAAC,EAAEF,CAAC,EAAE,GAAKA,EAAE;YACtB;YACA;gBACEH,MAAM;gBACNC,MAAM;gBACNnB,OAAO;oBACLoB,aAAa,CAAC,EAAEC,CAAC,EAAE,GAAKA,EAAE;oBAC1BC,UAAU;gBACZ;gBACAC,OAAO,CAAC,EAAEF,CAAC,EAAE,GAAKA,EAAE;YACtB;YACA;gBACEH,MAAM;gBACNC,MAAM;gBACNnB,OAAO;oBACLwB,MAAM;wBAAEC,kBAAkB;oBAAa;oBACvCC,UAAU;wBAAEC,OAAO;oBAAK;gBAC1B;gBACAJ,OAAO,CAAC,EAAEF,CAAC,EAAE,GAAKA,EAAE;YACtB;YACA;gBACEH,MAAM;gBACNC,MAAM;gBACNnB,OAAO;oBACLoB,aAAa,CAAC,EAAEC,CAAC,EAAE,GAAKA,EAAE;oBAC1BC,UAAU;gBACZ;gBACAC,OAAO,CAAC,EAAEF,CAAC,EAAE,GAAKA,EAAE;gBACpBO,YAAYpB,aAAaqB,cAAc;gBACvC1B,UAAU;YACZ;YACA;gBACEe,MAAM;gBACNC,MAAM;gBACNnB,OAAO;oBACLoB,aAAa,CAAC,EAAEC,CAAC,EAAE,GAAKA,EAAE;oBAC1BC,UAAU;gBACZ;gBACAQ,cAAc;gBACdP,OAAO,CAAC,EAAEF,CAAC,EAAE,GAAKA,EAAE;YACtB;SACD;QACDU,QAAQ;YACNC,QAAQ,CAAC,EAAEX,CAAC,EAAE,GAAK,GAAGA,EAAE,kBAAkB,CAAC,EAAEA,EAAE,uBAAuB;YACtEY,UAAU,CAAC,EAAEZ,CAAC,EAAE,GAAK,GAAGA,EAAE,kBAAkB,CAAC,EAAEA,EAAE,0BAA0B;QAC7E;QACAa,UAAU;IACZ;IAEA,OAAO1B,aAAa2B,wBAAwB,GACxC3B,aAAa2B,wBAAwB,CAAC1B,cACtCA;AACN,EAAC"}
@@ -1,9 +0,0 @@
1
- import React from 'react';
2
- import './index.css';
3
- /**
4
- * Custom component for the MCP API-keys collection's `apiKey` field:
5
- * - no key yet: a "Generate new key" button
6
- * - key set: a dismissible privacy warning + the shared masked-key input
7
- */
8
- export declare const APIKeyField: React.FC;
9
- //# sourceMappingURL=index.client.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.client.d.ts","sourceRoot":"","sources":["../../../src/components/APIKeyField/index.client.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAmB,MAAM,OAAO,CAAA;AAOvC,OAAO,aAAa,CAAA;AAIpB;;;;GAIG;AACH,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAqD/B,CAAA"}