@payloadcms/plugin-mcp 4.0.0-internal.d28e9fb → 4.0.0-internal.fa345ef

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 (417) hide show
  1. package/LICENSE.md +1 -1
  2. package/bin.js +39 -0
  3. package/dist/defaultAccess.d.ts +3 -0
  4. package/dist/defaultAccess.d.ts.map +1 -0
  5. package/dist/defaultAccess.js +3 -0
  6. package/dist/defaultAccess.js.map +1 -0
  7. package/dist/defineTool.d.ts +26 -0
  8. package/dist/defineTool.d.ts.map +1 -0
  9. package/dist/defineTool.js +37 -0
  10. package/dist/defineTool.js.map +1 -0
  11. package/dist/endpoint/access.d.ts +22 -0
  12. package/dist/endpoint/access.d.ts.map +1 -0
  13. package/dist/endpoint/access.js +100 -0
  14. package/dist/endpoint/access.js.map +1 -0
  15. package/dist/endpoint/index.d.ts +3 -0
  16. package/dist/endpoint/index.d.ts.map +1 -0
  17. package/dist/endpoint/index.js +87 -0
  18. package/dist/endpoint/index.js.map +1 -0
  19. package/dist/exports/client.d.ts +2 -0
  20. package/dist/exports/client.d.ts.map +1 -0
  21. package/dist/exports/client.js +4 -0
  22. package/dist/exports/client.js.map +1 -0
  23. package/dist/exports/internal.d.ts +2 -0
  24. package/dist/exports/internal.d.ts.map +1 -0
  25. package/dist/exports/internal.js +3 -0
  26. package/dist/exports/internal.js.map +1 -0
  27. package/dist/index.d.ts +6 -9
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +39 -67
  30. package/dist/index.js.map +1 -1
  31. package/dist/mcp/buildMcpServer.d.ts +19 -0
  32. package/dist/mcp/buildMcpServer.d.ts.map +1 -0
  33. package/dist/mcp/buildMcpServer.js +223 -0
  34. package/dist/mcp/buildMcpServer.js.map +1 -0
  35. package/dist/mcp/builtin/collections/authTools.d.ts +7 -0
  36. package/dist/mcp/builtin/collections/authTools.d.ts.map +1 -0
  37. package/dist/mcp/builtin/collections/authTools.js +288 -0
  38. package/dist/mcp/builtin/collections/authTools.js.map +1 -0
  39. package/dist/mcp/builtin/collections/countTool.d.ts +2 -0
  40. package/dist/mcp/builtin/collections/countTool.d.ts.map +1 -0
  41. package/dist/mcp/builtin/collections/countTool.js +69 -0
  42. package/dist/mcp/builtin/collections/countTool.js.map +1 -0
  43. package/dist/mcp/builtin/collections/countVersionsTool.d.ts +2 -0
  44. package/dist/mcp/builtin/collections/countVersionsTool.d.ts.map +1 -0
  45. package/dist/mcp/builtin/collections/countVersionsTool.js +65 -0
  46. package/dist/mcp/builtin/collections/countVersionsTool.js.map +1 -0
  47. package/dist/mcp/builtin/collections/createTool.d.ts +2 -0
  48. package/dist/mcp/builtin/collections/createTool.d.ts.map +1 -0
  49. package/dist/mcp/builtin/collections/createTool.js +87 -0
  50. package/dist/mcp/builtin/collections/createTool.js.map +1 -0
  51. package/dist/mcp/builtin/collections/deleteTool.d.ts +2 -0
  52. package/dist/mcp/builtin/collections/deleteTool.d.ts.map +1 -0
  53. package/dist/mcp/builtin/collections/deleteTool.js +111 -0
  54. package/dist/mcp/builtin/collections/deleteTool.js.map +1 -0
  55. package/dist/mcp/builtin/collections/duplicateTool.d.ts +2 -0
  56. package/dist/mcp/builtin/collections/duplicateTool.d.ts.map +1 -0
  57. package/dist/mcp/builtin/collections/duplicateTool.js +97 -0
  58. package/dist/mcp/builtin/collections/duplicateTool.js.map +1 -0
  59. package/dist/mcp/builtin/collections/findDistinctTool.d.ts +2 -0
  60. package/dist/mcp/builtin/collections/findDistinctTool.d.ts.map +1 -0
  61. package/dist/mcp/builtin/collections/findDistinctTool.js +93 -0
  62. package/dist/mcp/builtin/collections/findDistinctTool.js.map +1 -0
  63. package/dist/mcp/builtin/collections/findTool.d.ts +2 -0
  64. package/dist/mcp/builtin/collections/findTool.d.ts.map +1 -0
  65. package/dist/mcp/builtin/collections/findTool.js +165 -0
  66. package/dist/mcp/builtin/collections/findTool.js.map +1 -0
  67. package/dist/mcp/builtin/collections/findVersionByIDTool.d.ts +2 -0
  68. package/dist/mcp/builtin/collections/findVersionByIDTool.d.ts.map +1 -0
  69. package/dist/mcp/builtin/collections/findVersionByIDTool.js +84 -0
  70. package/dist/mcp/builtin/collections/findVersionByIDTool.js.map +1 -0
  71. package/dist/mcp/builtin/collections/findVersionsTool.d.ts +2 -0
  72. package/dist/mcp/builtin/collections/findVersionsTool.d.ts.map +1 -0
  73. package/dist/mcp/builtin/collections/findVersionsTool.js +99 -0
  74. package/dist/mcp/builtin/collections/findVersionsTool.js.map +1 -0
  75. package/dist/mcp/builtin/collections/formatCollectionError.d.ts +9 -0
  76. package/dist/mcp/builtin/collections/formatCollectionError.d.ts.map +1 -0
  77. package/dist/mcp/builtin/collections/formatCollectionError.js +60 -0
  78. package/dist/mcp/builtin/collections/formatCollectionError.js.map +1 -0
  79. package/dist/mcp/builtin/collections/getCollectionSchemaTool.d.ts +2 -0
  80. package/dist/mcp/builtin/collections/getCollectionSchemaTool.d.ts.map +1 -0
  81. package/dist/mcp/builtin/collections/getCollectionSchemaTool.js +47 -0
  82. package/dist/mcp/builtin/collections/getCollectionSchemaTool.js.map +1 -0
  83. package/dist/mcp/builtin/collections/restoreVersionTool.d.ts +2 -0
  84. package/dist/mcp/builtin/collections/restoreVersionTool.d.ts.map +1 -0
  85. package/dist/mcp/builtin/collections/restoreVersionTool.js +82 -0
  86. package/dist/mcp/builtin/collections/restoreVersionTool.js.map +1 -0
  87. package/dist/mcp/builtin/collections/updateTool.d.ts +2 -0
  88. package/dist/mcp/builtin/collections/updateTool.d.ts.map +1 -0
  89. package/dist/mcp/builtin/collections/updateTool.js +192 -0
  90. package/dist/mcp/builtin/collections/updateTool.js.map +1 -0
  91. package/dist/mcp/builtin/getConfigInfoTool.d.ts +2 -0
  92. package/dist/mcp/builtin/getConfigInfoTool.d.ts.map +1 -0
  93. package/dist/mcp/builtin/getConfigInfoTool.js +71 -0
  94. package/dist/mcp/builtin/getConfigInfoTool.js.map +1 -0
  95. package/dist/mcp/builtin/globals/countVersionsTool.d.ts +2 -0
  96. package/dist/mcp/builtin/globals/countVersionsTool.d.ts.map +1 -0
  97. package/dist/mcp/builtin/globals/countVersionsTool.js +65 -0
  98. package/dist/mcp/builtin/globals/countVersionsTool.js.map +1 -0
  99. package/dist/mcp/builtin/globals/findTool.d.ts +2 -0
  100. package/dist/mcp/builtin/globals/findTool.d.ts.map +1 -0
  101. package/dist/mcp/builtin/globals/findTool.js +73 -0
  102. package/dist/mcp/builtin/globals/findTool.js.map +1 -0
  103. package/dist/mcp/builtin/globals/findVersionByIDTool.d.ts +2 -0
  104. package/dist/mcp/builtin/globals/findVersionByIDTool.d.ts.map +1 -0
  105. package/dist/mcp/builtin/globals/findVersionByIDTool.js +80 -0
  106. package/dist/mcp/builtin/globals/findVersionByIDTool.js.map +1 -0
  107. package/dist/mcp/builtin/globals/findVersionsTool.d.ts +2 -0
  108. package/dist/mcp/builtin/globals/findVersionsTool.d.ts.map +1 -0
  109. package/dist/mcp/builtin/globals/findVersionsTool.js +95 -0
  110. package/dist/mcp/builtin/globals/findVersionsTool.js.map +1 -0
  111. package/dist/mcp/builtin/globals/getGlobalSchemaTool.d.ts +2 -0
  112. package/dist/mcp/builtin/globals/getGlobalSchemaTool.d.ts.map +1 -0
  113. package/dist/mcp/builtin/globals/getGlobalSchemaTool.js +47 -0
  114. package/dist/mcp/builtin/globals/getGlobalSchemaTool.js.map +1 -0
  115. package/dist/mcp/builtin/globals/restoreVersionTool.d.ts +2 -0
  116. package/dist/mcp/builtin/globals/restoreVersionTool.d.ts.map +1 -0
  117. package/dist/mcp/builtin/globals/restoreVersionTool.js +78 -0
  118. package/dist/mcp/builtin/globals/restoreVersionTool.js.map +1 -0
  119. package/dist/mcp/builtin/globals/updateTool.d.ts +2 -0
  120. package/dist/mcp/builtin/globals/updateTool.d.ts.map +1 -0
  121. package/dist/mcp/builtin/globals/updateTool.js +87 -0
  122. package/dist/mcp/builtin/globals/updateTool.js.map +1 -0
  123. package/dist/mcp/builtin/validateEntityData.d.ts +14 -0
  124. package/dist/mcp/builtin/validateEntityData.d.ts.map +1 -0
  125. package/dist/mcp/builtin/validateEntityData.js +82 -0
  126. package/dist/mcp/builtin/validateEntityData.js.map +1 -0
  127. package/dist/mcp/builtinTools.d.ts +162 -0
  128. package/dist/mcp/builtinTools.d.ts.map +1 -0
  129. package/dist/mcp/builtinTools.js +163 -0
  130. package/dist/mcp/builtinTools.js.map +1 -0
  131. package/dist/mcp/sanitizeMCPConfig.d.ts +16 -0
  132. package/dist/mcp/sanitizeMCPConfig.d.ts.map +1 -0
  133. package/dist/mcp/sanitizeMCPConfig.js +230 -0
  134. package/dist/mcp/sanitizeMCPConfig.js.map +1 -0
  135. package/dist/stdio.d.ts +8 -0
  136. package/dist/stdio.d.ts.map +1 -0
  137. package/dist/stdio.js +126 -0
  138. package/dist/stdio.js.map +1 -0
  139. package/dist/types.d.ts +235 -463
  140. package/dist/types.d.ts.map +1 -1
  141. package/dist/types.js +6 -1
  142. package/dist/types.js.map +1 -1
  143. package/dist/utils/camelCase.d.ts.map +1 -1
  144. package/dist/utils/getLogger.d.ts +10 -0
  145. package/dist/utils/getLogger.d.ts.map +1 -0
  146. package/dist/utils/getLogger.js +22 -0
  147. package/dist/utils/getLogger.js.map +1 -0
  148. package/dist/utils/getPluginConfig.d.ts +12 -0
  149. package/dist/utils/getPluginConfig.d.ts.map +1 -0
  150. package/dist/utils/getPluginConfig.js +15 -0
  151. package/dist/utils/getPluginConfig.js.map +1 -0
  152. package/dist/utils/localAPIDefaults.d.ts +20 -0
  153. package/dist/utils/localAPIDefaults.d.ts.map +1 -0
  154. package/dist/utils/localAPIDefaults.js +19 -0
  155. package/dist/utils/localAPIDefaults.js.map +1 -0
  156. package/dist/utils/resolveProjectRoot.d.ts +7 -0
  157. package/dist/utils/resolveProjectRoot.d.ts.map +1 -0
  158. package/dist/utils/resolveProjectRoot.js +15 -0
  159. package/dist/utils/resolveProjectRoot.js.map +1 -0
  160. package/dist/utils/schemaConversion/getEntityInputSchema.d.ts +11 -0
  161. package/dist/utils/schemaConversion/getEntityInputSchema.d.ts.map +1 -0
  162. package/dist/utils/schemaConversion/getEntityInputSchema.js +32 -0
  163. package/dist/utils/schemaConversion/getEntityInputSchema.js.map +1 -0
  164. package/dist/utils/schemaConversion/sanitizeEntitySchema.d.ts +10 -0
  165. package/dist/utils/schemaConversion/sanitizeEntitySchema.d.ts.map +1 -0
  166. package/dist/utils/schemaConversion/sanitizeEntitySchema.js +384 -0
  167. package/dist/utils/schemaConversion/sanitizeEntitySchema.js.map +1 -0
  168. package/dist/utils/schemaConversion/sanitizeEntitySchema.spec.js +133 -0
  169. package/dist/utils/schemaConversion/sanitizeEntitySchema.spec.js.map +1 -0
  170. package/dist/utils/toStandardSchema.d.ts +5 -0
  171. package/dist/utils/toStandardSchema.d.ts.map +1 -0
  172. package/dist/utils/toStandardSchema.js +4 -0
  173. package/dist/utils/toStandardSchema.js.map +1 -0
  174. package/dist/utils/whereSchema.d.ts +9 -0
  175. package/dist/utils/whereSchema.d.ts.map +1 -0
  176. package/dist/utils/whereSchema.js +13 -0
  177. package/dist/utils/whereSchema.js.map +1 -0
  178. package/package.json +30 -10
  179. package/src/defaultAccess.ts +3 -0
  180. package/src/defineTool.ts +44 -0
  181. package/src/endpoint/access.ts +119 -0
  182. package/src/endpoint/index.ts +77 -0
  183. package/src/exports/client.ts +3 -0
  184. package/src/exports/internal.ts +1 -0
  185. package/src/index.ts +31 -89
  186. package/src/mcp/buildMcpServer.ts +284 -0
  187. package/src/mcp/builtin/collections/authTools.ts +269 -0
  188. package/src/mcp/builtin/collections/countTool.ts +74 -0
  189. package/src/mcp/builtin/collections/countVersionsTool.ts +73 -0
  190. package/src/mcp/builtin/collections/createTool.ts +112 -0
  191. package/src/mcp/builtin/collections/deleteTool.ts +126 -0
  192. package/src/mcp/builtin/collections/duplicateTool.ts +135 -0
  193. package/src/mcp/builtin/collections/findDistinctTool.ts +119 -0
  194. package/src/mcp/builtin/collections/findTool.ts +217 -0
  195. package/src/mcp/builtin/collections/findVersionByIDTool.ts +110 -0
  196. package/src/mcp/builtin/collections/findVersionsTool.ts +155 -0
  197. package/src/mcp/builtin/collections/formatCollectionError.ts +84 -0
  198. package/src/mcp/builtin/collections/getCollectionSchemaTool.ts +46 -0
  199. package/src/mcp/builtin/collections/restoreVersionTool.ts +108 -0
  200. package/src/mcp/builtin/collections/updateTool.ts +211 -0
  201. package/src/mcp/builtin/getConfigInfoTool.ts +69 -0
  202. package/src/mcp/builtin/globals/countVersionsTool.ts +72 -0
  203. package/src/mcp/builtin/globals/findTool.ts +105 -0
  204. package/src/mcp/builtin/globals/findVersionByIDTool.ts +104 -0
  205. package/src/mcp/builtin/globals/findVersionsTool.ts +148 -0
  206. package/src/mcp/builtin/globals/getGlobalSchemaTool.ts +41 -0
  207. package/src/mcp/builtin/globals/restoreVersionTool.ts +99 -0
  208. package/src/mcp/builtin/globals/updateTool.ts +115 -0
  209. package/src/mcp/builtin/validateEntityData.ts +132 -0
  210. package/src/mcp/builtinTools.ts +154 -0
  211. package/src/mcp/sanitizeMCPConfig.ts +278 -0
  212. package/src/stdio.ts +130 -0
  213. package/src/types.ts +276 -494
  214. package/src/utils/getLogger.ts +22 -0
  215. package/src/utils/getPluginConfig.ts +24 -0
  216. package/src/utils/localAPIDefaults.ts +22 -0
  217. package/src/utils/resolveProjectRoot.ts +17 -0
  218. package/src/utils/schemaConversion/getEntityInputSchema.ts +62 -0
  219. package/src/utils/schemaConversion/sanitizeEntitySchema.spec.ts +96 -0
  220. package/src/utils/schemaConversion/sanitizeEntitySchema.ts +432 -0
  221. package/src/utils/toStandardSchema.ts +9 -0
  222. package/src/utils/whereSchema.ts +24 -0
  223. package/dist/collections/createApiKeysCollection.d.ts +0 -7
  224. package/dist/collections/createApiKeysCollection.d.ts.map +0 -1
  225. package/dist/collections/createApiKeysCollection.js +0 -317
  226. package/dist/collections/createApiKeysCollection.js.map +0 -1
  227. package/dist/defaults.d.ts +0 -4
  228. package/dist/defaults.d.ts.map +0 -1
  229. package/dist/defaults.js +0 -5
  230. package/dist/defaults.js.map +0 -1
  231. package/dist/endpoints/mcp.d.ts +0 -4
  232. package/dist/endpoints/mcp.d.ts.map +0 -1
  233. package/dist/endpoints/mcp.js +0 -71
  234. package/dist/endpoints/mcp.js.map +0 -1
  235. package/dist/mcp/createRequest.d.ts +0 -3
  236. package/dist/mcp/createRequest.d.ts.map +0 -1
  237. package/dist/mcp/createRequest.js +0 -14
  238. package/dist/mcp/createRequest.js.map +0 -1
  239. package/dist/mcp/getMcpHandler.d.ts +0 -4
  240. package/dist/mcp/getMcpHandler.d.ts.map +0 -1
  241. package/dist/mcp/getMcpHandler.js +0 -231
  242. package/dist/mcp/getMcpHandler.js.map +0 -1
  243. package/dist/mcp/helpers/config.d.ts +0 -22
  244. package/dist/mcp/helpers/config.d.ts.map +0 -1
  245. package/dist/mcp/helpers/config.js +0 -153
  246. package/dist/mcp/helpers/config.js.map +0 -1
  247. package/dist/mcp/helpers/fields.d.ts +0 -19
  248. package/dist/mcp/helpers/fields.d.ts.map +0 -1
  249. package/dist/mcp/helpers/fields.js +0 -102
  250. package/dist/mcp/helpers/fields.js.map +0 -1
  251. package/dist/mcp/helpers/fileValidation.d.ts +0 -67
  252. package/dist/mcp/helpers/fileValidation.d.ts.map +0 -1
  253. package/dist/mcp/helpers/fileValidation.js +0 -267
  254. package/dist/mcp/helpers/fileValidation.js.map +0 -1
  255. package/dist/mcp/registerTool.d.ts +0 -6
  256. package/dist/mcp/registerTool.d.ts.map +0 -1
  257. package/dist/mcp/registerTool.js +0 -18
  258. package/dist/mcp/registerTool.js.map +0 -1
  259. package/dist/mcp/tools/auth/auth.d.ts +0 -4
  260. package/dist/mcp/tools/auth/auth.d.ts.map +0 -1
  261. package/dist/mcp/tools/auth/auth.js +0 -57
  262. package/dist/mcp/tools/auth/auth.js.map +0 -1
  263. package/dist/mcp/tools/auth/forgotPassword.d.ts +0 -4
  264. package/dist/mcp/tools/auth/forgotPassword.d.ts.map +0 -1
  265. package/dist/mcp/tools/auth/forgotPassword.js +0 -48
  266. package/dist/mcp/tools/auth/forgotPassword.js.map +0 -1
  267. package/dist/mcp/tools/auth/login.d.ts +0 -4
  268. package/dist/mcp/tools/auth/login.d.ts.map +0 -1
  269. package/dist/mcp/tools/auth/login.js +0 -51
  270. package/dist/mcp/tools/auth/login.js.map +0 -1
  271. package/dist/mcp/tools/auth/resetPassword.d.ts +0 -4
  272. package/dist/mcp/tools/auth/resetPassword.d.ts.map +0 -1
  273. package/dist/mcp/tools/auth/resetPassword.js +0 -49
  274. package/dist/mcp/tools/auth/resetPassword.js.map +0 -1
  275. package/dist/mcp/tools/auth/unlock.d.ts +0 -4
  276. package/dist/mcp/tools/auth/unlock.d.ts.map +0 -1
  277. package/dist/mcp/tools/auth/unlock.js +0 -48
  278. package/dist/mcp/tools/auth/unlock.js.map +0 -1
  279. package/dist/mcp/tools/auth/verify.d.ts +0 -4
  280. package/dist/mcp/tools/auth/verify.d.ts.map +0 -1
  281. package/dist/mcp/tools/auth/verify.js +0 -45
  282. package/dist/mcp/tools/auth/verify.js.map +0 -1
  283. package/dist/mcp/tools/collection/create.d.ts +0 -10
  284. package/dist/mcp/tools/collection/create.d.ts.map +0 -1
  285. package/dist/mcp/tools/collection/create.js +0 -139
  286. package/dist/mcp/tools/collection/create.js.map +0 -1
  287. package/dist/mcp/tools/collection/delete.d.ts +0 -10
  288. package/dist/mcp/tools/collection/delete.d.ts.map +0 -1
  289. package/dist/mcp/tools/collection/delete.js +0 -154
  290. package/dist/mcp/tools/collection/delete.js.map +0 -1
  291. package/dist/mcp/tools/collection/find.d.ts +0 -10
  292. package/dist/mcp/tools/collection/find.d.ts.map +0 -1
  293. package/dist/mcp/tools/collection/find.js +0 -165
  294. package/dist/mcp/tools/collection/find.js.map +0 -1
  295. package/dist/mcp/tools/collection/update.d.ts +0 -10
  296. package/dist/mcp/tools/collection/update.d.ts.map +0 -1
  297. package/dist/mcp/tools/collection/update.js +0 -209
  298. package/dist/mcp/tools/collection/update.js.map +0 -1
  299. package/dist/mcp/tools/config/find.d.ts +0 -10
  300. package/dist/mcp/tools/config/find.d.ts.map +0 -1
  301. package/dist/mcp/tools/config/find.js +0 -97
  302. package/dist/mcp/tools/config/find.js.map +0 -1
  303. package/dist/mcp/tools/config/update.d.ts +0 -10
  304. package/dist/mcp/tools/config/update.d.ts.map +0 -1
  305. package/dist/mcp/tools/config/update.js +0 -215
  306. package/dist/mcp/tools/config/update.js.map +0 -1
  307. package/dist/mcp/tools/global/find.d.ts +0 -5
  308. package/dist/mcp/tools/global/find.d.ts.map +0 -1
  309. package/dist/mcp/tools/global/find.js +0 -82
  310. package/dist/mcp/tools/global/find.js.map +0 -1
  311. package/dist/mcp/tools/global/update.d.ts +0 -6
  312. package/dist/mcp/tools/global/update.d.ts.map +0 -1
  313. package/dist/mcp/tools/global/update.js +0 -124
  314. package/dist/mcp/tools/global/update.js.map +0 -1
  315. package/dist/mcp/tools/job/create.d.ts +0 -10
  316. package/dist/mcp/tools/job/create.d.ts.map +0 -1
  317. package/dist/mcp/tools/job/create.js +0 -293
  318. package/dist/mcp/tools/job/create.js.map +0 -1
  319. package/dist/mcp/tools/job/run.d.ts +0 -10
  320. package/dist/mcp/tools/job/run.d.ts.map +0 -1
  321. package/dist/mcp/tools/job/run.js +0 -129
  322. package/dist/mcp/tools/job/run.js.map +0 -1
  323. package/dist/mcp/tools/job/update.d.ts +0 -11
  324. package/dist/mcp/tools/job/update.d.ts.map +0 -1
  325. package/dist/mcp/tools/job/update.js +0 -186
  326. package/dist/mcp/tools/job/update.js.map +0 -1
  327. package/dist/mcp/tools/resource/create.d.ts +0 -6
  328. package/dist/mcp/tools/resource/create.d.ts.map +0 -1
  329. package/dist/mcp/tools/resource/create.js +0 -124
  330. package/dist/mcp/tools/resource/create.js.map +0 -1
  331. package/dist/mcp/tools/resource/delete.d.ts +0 -5
  332. package/dist/mcp/tools/resource/delete.d.ts.map +0 -1
  333. package/dist/mcp/tools/resource/delete.js +0 -151
  334. package/dist/mcp/tools/resource/delete.js.map +0 -1
  335. package/dist/mcp/tools/resource/find.d.ts +0 -5
  336. package/dist/mcp/tools/resource/find.d.ts.map +0 -1
  337. package/dist/mcp/tools/resource/find.js +0 -170
  338. package/dist/mcp/tools/resource/find.js.map +0 -1
  339. package/dist/mcp/tools/resource/update.d.ts +0 -6
  340. package/dist/mcp/tools/resource/update.d.ts.map +0 -1
  341. package/dist/mcp/tools/resource/update.js +0 -256
  342. package/dist/mcp/tools/resource/update.js.map +0 -1
  343. package/dist/mcp/tools/schemas.d.ts +0 -457
  344. package/dist/mcp/tools/schemas.d.ts.map +0 -1
  345. package/dist/mcp/tools/schemas.js +0 -243
  346. package/dist/mcp/tools/schemas.js.map +0 -1
  347. package/dist/utils/adminEntitySettings.d.ts +0 -17
  348. package/dist/utils/adminEntitySettings.d.ts.map +0 -1
  349. package/dist/utils/adminEntitySettings.js +0 -41
  350. package/dist/utils/adminEntitySettings.js.map +0 -1
  351. package/dist/utils/createApiKeyFields.d.ts +0 -15
  352. package/dist/utils/createApiKeyFields.d.ts.map +0 -1
  353. package/dist/utils/createApiKeyFields.js +0 -57
  354. package/dist/utils/createApiKeyFields.js.map +0 -1
  355. package/dist/utils/getEnabledSlugs.d.ts +0 -13
  356. package/dist/utils/getEnabledSlugs.d.ts.map +0 -1
  357. package/dist/utils/getEnabledSlugs.js +0 -32
  358. package/dist/utils/getEnabledSlugs.js.map +0 -1
  359. package/dist/utils/schemaConversion/convertCollectionSchemaToZod.d.ts +0 -3
  360. package/dist/utils/schemaConversion/convertCollectionSchemaToZod.d.ts.map +0 -1
  361. package/dist/utils/schemaConversion/convertCollectionSchemaToZod.js +0 -43
  362. package/dist/utils/schemaConversion/convertCollectionSchemaToZod.js.map +0 -1
  363. package/dist/utils/schemaConversion/removeVirtualFieldsFromSchema.d.ts +0 -7
  364. package/dist/utils/schemaConversion/removeVirtualFieldsFromSchema.d.ts.map +0 -1
  365. package/dist/utils/schemaConversion/removeVirtualFieldsFromSchema.js +0 -20
  366. package/dist/utils/schemaConversion/removeVirtualFieldsFromSchema.js.map +0 -1
  367. package/dist/utils/schemaConversion/sanitizeJsonSchema.d.ts +0 -13
  368. package/dist/utils/schemaConversion/sanitizeJsonSchema.d.ts.map +0 -1
  369. package/dist/utils/schemaConversion/sanitizeJsonSchema.js +0 -56
  370. package/dist/utils/schemaConversion/sanitizeJsonSchema.js.map +0 -1
  371. package/dist/utils/schemaConversion/simplifyRelationshipFields.d.ts +0 -20
  372. package/dist/utils/schemaConversion/simplifyRelationshipFields.d.ts.map +0 -1
  373. package/dist/utils/schemaConversion/simplifyRelationshipFields.js +0 -53
  374. package/dist/utils/schemaConversion/simplifyRelationshipFields.js.map +0 -1
  375. package/dist/utils/schemaConversion/transformPointFields.d.ts +0 -3
  376. package/dist/utils/schemaConversion/transformPointFields.d.ts.map +0 -1
  377. package/dist/utils/schemaConversion/transformPointFields.js +0 -51
  378. package/dist/utils/schemaConversion/transformPointFields.js.map +0 -1
  379. package/src/collections/createApiKeysCollection.ts +0 -373
  380. package/src/defaults.ts +0 -3
  381. package/src/endpoints/mcp.ts +0 -91
  382. package/src/mcp/createRequest.ts +0 -13
  383. package/src/mcp/getMcpHandler.ts +0 -545
  384. package/src/mcp/helpers/config.ts +0 -213
  385. package/src/mcp/helpers/fields.ts +0 -154
  386. package/src/mcp/helpers/fileValidation.ts +0 -362
  387. package/src/mcp/registerTool.ts +0 -22
  388. package/src/mcp/tools/auth/auth.ts +0 -71
  389. package/src/mcp/tools/auth/forgotPassword.ts +0 -70
  390. package/src/mcp/tools/auth/login.ts +0 -72
  391. package/src/mcp/tools/auth/resetPassword.ts +0 -61
  392. package/src/mcp/tools/auth/unlock.ts +0 -64
  393. package/src/mcp/tools/auth/verify.ts +0 -57
  394. package/src/mcp/tools/collection/create.ts +0 -210
  395. package/src/mcp/tools/collection/delete.ts +0 -211
  396. package/src/mcp/tools/collection/find.ts +0 -224
  397. package/src/mcp/tools/collection/update.ts +0 -290
  398. package/src/mcp/tools/config/find.ts +0 -128
  399. package/src/mcp/tools/config/update.ts +0 -280
  400. package/src/mcp/tools/global/find.ts +0 -128
  401. package/src/mcp/tools/global/update.ts +0 -207
  402. package/src/mcp/tools/job/create.ts +0 -416
  403. package/src/mcp/tools/job/run.ts +0 -167
  404. package/src/mcp/tools/job/update.ts +0 -274
  405. package/src/mcp/tools/resource/create.ts +0 -211
  406. package/src/mcp/tools/resource/delete.ts +0 -218
  407. package/src/mcp/tools/resource/find.ts +0 -246
  408. package/src/mcp/tools/resource/update.ts +0 -383
  409. package/src/mcp/tools/schemas.ts +0 -520
  410. package/src/utils/adminEntitySettings.ts +0 -40
  411. package/src/utils/createApiKeyFields.ts +0 -72
  412. package/src/utils/getEnabledSlugs.ts +0 -42
  413. package/src/utils/schemaConversion/convertCollectionSchemaToZod.ts +0 -52
  414. package/src/utils/schemaConversion/removeVirtualFieldsFromSchema.ts +0 -27
  415. package/src/utils/schemaConversion/sanitizeJsonSchema.ts +0 -62
  416. package/src/utils/schemaConversion/simplifyRelationshipFields.ts +0 -65
  417. package/src/utils/schemaConversion/transformPointFields.ts +0 -55
package/src/types.ts CHANGED
@@ -1,542 +1,324 @@
1
1
  import type {
2
- CollectionConfig,
2
+ CallToolResult,
3
+ ContentBlock,
4
+ JsonSchemaType,
5
+ McpServer,
6
+ ResourceTemplate,
7
+ ServerContext,
8
+ StandardSchemaWithJSON,
9
+ ToolAnnotations,
10
+ } from '@modelcontextprotocol/server'
11
+ import type {
12
+ AuthCollectionSlug,
3
13
  CollectionSlug,
4
14
  GlobalSlug,
15
+ MaybePromise,
5
16
  PayloadRequest,
6
- TypedUser,
17
+ SanitizedPermissions,
18
+ User,
7
19
  } from 'payload'
8
- import type { z } from 'zod'
9
20
 
10
- import { type ResourceTemplate } from '@modelcontextprotocol/sdk/server/mcp.js'
21
+ import type { GetAuthorizedMCPArgs } from './endpoint/access.js'
22
+ import type {
23
+ MCPCollectionAuthToolName,
24
+ MCPCollectionBuiltinName,
25
+ MCPGlobalBuiltinName,
26
+ } from './mcp/builtinTools.js'
11
27
 
12
- export type MCPPluginConfig = {
13
- /**
14
- * Set the collections that should be available as resources via MCP.
15
- */
16
- collections?: Partial<
17
- Record<
18
- CollectionSlug,
19
- {
20
- /**
21
- * Set the description of the collection. This is used by MCP clients to determine when to use the collecton as a resource.
22
- */
23
- description?: string
24
- /**
25
- * Set the enabled capabilities of the collection. Admins can then allow or disallow the use of the capability by MCP clients.
26
- */
27
- enabled:
28
- | {
29
- create?: boolean
30
- delete?: boolean
31
- find?: boolean
32
- update?: boolean
33
- }
34
- | boolean
35
-
36
- /**
37
- * Override the response generated by the MCP client. This allows you to modify the response that is sent to the MCP client. This is useful for adding additional data to the response, data normalization, or verifying data.
38
- */
39
- overrideResponse?: (
40
- response: {
41
- content: Array<{
42
- text: string
43
- type: string
44
- }>
45
- },
46
- doc: Record<string, unknown>,
47
- req: PayloadRequest,
48
- ) => {
49
- content: Array<{
50
- text: string
51
- type: string
52
- }>
53
- }
54
- }
55
- >
56
- >
57
- /**
58
- * Disable the MCP plugin.
59
- */
60
- disabled?: boolean
61
- /**
62
- * Experimental features
63
- * **These features are for experimental purposes -- They are Disabled in Production by Default**
64
- */
65
- experimental?: {
66
- /**
67
- * These are MCP tools that can be used by a client to modify Payload.
68
- */
69
- tools: {
70
- /**
71
- * **Experimental** -- Auth MCP tools allow a client to change authentication priviliages for users. This is for developing ideas that help Admins with authentication tasks.
72
- */
73
- auth?: {
74
- /**
75
- * Enable the auth MCP tools. This allows Admins to enable or disable the auth capabilities.
76
- * @default false
77
- */
78
- enabled: boolean
79
- }
80
- /**
81
- * **Experimental** -- Collection MCP tools allow for the creation, modification, and deletion of Payload collections. This is for developing ideas that help Developers with collection tasks.
82
- */
83
- collections?: {
84
- /**
85
- * Set the directory path to the collections directory. This can be a directory outside of your default directory, or another Payload project.
86
- */
87
- collectionsDirPath: string
88
- /**
89
- * Enable the collection MCP tools. This allows Admins to enable or disable the Collection modification capabilities.
90
- * @default false
91
- */
92
- enabled: boolean
93
- }
94
- /**
95
- * **Experimental** -- Config MCP tools allow for the modification of a Payload Config. This is for developing ideas that help Developers with config tasks.
96
- */
97
- config?: {
98
- /**
99
- * Set the directory path to the config directory. This can be a directory outside of your default directory, or another Payload project.
100
- */
101
- configFilePath: string
102
- /**
103
- * Enable the config MCP tools. This allows Admins to enable or disable the Payload Config modification capabilities.
104
- * @default false
105
- */
106
- enabled: boolean
107
- }
108
- /**
109
- * **Experimental** -- Jobs MCP tools allow for the modification of Payload jobs. This is for developing ideas that help Developers with job tasks.
110
- */
111
- jobs?: {
112
- /**
113
- * Enable the jobs MCP tools. This allows Admins to enable or disable the Job modification capabilities.
114
- * @default false
115
- */
116
- enabled: boolean
117
- /**
118
- * Set the directory path to the jobs directory. This can be a directory outside of your default directory, or another Payload project.
119
- */
120
- jobsDirPath: string
121
- }
122
- }
123
- }
124
- /**
125
- * Set the globals that should be available as resources via MCP.
126
- * Globals are singleton configuration objects (e.g., site settings, navigation).
127
- * Note: Globals only support find and update operations.
128
- */
129
- globals?: Partial<
130
- Record<
131
- GlobalSlug,
132
- {
133
- /**
134
- * Set the description of the global. This is used by MCP clients to determine when to use the global as a resource.
135
- */
136
- description?: string
137
- /**
138
- * Set the enabled capabilities of the global. Admins can then allow or disallow the use of the capability by MCP clients.
139
- * Note: Globals only support find and update operations as they are singletons.
140
- */
141
- enabled:
142
- | {
143
- find?: boolean
144
- update?: boolean
145
- }
146
- | boolean
147
-
148
- /**
149
- * Override the response generated by the MCP client. This allows you to modify the response that is sent to the MCP client. This is useful for adding additional data to the response, data normalization, or verifying data.
150
- */
151
- overrideResponse?: (
152
- response: {
153
- content: Array<{
154
- text: string
155
- type: string
156
- }>
157
- },
158
- doc: Record<string, unknown>,
159
- req: PayloadRequest,
160
- ) => {
161
- content: Array<{
162
- text: string
163
- type: string
164
- }>
165
- }
166
- }
167
- >
168
- >
169
- /**
170
- * MCP Server options.
171
- */
172
- mcp?: {
173
- handlerOptions?: MCPHandlerOptions
174
- /**
175
- * Add custom MCP Prompts.
176
- */
177
- prompts?: {
178
- /**
179
- * Set the args schema of the prompt. This is the args schema that will be passed to the prompt. This is used by MCP clients to determine the arguments that will be passed to the prompt.
180
- */
181
- argsSchema: z.ZodRawShape
182
- /**
183
- * Set the description of the prompt. This is used by MCP clients to determine when to use the prompt.
184
- */
185
- description: string
186
- /**
187
- * Set the handler of the prompt. This is the function that will be called when the prompt is used.
188
- */
189
- handler: (
190
- args: Record<string, unknown>,
191
- req: PayloadRequest,
192
- _extra: unknown,
193
- ) =>
194
- | {
195
- messages: Array<{
196
- content: {
197
- text: string
198
- type: 'text'
199
- }
200
- role: 'assistant' | 'user'
201
- }>
202
- }
203
- | Promise<{
204
- messages: Array<{
205
- content: {
206
- text: string
207
- type: 'text'
208
- }
209
- role: 'assistant' | 'user'
210
- }>
211
- }>
212
- /**
213
- * Set the function name of the prompt.
214
- */
215
- name: string
216
- /**
217
- * Set the title of the prompt. LLMs will interperate the title to determine when to use the prompt.
218
- */
219
- title: string
220
- }[]
221
-
222
- /**
223
- * Add custom MCP Resource.
224
- */
225
- resources?: {
226
- /**
227
- * Set the description of the resource. This is used by MCP clients to determine when to use the resource.
228
- * example: 'Data is a resource that contains special data.'
229
- */
230
- description: string
231
- /**
232
- * Set the handler of the resource. This is the function that will be called when the resource is used.
233
- * The handler can have either 3 arguments (when no args are passed) or 4 arguments (when args are passed).
234
- */
235
- handler: (...args: any[]) =>
236
- | {
237
- contents: Array<{
238
- text: string
239
- uri: string
240
- }>
241
- }
242
- | Promise<{
243
- contents: Array<{
244
- text: string
245
- uri: string
246
- }>
247
- }>
248
- /**
249
- * Set the mime type of the resource.
250
- * example: 'text/plain'
251
- */
252
- mimeType: string
253
- /**
254
- * Set the function name of the resource.
255
- * example: 'data'
256
- */
257
- name: string
258
- /**
259
- * Set the title of the resource. LLMs will interperate the title to determine when to use the resource.
260
- * example: 'Data'
261
- */
262
- title: string
263
- /**
264
- * Set the uri of the resource.
265
- * example: 'data://app'
266
- */
267
- uri: ResourceTemplate | string
268
- }[]
269
- serverOptions?: MCPServerOptions
270
- /**
271
- * Add custom MCP Tools.
272
- */
273
- tools?: {
274
- /**
275
- * Set the description of the tool. This is used by MCP clients to determine when to use the tool.
276
- */
277
- description: string
278
- /**
279
- * Set the handler of the tool. This is the function that will be called when the tool is used.
280
- */
281
- handler: (
282
- args: Record<string, unknown>,
283
- req: PayloadRequest,
284
- _extra: unknown,
285
- ) =>
286
- | {
287
- content: Array<{
288
- text: string
289
- type: 'text'
290
- }>
291
- role?: string
292
- }
293
- | Promise<{
294
- content: Array<{
295
- text: string
296
- type: 'text'
297
- }>
298
- role?: string
299
- }>
300
- /**
301
- * Set the name of the tool. This is the name that will be used to identify the tool. LLMs will interperate the name to determine when to use the tool.
302
- */
303
- name: string
304
- /**
305
- * Set the parameters of the tool. This is the parameters that will be passed to the tool.
306
- */
307
- parameters: z.ZodRawShape
308
- }[]
309
- }
28
+ export type { MCPCollectionAuthToolName, MCPCollectionBuiltinName, MCPGlobalBuiltinName }
310
29
 
311
- /**
312
- * Override the API key collection.
313
- * This allows you to add fields to the API key collection or modify the collection in any way you want.
314
- * @param collection - The API key collection.
315
- * @returns The modified API key collection.
316
- */
317
- overrideApiKeyCollection?: (collection: CollectionConfig) => CollectionConfig
30
+ /** Re-exported from `@modelcontextprotocol/server` — common MCP types used in plugin config. */
31
+ export type { JsonSchemaType, StandardSchemaWithJSON, ToolAnnotations }
32
+
33
+ /**
34
+ * What a tool's `input` (or a prompt's `argsSchema`) can be — either a raw
35
+ * JSON Schema 2020-12 literal, or a Standard Schema instance (Zod, Valibot, …).
36
+ * Raw schemas may omit `$schema`; when present it must declare the 2020-12 dialect.
37
+ */
38
+ export type ToolInputSchema = JsonSchemaType | StandardSchemaWithJSON
318
39
 
40
+ export type MCPToolResponse = {
41
+ content: ContentBlock[]
319
42
  /**
320
- * Override the authentication method.
321
- * This allows you to use a custom authentication method instead of the default API key authentication.
322
- * @param req - The request object.
323
- * @returns The MCP access settings.
43
+ * If available, return the document fetched within the
44
+ * mcp tool. This is threaded as an additional argument to
45
+ * overrideResponse functions and stripped before going on the wire.
324
46
  */
325
- overrideAuth?: (
326
- req: PayloadRequest,
327
- getDefaultMcpAccessSettings: (overrideApiKey?: null | string) => Promise<MCPAccessSettings>,
328
- ) => MCPAccessSettings | Promise<MCPAccessSettings>
47
+ doc?: Record<string, unknown>
48
+ } & Pick<CallToolResult, '_meta' | 'isError' | 'structuredContent'>
49
+
50
+ export type MCPResponseOverride = (
51
+ response: MCPToolResponse,
52
+ doc: Record<string, unknown>,
53
+ req: PayloadRequest,
54
+ ) => MCPToolResponse
55
+
56
+ export type MCPAfterToolCallHook = (args: {
57
+ input: unknown
58
+ req: PayloadRequest
59
+ response: MCPToolResponse
60
+ toolName: string
61
+ }) => MaybePromise<MCPToolResponse>
329
62
 
63
+ /**
64
+ * The handler's `input` type. A specific Standard Schema (Zod, Valibot, …) gets
65
+ * its inferred output; anything else falls back to `Record<string, unknown>`.
66
+ */
67
+ export type TypedInput<TSchema> = TSchema extends StandardSchemaWithJSON
68
+ ? StandardSchemaWithJSON extends TSchema
69
+ ? Record<string, unknown>
70
+ : StandardSchemaWithJSON.InferOutput<TSchema>
71
+ : Record<string, unknown>
72
+
73
+ export type MCPAccessArgs = {
74
+ permissions?: SanitizedPermissions
75
+ req: PayloadRequest
76
+ }
77
+
78
+ export type CollectionMCPAccessArgs = {
79
+ collectionSlug: CollectionSlug
80
+ } & MCPAccessArgs
81
+
82
+ export type GlobalMCPAccessArgs = {
83
+ globalSlug: GlobalSlug
84
+ } & MCPAccessArgs
85
+
86
+ export type ToolHandlerArgs<TSchema = undefined> = {
87
+ authorizedMCP: AuthorizedMCP
88
+ input: TypedInput<TSchema>
89
+ req: PayloadRequest
90
+ serverContext: ServerContext
91
+ }
92
+
93
+ export type CollectionToolHandlerArgs<TSchema = undefined> = {
94
+ collectionSlug: CollectionSlug
95
+ } & ToolHandlerArgs<TSchema>
96
+
97
+ export type GlobalToolHandlerArgs<TSchema = undefined> = {
98
+ globalSlug: GlobalSlug
99
+ } & ToolHandlerArgs<TSchema>
100
+
101
+ export type Tool<TSchema extends ToolInputSchema | undefined = ToolInputSchema | undefined> = {
102
+ access?: (args: MCPAccessArgs) => MaybePromise<boolean>
103
+ annotations?: ToolAnnotations
104
+ description: string
105
+ handler: (args: ToolHandlerArgs<TSchema>) => MaybePromise<MCPToolResponse>
106
+ input?: TSchema
330
107
  /**
331
- * Set the users collection that API keys should be associated with.
108
+ * Override the return value of the tool handler
332
109
  */
333
- userCollection?: CollectionSlug
110
+ overrideResponse?: MCPResponseOverride
334
111
  }
335
112
 
113
+ export type CollectionTool<
114
+ TSchema extends ToolInputSchema | undefined = ToolInputSchema | undefined,
115
+ > = {
116
+ access?: (args: CollectionMCPAccessArgs) => MaybePromise<boolean>
117
+ handler: (args: CollectionToolHandlerArgs<TSchema>) => MaybePromise<MCPToolResponse>
118
+ input?: TSchema
119
+ } & Pick<Tool, 'annotations' | 'description' | 'overrideResponse'>
120
+
121
+ export type GlobalTool<TSchema extends ToolInputSchema | undefined = ToolInputSchema | undefined> =
122
+ {
123
+ access?: (args: GlobalMCPAccessArgs) => MaybePromise<boolean>
124
+ handler: (args: GlobalToolHandlerArgs<TSchema>) => MaybePromise<MCPToolResponse>
125
+ input?: TSchema
126
+ } & Pick<Tool, 'annotations' | 'description' | 'overrideResponse'>
127
+
336
128
  /**
337
- * MCP Handler options.
129
+ * Configures (or disables) a built-in tool without replacing it.
130
+ * `handler?: never` prevents a full `CollectionTool`/`GlobalTool` (which has a
131
+ * required handler) from being silently accepted at a built-in key slot.
338
132
  */
339
- export type MCPHandlerOptions = {
340
- /**
341
- * Set the base path of the MCP handler. This is the path that will be used to access the MCP handler.
342
- * @default /api
343
- */
344
- basePath?: string
345
- /**
346
- * If true, disables the SSE endpoint. Only Streamable HTTP will be available.
347
- * @default true
348
- */
349
- disableSse?: boolean
350
- /**
351
- * Set the maximum duration of the MCP handler. This is the maximum duration that the MCP handler will run for.
352
- * @default 60
353
- */
354
- maxDuration?: number
355
- /**
356
- * Callback function that receives MCP events.
357
- * This can be used to track analytics, debug issues, or implement custom behaviors.
358
- */
359
- onEvent?: (event: unknown) => void
360
- /**
361
- * Set the Redis URL for the MCP handler. This is the URL that will be used to access the Redis server.
362
- * @default process.env.REDIS_URL
363
- */
364
- redisUrl?: string
365
- /**
366
- * Set verbose logging.
367
- * @default false
368
- */
369
- verboseLogs?: boolean
133
+ export type MCPBuiltInCollectionToolOverride = {
134
+ access?: (args: CollectionMCPAccessArgs) => MaybePromise<boolean>
135
+ annotations?: ToolAnnotations
136
+ description?: string
137
+ handler?: never
138
+ overrideResponse?: MCPResponseOverride
139
+ }
140
+
141
+ export type MCPBuiltInGlobalToolOverride = {
142
+ access?: (args: GlobalMCPAccessArgs) => MaybePromise<boolean>
143
+ annotations?: ToolAnnotations
144
+ description?: string
145
+ handler?: never
146
+ overrideResponse?: MCPResponseOverride
370
147
  }
371
148
 
372
149
  /**
373
- * MCP Server options.
150
+ * Value at a custom (non-built-in) tool key. Either the tool itself, or `false`
151
+ * to disable it (useful when one plugin defines a custom tool and another
152
+ * wants to opt out per-collection).
374
153
  */
375
- export type MCPServerOptions = {
376
- /**
377
- * Optional instructions describing how to use the server and its features.
378
- */
379
- instructions?: string
380
- /**
381
- * Set the server info of the MCP server.
382
- */
383
- serverInfo?: {
384
- /**
385
- * Set the name of the MCP server.
386
- * @default 'Payload MCP Server'
387
- */
388
- name: string
389
- /**
390
- * Set the version of the MCP server.
391
- * @default '1.0.0'
392
- */
393
- version: string
394
- }
154
+ export type MCPTopLevelToolEntry = Tool
155
+
156
+ export type MCPCollectionToolsMap = {
157
+ [customToolName: string]: boolean | CollectionTool | MCPBuiltInCollectionToolOverride | undefined
158
+ } & {
159
+ [K in MCPCollectionBuiltinName]?: false | MCPBuiltInCollectionToolOverride
395
160
  }
396
161
 
397
- export type MCPAccessSettings = {
398
- auth?: {
399
- auth?: boolean
400
- forgotPassword?: boolean
401
- login?: boolean
402
- resetPassword?: boolean
403
- unlock?: boolean
404
- verify?: boolean
405
- }
406
- collections?: {
407
- create?: boolean
408
- delete?: boolean
409
- find?: boolean
410
- update?: boolean
411
- }
412
- config?: {
413
- find?: boolean
414
- update?: boolean
415
- }
416
- custom?: Record<string, boolean>
417
- globals?: {
418
- find?: boolean
419
- update?: boolean
420
- }
421
- jobs?: {
422
- create?: boolean
423
- run?: boolean
424
- update?: boolean
425
- }
426
- 'payload-mcp-prompt'?: Record<string, boolean>
427
- 'payload-mcp-resource'?: Record<string, boolean>
428
- 'payload-mcp-tool'?: Record<string, boolean>
429
- user: TypedUser
430
- } & Record<string, unknown>
162
+ export type MCPAuthCollectionToolsMap = {
163
+ [K in MCPCollectionAuthToolName]?: MCPBuiltInCollectionToolOverride | true
164
+ } & MCPCollectionToolsMap
431
165
 
432
- export type EntityConfig = MCPPluginConfig['collections'] | MCPPluginConfig['globals']
166
+ /** Auth-enabled collections get auth-tool name autocomplete; others get CRUD-only. */
167
+ export type MCPToolsMapForCollection<Slug extends CollectionSlug> = Slug extends AuthCollectionSlug
168
+ ? MCPAuthCollectionToolsMap
169
+ : MCPCollectionToolsMap
433
170
 
434
- export type FieldDefinition = {
435
- description?: string
436
- name: string
437
- options?: { label: string; value: string }[]
438
- position?: 'main' | 'sidebar'
439
- required?: boolean
440
- type: string
171
+ export type MCPGlobalToolsMap = {
172
+ [customToolName: string]: boolean | GlobalTool | MCPBuiltInGlobalToolOverride | undefined
173
+ } & {
174
+ [K in MCPGlobalBuiltinName]?: false | MCPBuiltInGlobalToolOverride
441
175
  }
442
176
 
443
- export type FieldModification = {
444
- changes: {
445
- description?: string
446
- options?: { label: string; value: string }[]
447
- position?: 'main' | 'sidebar'
448
- required?: boolean
449
- type?: string
450
- }
451
- fieldName: string
177
+ export type MCPTopLevelToolsMap = Record<string, Tool>
178
+
179
+ export type PromptHandlerArgs<TSchema = undefined> = {
180
+ input: TypedInput<TSchema>
181
+ req: PayloadRequest
182
+ serverContext: ServerContext
452
183
  }
453
184
 
454
- export type CollectionConfigUpdates = {
455
- access?: {
456
- create?: string
457
- delete?: string
458
- read?: string
459
- update?: string
460
- }
461
- description?: string
462
- slug?: string
463
- timestamps?: boolean
464
- versioning?: boolean
185
+ export type Prompt<TSchema extends ToolInputSchema = ToolInputSchema> = {
186
+ access?: (args: MCPAccessArgs) => MaybePromise<boolean>
187
+ argsSchema: TSchema
188
+ description: string
189
+ handler: (args: PromptHandlerArgs<TSchema>) => MaybePromise<{
190
+ messages: Array<{ content: { text: string; type: 'text' }; role: 'assistant' | 'user' }>
191
+ }>
192
+ title: string
465
193
  }
466
194
 
467
- export type AdminConfig = {
468
- avatar?: string
469
- css?: string
470
- dateFormat?: string
471
- inactivityRoute?: string
472
- livePreview?: {
473
- breakpoints?: Array<{
474
- height: number
475
- label: string
476
- name: string
477
- width: number
478
- }>
479
- }
480
- logoutRoute?: string
481
- meta?: {
482
- favicon?: string
483
- ogImage?: string
484
- titleSuffix?: string
485
- }
486
- user?: string
195
+ export type ResourceHandlerArgs = {
196
+ /** Variables extracted from a `ResourceTemplate` URI. Empty for static-URI resources. */
197
+ params: Record<string, string>
198
+ req: PayloadRequest
199
+ serverContext: ServerContext
200
+ uri: URL
487
201
  }
488
202
 
489
- export type DatabaseConfig = {
490
- connectOptions?: string
491
- type?: 'mongodb' | 'postgres'
492
- url?: string
203
+ export type Resource = {
204
+ access?: (args: MCPAccessArgs) => MaybePromise<boolean>
205
+ description: string
206
+ handler: (args: ResourceHandlerArgs) => MaybePromise<{
207
+ contents: Array<{ text: string; uri: string }>
208
+ }>
209
+ mimeType: string
210
+ title: string
211
+ uri: ResourceTemplate | string
493
212
  }
494
213
 
495
- export type PluginUpdates = {
496
- add?: string[]
497
- remove?: string[]
214
+ export type MCPPluginCollectionConfig<TSlug extends CollectionSlug> = {
215
+ description?: string
216
+ /** Fallback for built-in tools that don't set their own `overrideResponse`. */
217
+ overrideResponse?: MCPResponseOverride
218
+ tools?: MCPToolsMapForCollection<TSlug>
219
+ }
220
+
221
+ export type MCPPluginGlobalConfig = {
222
+ description?: string
223
+ overrideResponse?: MCPResponseOverride
224
+ tools?: MCPGlobalToolsMap
498
225
  }
499
226
 
500
- export type GeneralConfig = {
501
- cookiePrefix?: string
502
- cors?: string
503
- csrf?: string
504
- graphQL?: {
505
- disable?: boolean
506
- schemaOutputFile?: string
227
+ /**
228
+ * The user-facing config shape passed to `mcpPlugin({ ... })`. Tools, prompts,
229
+ * resources, and per-collection/global tool maps live in their own nested
230
+ * fields. `sanitizeMCPConfig` flattens those into `items` and applies defaults
231
+ * to produce a `SanitizedMCPPluginConfig` — the form every internal consumer
232
+ * actually works with.
233
+ */
234
+ export type MCPPluginConfig = {
235
+ collections?: {
236
+ [Slug in CollectionSlug]?: MCPPluginCollectionConfig<Slug>
237
+ }
238
+ /** Skip MCP endpoint registration. */
239
+ disabled?: boolean
240
+ globals?: {
241
+ [Slug in GlobalSlug]?: MCPPluginGlobalConfig
507
242
  }
508
- rateLimit?: {
509
- max?: number
510
- skip?: string
511
- window?: number
243
+ hooks?: {
244
+ /** Transform a tool response after its handler returns */
245
+ afterToolCall?: MCPAfterToolCallHook[]
512
246
  }
513
- secret?: string
514
- serverURL?: string
515
- typescript?: {
516
- declare?: boolean
517
- outputFile?: string
247
+ mcp?: {
248
+ serverOptions?: MCPServerOptions
249
+ verboseLogs?: boolean
518
250
  }
251
+ /** Replace the default MCP authorization resolver. */
252
+ overrideGetAuthorizedMCP?: (
253
+ args: {
254
+ pluginConfig: SanitizedMCPPluginConfig
255
+ } & GetAuthorizedMCPArgs,
256
+ ) => MaybePromise<AuthorizedMCP>
257
+ prompts?: Record<string, Prompt>
258
+ resources?: Record<string, Resource>
259
+ /** Cross-cutting tools (not scoped to any collection or global). */
260
+ tools?: MCPTopLevelToolsMap
519
261
  }
520
262
 
521
- export interface SchemaField {
522
- description?: string
523
- name: string
524
- options?: string[]
525
- required?: boolean
526
- type: string
263
+ export type SanitizedMCPPluginConfig = {
264
+ items: MCPItem[]
265
+ } & Pick<MCPPluginConfig, 'disabled' | 'hooks' | 'mcp' | 'overrideGetAuthorizedMCP'>
266
+
267
+ export type MCPServerOptions = {
268
+ options?: ConstructorParameters<typeof McpServer>[1]
269
+ serverInfo?: Partial<ConstructorParameters<typeof McpServer>[0]>
527
270
  }
528
271
 
529
- export interface TaskSequenceItem {
530
- description?: string
531
- retries?: number
532
- taskId: string
533
- taskSlug: string
534
- timeout?: number
272
+ /**
273
+ * One MCP primitive plus the metadata needed for config-driven filtering and
274
+ * registration.
275
+ *
276
+ * - `configKey`: the config identifier, e.g. `find` or `echo`.
277
+ * - `mcpName`: the MCP wire name, e.g. `findDocuments` or `echo`.
278
+ * - `label`: human-readable display text.
279
+ */
280
+ export type MCPItemBase = {
281
+ configKey: string
282
+ label: string
283
+ mcpName: string
535
284
  }
536
285
 
537
- export interface JobConfigUpdate {
538
- description?: string
539
- queue?: string
540
- retries?: number
541
- timeout?: number
286
+ export type CollectionMCPItem = {
287
+ collectionSlug: CollectionSlug
288
+ tool: CollectionTool
289
+ type: 'collectionTool'
290
+ } & MCPItemBase
291
+
292
+ export type GlobalMCPItem = {
293
+ globalSlug: GlobalSlug
294
+ tool: GlobalTool
295
+ type: 'globalTool'
296
+ } & MCPItemBase
297
+
298
+ export type MCPItem =
299
+ | ({
300
+ prompt: Prompt
301
+ type: 'prompt'
302
+ } & MCPItemBase)
303
+ | ({
304
+ resource: Resource
305
+ type: 'resource'
306
+ } & MCPItemBase)
307
+ | ({
308
+ tool: Tool
309
+ type: 'tool'
310
+ } & MCPItemBase)
311
+ | CollectionMCPItem
312
+ | GlobalMCPItem
313
+
314
+ /**
315
+ * The caller's identity + the MCP items authorized for this request. Disabled
316
+ * items and items blocked by access callbacks or Payload operation access are
317
+ * absent from `items`. Tool handlers receive this via `args.authorizedMCP` so
318
+ * they can spread `localAPIDefaults(authorizedMCP)` into every local API call.
319
+ */
320
+ export type AuthorizedMCP = {
321
+ items: MCPItem[]
322
+ overrideAccess: boolean
323
+ user: null | User
542
324
  }