@payloadcms/plugin-mcp 4.0.0-canary.3 → 4.0.0-canary.31

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 (493) hide show
  1. package/LICENSE.md +1 -1
  2. package/bin.js +7 -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 +8 -8
  8. package/dist/defineTool.d.ts.map +1 -1
  9. package/dist/endpoint/access.d.ts +12 -5
  10. package/dist/endpoint/access.d.ts.map +1 -1
  11. package/dist/endpoint/access.js +74 -103
  12. package/dist/endpoint/access.js.map +1 -1
  13. package/dist/endpoint/index.d.ts +1 -1
  14. package/dist/endpoint/index.d.ts.map +1 -1
  15. package/dist/endpoint/index.js +68 -17
  16. package/dist/endpoint/index.js.map +1 -1
  17. package/dist/exports/client.d.ts +1 -4
  18. package/dist/exports/client.d.ts.map +1 -1
  19. package/dist/exports/client.js +1 -4
  20. package/dist/exports/client.js.map +1 -1
  21. package/dist/exports/internal.d.ts +2 -0
  22. package/dist/exports/internal.d.ts.map +1 -0
  23. package/dist/exports/internal.js +3 -0
  24. package/dist/exports/internal.js.map +1 -0
  25. package/dist/index.d.ts +2 -2
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +3 -56
  28. package/dist/index.js.map +1 -1
  29. package/dist/mcp/buildMcpServer.d.ts +5 -5
  30. package/dist/mcp/buildMcpServer.d.ts.map +1 -1
  31. package/dist/mcp/buildMcpServer.js +67 -33
  32. package/dist/mcp/buildMcpServer.js.map +1 -1
  33. package/dist/mcp/builtin/collections/authTools.d.ts.map +1 -1
  34. package/dist/mcp/builtin/collections/authTools.js +79 -56
  35. package/dist/mcp/builtin/collections/authTools.js.map +1 -1
  36. package/dist/mcp/builtin/collections/countTool.d.ts +2 -0
  37. package/dist/mcp/builtin/collections/countTool.d.ts.map +1 -0
  38. package/dist/mcp/builtin/collections/countTool.js +63 -0
  39. package/dist/mcp/builtin/collections/countTool.js.map +1 -0
  40. package/dist/mcp/builtin/collections/countVersionsTool.d.ts +2 -0
  41. package/dist/mcp/builtin/collections/countVersionsTool.d.ts.map +1 -0
  42. package/dist/mcp/builtin/collections/countVersionsTool.js +60 -0
  43. package/dist/mcp/builtin/collections/countVersionsTool.js.map +1 -0
  44. package/dist/mcp/builtin/collections/createTool.d.ts +1 -1
  45. package/dist/mcp/builtin/collections/createTool.d.ts.map +1 -1
  46. package/dist/mcp/builtin/collections/createTool.js +105 -53
  47. package/dist/mcp/builtin/collections/createTool.js.map +1 -1
  48. package/dist/mcp/builtin/collections/deleteTool.d.ts.map +1 -1
  49. package/dist/mcp/builtin/collections/deleteTool.js +46 -44
  50. package/dist/mcp/builtin/collections/deleteTool.js.map +1 -1
  51. package/dist/mcp/builtin/collections/duplicateTool.d.ts +2 -0
  52. package/dist/mcp/builtin/collections/duplicateTool.d.ts.map +1 -0
  53. package/dist/mcp/builtin/collections/duplicateTool.js +90 -0
  54. package/dist/mcp/builtin/collections/duplicateTool.js.map +1 -0
  55. package/dist/mcp/builtin/collections/fileInput.d.ts +28 -0
  56. package/dist/mcp/builtin/collections/fileInput.d.ts.map +1 -0
  57. package/dist/mcp/builtin/collections/fileInput.js +123 -0
  58. package/dist/mcp/builtin/collections/fileInput.js.map +1 -0
  59. package/dist/mcp/builtin/collections/fileInput.spec.js +86 -0
  60. package/dist/mcp/builtin/collections/fileInput.spec.js.map +1 -0
  61. package/dist/mcp/builtin/collections/findDistinctTool.d.ts +2 -0
  62. package/dist/mcp/builtin/collections/findDistinctTool.d.ts.map +1 -0
  63. package/dist/mcp/builtin/collections/findDistinctTool.js +77 -0
  64. package/dist/mcp/builtin/collections/findDistinctTool.js.map +1 -0
  65. package/dist/mcp/builtin/collections/findTool.d.ts.map +1 -1
  66. package/dist/mcp/builtin/collections/findTool.js +30 -47
  67. package/dist/mcp/builtin/collections/findTool.js.map +1 -1
  68. package/dist/mcp/builtin/collections/findVersionByIDTool.d.ts +2 -0
  69. package/dist/mcp/builtin/collections/findVersionByIDTool.d.ts.map +1 -0
  70. package/dist/mcp/builtin/collections/findVersionByIDTool.js +74 -0
  71. package/dist/mcp/builtin/collections/findVersionByIDTool.js.map +1 -0
  72. package/dist/mcp/builtin/collections/findVersionsTool.d.ts +2 -0
  73. package/dist/mcp/builtin/collections/findVersionsTool.d.ts.map +1 -0
  74. package/dist/mcp/builtin/collections/findVersionsTool.js +84 -0
  75. package/dist/mcp/builtin/collections/findVersionsTool.js.map +1 -0
  76. package/dist/mcp/builtin/collections/getCollectionSchemaTool.d.ts.map +1 -1
  77. package/dist/mcp/builtin/collections/getCollectionSchemaTool.js +54 -9
  78. package/dist/mcp/builtin/collections/getCollectionSchemaTool.js.map +1 -1
  79. package/dist/mcp/builtin/collections/restoreVersionTool.d.ts +2 -0
  80. package/dist/mcp/builtin/collections/restoreVersionTool.d.ts.map +1 -0
  81. package/dist/mcp/builtin/collections/restoreVersionTool.js +69 -0
  82. package/dist/mcp/builtin/collections/restoreVersionTool.js.map +1 -0
  83. package/dist/mcp/builtin/collections/updateTool.d.ts.map +1 -1
  84. package/dist/mcp/builtin/collections/updateTool.js +68 -86
  85. package/dist/mcp/builtin/collections/updateTool.js.map +1 -1
  86. package/dist/mcp/builtin/collections/uploadInstructionsTool.d.ts +2 -0
  87. package/dist/mcp/builtin/collections/uploadInstructionsTool.d.ts.map +1 -0
  88. package/dist/mcp/builtin/collections/uploadInstructionsTool.js +55 -0
  89. package/dist/mcp/builtin/collections/uploadInstructionsTool.js.map +1 -0
  90. package/dist/mcp/builtin/formatEntityError.d.ts +16 -0
  91. package/dist/mcp/builtin/formatEntityError.d.ts.map +1 -0
  92. package/dist/mcp/builtin/formatEntityError.js +55 -0
  93. package/dist/mcp/builtin/formatEntityError.js.map +1 -0
  94. package/dist/mcp/builtin/getConfigInfoTool.d.ts.map +1 -1
  95. package/dist/mcp/builtin/getConfigInfoTool.js +23 -10
  96. package/dist/mcp/builtin/getConfigInfoTool.js.map +1 -1
  97. package/dist/mcp/builtin/globals/countVersionsTool.d.ts +2 -0
  98. package/dist/mcp/builtin/globals/countVersionsTool.d.ts.map +1 -0
  99. package/dist/mcp/builtin/globals/countVersionsTool.js +60 -0
  100. package/dist/mcp/builtin/globals/countVersionsTool.js.map +1 -0
  101. package/dist/mcp/builtin/globals/findTool.d.ts.map +1 -1
  102. package/dist/mcp/builtin/globals/findTool.js +13 -17
  103. package/dist/mcp/builtin/globals/findTool.js.map +1 -1
  104. package/dist/mcp/builtin/globals/findVersionByIDTool.d.ts +2 -0
  105. package/dist/mcp/builtin/globals/findVersionByIDTool.d.ts.map +1 -0
  106. package/dist/mcp/builtin/globals/findVersionByIDTool.js +68 -0
  107. package/dist/mcp/builtin/globals/findVersionByIDTool.js.map +1 -0
  108. package/dist/mcp/builtin/globals/findVersionsTool.d.ts +2 -0
  109. package/dist/mcp/builtin/globals/findVersionsTool.d.ts.map +1 -0
  110. package/dist/mcp/builtin/globals/findVersionsTool.js +78 -0
  111. package/dist/mcp/builtin/globals/findVersionsTool.js.map +1 -0
  112. package/dist/mcp/builtin/globals/getGlobalSchemaTool.d.ts.map +1 -1
  113. package/dist/mcp/builtin/globals/getGlobalSchemaTool.js +31 -8
  114. package/dist/mcp/builtin/globals/getGlobalSchemaTool.js.map +1 -1
  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 +70 -0
  118. package/dist/mcp/builtin/globals/restoreVersionTool.js.map +1 -0
  119. package/dist/mcp/builtin/globals/updateTool.d.ts.map +1 -1
  120. package/dist/mcp/builtin/globals/updateTool.js +29 -36
  121. package/dist/mcp/builtin/globals/updateTool.js.map +1 -1
  122. package/dist/mcp/builtinTools.d.ts +73 -2
  123. package/dist/mcp/builtinTools.d.ts.map +1 -1
  124. package/dist/mcp/builtinTools.js +73 -3
  125. package/dist/mcp/builtinTools.js.map +1 -1
  126. package/dist/mcp/sanitizeMCPConfig.d.ts +0 -1
  127. package/dist/mcp/sanitizeMCPConfig.d.ts.map +1 -1
  128. package/dist/mcp/sanitizeMCPConfig.js +48 -17
  129. package/dist/mcp/sanitizeMCPConfig.js.map +1 -1
  130. package/dist/stdio.d.ts +3 -3
  131. package/dist/stdio.d.ts.map +1 -1
  132. package/dist/stdio.js +84 -46
  133. package/dist/stdio.js.map +1 -1
  134. package/dist/types.d.ts +95 -89
  135. package/dist/types.d.ts.map +1 -1
  136. package/dist/types.js +2 -4
  137. package/dist/types.js.map +1 -1
  138. package/dist/utils/camelCase.d.ts.map +1 -1
  139. package/dist/utils/getPluginConfig.d.ts +1 -1
  140. package/dist/utils/getPluginConfig.js +1 -1
  141. package/dist/utils/getPluginConfig.js.map +1 -1
  142. package/dist/utils/resolveProjectRoot.d.ts.map +1 -1
  143. package/dist/utils/toStandardSchema.d.ts.map +1 -1
  144. package/package.json +10 -18
  145. package/src/defaultAccess.ts +3 -0
  146. package/src/endpoint/access.ts +79 -112
  147. package/src/endpoint/index.ts +58 -16
  148. package/src/exports/client.ts +2 -4
  149. package/src/exports/internal.ts +1 -0
  150. package/src/index.ts +5 -62
  151. package/src/mcp/buildMcpServer.ts +85 -50
  152. package/src/mcp/builtin/collections/authTools.ts +77 -69
  153. package/src/mcp/builtin/collections/countTool.ts +61 -0
  154. package/src/mcp/builtin/collections/countVersionsTool.ts +60 -0
  155. package/src/mcp/builtin/collections/createTool.ts +112 -76
  156. package/src/mcp/builtin/collections/deleteTool.ts +38 -64
  157. package/src/mcp/builtin/collections/duplicateTool.ts +84 -0
  158. package/src/mcp/builtin/collections/fileInput.spec.ts +93 -0
  159. package/src/mcp/builtin/collections/fileInput.ts +169 -0
  160. package/src/mcp/builtin/collections/findDistinctTool.ts +67 -0
  161. package/src/mcp/builtin/collections/findTool.ts +27 -107
  162. package/src/mcp/builtin/collections/findVersionByIDTool.ts +66 -0
  163. package/src/mcp/builtin/collections/findVersionsTool.ts +83 -0
  164. package/src/mcp/builtin/collections/getCollectionSchemaTool.ts +51 -6
  165. package/src/mcp/builtin/collections/restoreVersionTool.ts +65 -0
  166. package/src/mcp/builtin/collections/updateTool.ts +65 -100
  167. package/src/mcp/builtin/collections/uploadInstructionsTool.ts +64 -0
  168. package/src/mcp/builtin/formatEntityError.ts +77 -0
  169. package/src/mcp/builtin/getConfigInfoTool.ts +22 -5
  170. package/src/mcp/builtin/globals/countVersionsTool.ts +60 -0
  171. package/src/mcp/builtin/globals/findTool.ts +15 -51
  172. package/src/mcp/builtin/globals/findVersionByIDTool.ts +64 -0
  173. package/src/mcp/builtin/globals/findVersionsTool.ts +69 -0
  174. package/src/mcp/builtin/globals/getGlobalSchemaTool.ts +34 -6
  175. package/src/mcp/builtin/globals/restoreVersionTool.ts +68 -0
  176. package/src/mcp/builtin/globals/updateTool.ts +40 -60
  177. package/src/mcp/builtinTools.ts +72 -6
  178. package/src/mcp/sanitizeMCPConfig.ts +36 -19
  179. package/src/stdio.ts +79 -46
  180. package/src/types.ts +103 -93
  181. package/src/utils/getPluginConfig.ts +1 -1
  182. package/dist/collection/getAccessField.d.ts +0 -12
  183. package/dist/collection/getAccessField.d.ts.map +0 -1
  184. package/dist/collection/getAccessField.js +0 -72
  185. package/dist/collection/getAccessField.js.map +0 -1
  186. package/dist/collection/index.d.ts +0 -6
  187. package/dist/collection/index.d.ts.map +0 -1
  188. package/dist/collection/index.js +0 -105
  189. package/dist/collection/index.js.map +0 -1
  190. package/dist/components/APIKeyField/index.client.d.ts +0 -9
  191. package/dist/components/APIKeyField/index.client.d.ts.map +0 -1
  192. package/dist/components/APIKeyField/index.client.js +0 -85
  193. package/dist/components/APIKeyField/index.client.js.map +0 -1
  194. package/dist/components/APIKeyField/index.css +0 -105
  195. package/dist/components/APIKeysEmptyState/index.client.d.ts +0 -4
  196. package/dist/components/APIKeysEmptyState/index.client.d.ts.map +0 -1
  197. package/dist/components/APIKeysEmptyState/index.client.js +0 -21
  198. package/dist/components/APIKeysEmptyState/index.client.js.map +0 -1
  199. package/dist/components/AccessField/index.client.d.ts +0 -10
  200. package/dist/components/AccessField/index.client.d.ts.map +0 -1
  201. package/dist/components/AccessField/index.client.js +0 -247
  202. package/dist/components/AccessField/index.client.js.map +0 -1
  203. package/dist/components/AccessField/index.css +0 -99
  204. package/dist/components/SettingsMenu/index.client.d.ts +0 -8
  205. package/dist/components/SettingsMenu/index.client.d.ts.map +0 -1
  206. package/dist/components/SettingsMenu/index.client.js +0 -24
  207. package/dist/components/SettingsMenu/index.client.js.map +0 -1
  208. package/dist/mcp/builtin/collections/formatCollectionError.d.ts +0 -9
  209. package/dist/mcp/builtin/collections/formatCollectionError.d.ts.map +0 -1
  210. package/dist/mcp/builtin/collections/formatCollectionError.js +0 -60
  211. package/dist/mcp/builtin/collections/formatCollectionError.js.map +0 -1
  212. package/dist/mcp/builtin/validateEntityData.d.ts +0 -14
  213. package/dist/mcp/builtin/validateEntityData.d.ts.map +0 -1
  214. package/dist/mcp/builtin/validateEntityData.js +0 -82
  215. package/dist/mcp/builtin/validateEntityData.js.map +0 -1
  216. package/dist/translations/index.d.ts +0 -11
  217. package/dist/translations/index.d.ts.map +0 -1
  218. package/dist/translations/index.js +0 -92
  219. package/dist/translations/index.js.map +0 -1
  220. package/dist/translations/languages/ar.d.ts +0 -31
  221. package/dist/translations/languages/ar.d.ts.map +0 -1
  222. package/dist/translations/languages/ar.js +0 -34
  223. package/dist/translations/languages/ar.js.map +0 -1
  224. package/dist/translations/languages/az.d.ts +0 -31
  225. package/dist/translations/languages/az.d.ts.map +0 -1
  226. package/dist/translations/languages/az.js +0 -34
  227. package/dist/translations/languages/az.js.map +0 -1
  228. package/dist/translations/languages/bg.d.ts +0 -31
  229. package/dist/translations/languages/bg.d.ts.map +0 -1
  230. package/dist/translations/languages/bg.js +0 -34
  231. package/dist/translations/languages/bg.js.map +0 -1
  232. package/dist/translations/languages/bnBd.d.ts +0 -31
  233. package/dist/translations/languages/bnBd.d.ts.map +0 -1
  234. package/dist/translations/languages/bnBd.js +0 -34
  235. package/dist/translations/languages/bnBd.js.map +0 -1
  236. package/dist/translations/languages/bnIn.d.ts +0 -31
  237. package/dist/translations/languages/bnIn.d.ts.map +0 -1
  238. package/dist/translations/languages/bnIn.js +0 -34
  239. package/dist/translations/languages/bnIn.js.map +0 -1
  240. package/dist/translations/languages/ca.d.ts +0 -31
  241. package/dist/translations/languages/ca.d.ts.map +0 -1
  242. package/dist/translations/languages/ca.js +0 -34
  243. package/dist/translations/languages/ca.js.map +0 -1
  244. package/dist/translations/languages/cs.d.ts +0 -31
  245. package/dist/translations/languages/cs.d.ts.map +0 -1
  246. package/dist/translations/languages/cs.js +0 -34
  247. package/dist/translations/languages/cs.js.map +0 -1
  248. package/dist/translations/languages/da.d.ts +0 -31
  249. package/dist/translations/languages/da.d.ts.map +0 -1
  250. package/dist/translations/languages/da.js +0 -34
  251. package/dist/translations/languages/da.js.map +0 -1
  252. package/dist/translations/languages/de.d.ts +0 -31
  253. package/dist/translations/languages/de.d.ts.map +0 -1
  254. package/dist/translations/languages/de.js +0 -34
  255. package/dist/translations/languages/de.js.map +0 -1
  256. package/dist/translations/languages/en.d.ts +0 -31
  257. package/dist/translations/languages/en.d.ts.map +0 -1
  258. package/dist/translations/languages/en.js +0 -34
  259. package/dist/translations/languages/en.js.map +0 -1
  260. package/dist/translations/languages/es.d.ts +0 -31
  261. package/dist/translations/languages/es.d.ts.map +0 -1
  262. package/dist/translations/languages/es.js +0 -34
  263. package/dist/translations/languages/es.js.map +0 -1
  264. package/dist/translations/languages/et.d.ts +0 -31
  265. package/dist/translations/languages/et.d.ts.map +0 -1
  266. package/dist/translations/languages/et.js +0 -34
  267. package/dist/translations/languages/et.js.map +0 -1
  268. package/dist/translations/languages/fa.d.ts +0 -31
  269. package/dist/translations/languages/fa.d.ts.map +0 -1
  270. package/dist/translations/languages/fa.js +0 -34
  271. package/dist/translations/languages/fa.js.map +0 -1
  272. package/dist/translations/languages/fr.d.ts +0 -31
  273. package/dist/translations/languages/fr.d.ts.map +0 -1
  274. package/dist/translations/languages/fr.js +0 -34
  275. package/dist/translations/languages/fr.js.map +0 -1
  276. package/dist/translations/languages/he.d.ts +0 -31
  277. package/dist/translations/languages/he.d.ts.map +0 -1
  278. package/dist/translations/languages/he.js +0 -34
  279. package/dist/translations/languages/he.js.map +0 -1
  280. package/dist/translations/languages/hr.d.ts +0 -31
  281. package/dist/translations/languages/hr.d.ts.map +0 -1
  282. package/dist/translations/languages/hr.js +0 -34
  283. package/dist/translations/languages/hr.js.map +0 -1
  284. package/dist/translations/languages/hu.d.ts +0 -31
  285. package/dist/translations/languages/hu.d.ts.map +0 -1
  286. package/dist/translations/languages/hu.js +0 -34
  287. package/dist/translations/languages/hu.js.map +0 -1
  288. package/dist/translations/languages/hy.d.ts +0 -31
  289. package/dist/translations/languages/hy.d.ts.map +0 -1
  290. package/dist/translations/languages/hy.js +0 -34
  291. package/dist/translations/languages/hy.js.map +0 -1
  292. package/dist/translations/languages/id.d.ts +0 -31
  293. package/dist/translations/languages/id.d.ts.map +0 -1
  294. package/dist/translations/languages/id.js +0 -34
  295. package/dist/translations/languages/id.js.map +0 -1
  296. package/dist/translations/languages/is.d.ts +0 -31
  297. package/dist/translations/languages/is.d.ts.map +0 -1
  298. package/dist/translations/languages/is.js +0 -34
  299. package/dist/translations/languages/is.js.map +0 -1
  300. package/dist/translations/languages/it.d.ts +0 -31
  301. package/dist/translations/languages/it.d.ts.map +0 -1
  302. package/dist/translations/languages/it.js +0 -34
  303. package/dist/translations/languages/it.js.map +0 -1
  304. package/dist/translations/languages/ja.d.ts +0 -31
  305. package/dist/translations/languages/ja.d.ts.map +0 -1
  306. package/dist/translations/languages/ja.js +0 -34
  307. package/dist/translations/languages/ja.js.map +0 -1
  308. package/dist/translations/languages/ko.d.ts +0 -31
  309. package/dist/translations/languages/ko.d.ts.map +0 -1
  310. package/dist/translations/languages/ko.js +0 -34
  311. package/dist/translations/languages/ko.js.map +0 -1
  312. package/dist/translations/languages/lt.d.ts +0 -31
  313. package/dist/translations/languages/lt.d.ts.map +0 -1
  314. package/dist/translations/languages/lt.js +0 -34
  315. package/dist/translations/languages/lt.js.map +0 -1
  316. package/dist/translations/languages/lv.d.ts +0 -31
  317. package/dist/translations/languages/lv.d.ts.map +0 -1
  318. package/dist/translations/languages/lv.js +0 -34
  319. package/dist/translations/languages/lv.js.map +0 -1
  320. package/dist/translations/languages/my.d.ts +0 -31
  321. package/dist/translations/languages/my.d.ts.map +0 -1
  322. package/dist/translations/languages/my.js +0 -34
  323. package/dist/translations/languages/my.js.map +0 -1
  324. package/dist/translations/languages/nb.d.ts +0 -31
  325. package/dist/translations/languages/nb.d.ts.map +0 -1
  326. package/dist/translations/languages/nb.js +0 -34
  327. package/dist/translations/languages/nb.js.map +0 -1
  328. package/dist/translations/languages/nl.d.ts +0 -31
  329. package/dist/translations/languages/nl.d.ts.map +0 -1
  330. package/dist/translations/languages/nl.js +0 -34
  331. package/dist/translations/languages/nl.js.map +0 -1
  332. package/dist/translations/languages/pl.d.ts +0 -31
  333. package/dist/translations/languages/pl.d.ts.map +0 -1
  334. package/dist/translations/languages/pl.js +0 -34
  335. package/dist/translations/languages/pl.js.map +0 -1
  336. package/dist/translations/languages/pt.d.ts +0 -31
  337. package/dist/translations/languages/pt.d.ts.map +0 -1
  338. package/dist/translations/languages/pt.js +0 -34
  339. package/dist/translations/languages/pt.js.map +0 -1
  340. package/dist/translations/languages/ro.d.ts +0 -31
  341. package/dist/translations/languages/ro.d.ts.map +0 -1
  342. package/dist/translations/languages/ro.js +0 -34
  343. package/dist/translations/languages/ro.js.map +0 -1
  344. package/dist/translations/languages/rs.d.ts +0 -31
  345. package/dist/translations/languages/rs.d.ts.map +0 -1
  346. package/dist/translations/languages/rs.js +0 -34
  347. package/dist/translations/languages/rs.js.map +0 -1
  348. package/dist/translations/languages/rsLatin.d.ts +0 -31
  349. package/dist/translations/languages/rsLatin.d.ts.map +0 -1
  350. package/dist/translations/languages/rsLatin.js +0 -34
  351. package/dist/translations/languages/rsLatin.js.map +0 -1
  352. package/dist/translations/languages/ru.d.ts +0 -31
  353. package/dist/translations/languages/ru.d.ts.map +0 -1
  354. package/dist/translations/languages/ru.js +0 -34
  355. package/dist/translations/languages/ru.js.map +0 -1
  356. package/dist/translations/languages/sk.d.ts +0 -31
  357. package/dist/translations/languages/sk.d.ts.map +0 -1
  358. package/dist/translations/languages/sk.js +0 -34
  359. package/dist/translations/languages/sk.js.map +0 -1
  360. package/dist/translations/languages/sl.d.ts +0 -31
  361. package/dist/translations/languages/sl.d.ts.map +0 -1
  362. package/dist/translations/languages/sl.js +0 -34
  363. package/dist/translations/languages/sl.js.map +0 -1
  364. package/dist/translations/languages/sv.d.ts +0 -31
  365. package/dist/translations/languages/sv.d.ts.map +0 -1
  366. package/dist/translations/languages/sv.js +0 -34
  367. package/dist/translations/languages/sv.js.map +0 -1
  368. package/dist/translations/languages/ta.d.ts +0 -31
  369. package/dist/translations/languages/ta.d.ts.map +0 -1
  370. package/dist/translations/languages/ta.js +0 -34
  371. package/dist/translations/languages/ta.js.map +0 -1
  372. package/dist/translations/languages/th.d.ts +0 -31
  373. package/dist/translations/languages/th.d.ts.map +0 -1
  374. package/dist/translations/languages/th.js +0 -34
  375. package/dist/translations/languages/th.js.map +0 -1
  376. package/dist/translations/languages/tr.d.ts +0 -31
  377. package/dist/translations/languages/tr.d.ts.map +0 -1
  378. package/dist/translations/languages/tr.js +0 -34
  379. package/dist/translations/languages/tr.js.map +0 -1
  380. package/dist/translations/languages/uk.d.ts +0 -31
  381. package/dist/translations/languages/uk.d.ts.map +0 -1
  382. package/dist/translations/languages/uk.js +0 -34
  383. package/dist/translations/languages/uk.js.map +0 -1
  384. package/dist/translations/languages/vi.d.ts +0 -31
  385. package/dist/translations/languages/vi.d.ts.map +0 -1
  386. package/dist/translations/languages/vi.js +0 -34
  387. package/dist/translations/languages/vi.js.map +0 -1
  388. package/dist/translations/languages/zh.d.ts +0 -31
  389. package/dist/translations/languages/zh.d.ts.map +0 -1
  390. package/dist/translations/languages/zh.js +0 -34
  391. package/dist/translations/languages/zh.js.map +0 -1
  392. package/dist/translations/languages/zhTw.d.ts +0 -31
  393. package/dist/translations/languages/zhTw.d.ts.map +0 -1
  394. package/dist/translations/languages/zhTw.js +0 -34
  395. package/dist/translations/languages/zhTw.js.map +0 -1
  396. package/dist/translations/types.d.ts +0 -32
  397. package/dist/translations/types.d.ts.map +0 -1
  398. package/dist/translations/types.js +0 -3
  399. package/dist/translations/types.js.map +0 -1
  400. package/dist/utils/getVirtualFieldNames.d.ts +0 -14
  401. package/dist/utils/getVirtualFieldNames.d.ts.map +0 -1
  402. package/dist/utils/getVirtualFieldNames.js +0 -35
  403. package/dist/utils/getVirtualFieldNames.js.map +0 -1
  404. package/dist/utils/localAPIDefaults.d.ts +0 -20
  405. package/dist/utils/localAPIDefaults.d.ts.map +0 -1
  406. package/dist/utils/localAPIDefaults.js +0 -19
  407. package/dist/utils/localAPIDefaults.js.map +0 -1
  408. package/dist/utils/schemaConversion/getEntityInputSchema.d.ts +0 -11
  409. package/dist/utils/schemaConversion/getEntityInputSchema.d.ts.map +0 -1
  410. package/dist/utils/schemaConversion/getEntityInputSchema.js +0 -34
  411. package/dist/utils/schemaConversion/getEntityInputSchema.js.map +0 -1
  412. package/dist/utils/schemaConversion/removeVirtualFieldsFromSchema.d.ts +0 -7
  413. package/dist/utils/schemaConversion/removeVirtualFieldsFromSchema.d.ts.map +0 -1
  414. package/dist/utils/schemaConversion/removeVirtualFieldsFromSchema.js +0 -20
  415. package/dist/utils/schemaConversion/removeVirtualFieldsFromSchema.js.map +0 -1
  416. package/dist/utils/schemaConversion/sanitizeEntitySchema.d.ts +0 -15
  417. package/dist/utils/schemaConversion/sanitizeEntitySchema.d.ts.map +0 -1
  418. package/dist/utils/schemaConversion/sanitizeEntitySchema.js +0 -464
  419. package/dist/utils/schemaConversion/sanitizeEntitySchema.js.map +0 -1
  420. package/dist/utils/schemaConversion/sanitizeEntitySchema.spec.js +0 -158
  421. package/dist/utils/schemaConversion/sanitizeEntitySchema.spec.js.map +0 -1
  422. package/dist/utils/transformPointDataToPayload.d.ts +0 -7
  423. package/dist/utils/transformPointDataToPayload.d.ts.map +0 -1
  424. package/dist/utils/transformPointDataToPayload.js +0 -28
  425. package/dist/utils/transformPointDataToPayload.js.map +0 -1
  426. package/dist/utils/whereSchema.d.ts +0 -9
  427. package/dist/utils/whereSchema.d.ts.map +0 -1
  428. package/dist/utils/whereSchema.js +0 -13
  429. package/dist/utils/whereSchema.js.map +0 -1
  430. package/src/collection/getAccessField.ts +0 -84
  431. package/src/collection/index.ts +0 -105
  432. package/src/components/APIKeyField/index.client.tsx +0 -68
  433. package/src/components/APIKeyField/index.css +0 -105
  434. package/src/components/APIKeysEmptyState/index.client.tsx +0 -33
  435. package/src/components/AccessField/index.client.tsx +0 -296
  436. package/src/components/AccessField/index.css +0 -99
  437. package/src/components/SettingsMenu/index.client.tsx +0 -30
  438. package/src/mcp/builtin/collections/formatCollectionError.ts +0 -84
  439. package/src/mcp/builtin/validateEntityData.ts +0 -132
  440. package/src/translations/index.ts +0 -105
  441. package/src/translations/languages/ar.ts +0 -38
  442. package/src/translations/languages/az.ts +0 -38
  443. package/src/translations/languages/bg.ts +0 -39
  444. package/src/translations/languages/bnBd.ts +0 -39
  445. package/src/translations/languages/bnIn.ts +0 -39
  446. package/src/translations/languages/ca.ts +0 -39
  447. package/src/translations/languages/cs.ts +0 -39
  448. package/src/translations/languages/da.ts +0 -38
  449. package/src/translations/languages/de.ts +0 -39
  450. package/src/translations/languages/en.ts +0 -39
  451. package/src/translations/languages/es.ts +0 -39
  452. package/src/translations/languages/et.ts +0 -38
  453. package/src/translations/languages/fa.ts +0 -39
  454. package/src/translations/languages/fr.ts +0 -39
  455. package/src/translations/languages/he.ts +0 -37
  456. package/src/translations/languages/hr.ts +0 -39
  457. package/src/translations/languages/hu.ts +0 -39
  458. package/src/translations/languages/hy.ts +0 -39
  459. package/src/translations/languages/id.ts +0 -39
  460. package/src/translations/languages/is.ts +0 -39
  461. package/src/translations/languages/it.ts +0 -39
  462. package/src/translations/languages/ja.ts +0 -39
  463. package/src/translations/languages/ko.ts +0 -39
  464. package/src/translations/languages/lt.ts +0 -39
  465. package/src/translations/languages/lv.ts +0 -38
  466. package/src/translations/languages/my.ts +0 -39
  467. package/src/translations/languages/nb.ts +0 -39
  468. package/src/translations/languages/nl.ts +0 -39
  469. package/src/translations/languages/pl.ts +0 -38
  470. package/src/translations/languages/pt.ts +0 -39
  471. package/src/translations/languages/ro.ts +0 -39
  472. package/src/translations/languages/rs.ts +0 -38
  473. package/src/translations/languages/rsLatin.ts +0 -38
  474. package/src/translations/languages/ru.ts +0 -39
  475. package/src/translations/languages/sk.ts +0 -39
  476. package/src/translations/languages/sl.ts +0 -38
  477. package/src/translations/languages/sv.ts +0 -39
  478. package/src/translations/languages/ta.ts +0 -39
  479. package/src/translations/languages/th.ts +0 -38
  480. package/src/translations/languages/tr.ts +0 -38
  481. package/src/translations/languages/uk.ts +0 -39
  482. package/src/translations/languages/vi.ts +0 -39
  483. package/src/translations/languages/zh.ts +0 -36
  484. package/src/translations/languages/zhTw.ts +0 -36
  485. package/src/translations/types.ts +0 -34
  486. package/src/utils/getVirtualFieldNames.ts +0 -53
  487. package/src/utils/localAPIDefaults.ts +0 -22
  488. package/src/utils/schemaConversion/getEntityInputSchema.ts +0 -78
  489. package/src/utils/schemaConversion/removeVirtualFieldsFromSchema.ts +0 -27
  490. package/src/utils/schemaConversion/sanitizeEntitySchema.spec.ts +0 -103
  491. package/src/utils/schemaConversion/sanitizeEntitySchema.ts +0 -529
  492. package/src/utils/transformPointDataToPayload.ts +0 -40
  493. package/src/utils/whereSchema.ts +0 -24
package/dist/index.js CHANGED
@@ -1,25 +1,14 @@
1
- import { defaultUserCollection, definePlugin } from 'payload';
2
- import { getAPIKeysCollection } from './collection/index.js';
1
+ import { definePlugin } from 'payload';
3
2
  import { mcpEndpoint } from './endpoint/index.js';
4
3
  import { sanitizeMCPConfig } from './mcp/sanitizeMCPConfig.js';
5
- import { translations } from './translations/index.js';
6
4
  export { defineCollectionTool, defineGlobalTool, definePrompt, defineTool } from './defineTool.js';
7
5
  export const mcpPlugin = definePlugin({
8
6
  slug: '@payloadcms/plugin-mcp',
9
7
  order: 10,
10
- plugin: ({ config, plugins, ...rawConfig })=>{
11
- // If a project has no auth collection yet, add the default users collection
12
- // so the relationship target and default `userCollection` exist.
13
- if (!config.admin?.user) {
14
- const firstCollectionWithAuth = (config.collections ?? []).find(({ auth })=>Boolean(auth));
15
- if (!firstCollectionWithAuth) {
16
- ;
17
- (config.collections ??= []).push(defaultUserCollection);
18
- }
19
- }
8
+ plugin: ({ config, options, plugins })=>{
20
9
  const pluginConfig = sanitizeMCPConfig({
21
10
  config,
22
- pluginConfig: rawConfig
11
+ pluginConfig: options
23
12
  });
24
13
  // Stash the sanitized config on plugin options so `getPluginConfig()` reads it.
25
14
  const registered = plugins['@payloadcms/plugin-mcp'];
@@ -27,53 +16,11 @@ export const mcpPlugin = definePlugin({
27
16
  // @ts-expect-error
28
17
  registered.sanitizedOptions = pluginConfig;
29
18
  }
30
- ;
31
- (config.collections ??= []).push(getAPIKeysCollection({
32
- pluginConfig
33
- }));
34
- if (!config.i18n) {
35
- config.i18n = {};
36
- }
37
- if (!config.i18n.translations) {
38
- config.i18n.translations = {};
39
- }
40
- const supportedLanguageKeys = config.i18n.supportedLanguages ? Object.keys(config.i18n.supportedLanguages) : [
41
- 'en'
42
- ];
43
- for (const lang of supportedLanguageKeys){
44
- const pluginEntry = translations[lang];
45
- if (!pluginEntry) {
46
- continue;
47
- }
48
- const typedLocale = lang;
49
- const existing = config.i18n.translations[typedLocale] ?? {};
50
- config.i18n.translations[typedLocale] = {
51
- ...existing,
52
- 'plugin-mcp': pluginEntry.translations['plugin-mcp']
53
- };
54
- }
55
- // Keep the API-keys collection registered even when disabled, so DB schema
56
- // and generated types don't drift between enabled/disabled environments.
57
19
  if (pluginConfig.disabled) {
58
20
  return config;
59
21
  }
60
22
  return {
61
23
  ...config,
62
- admin: {
63
- ...config.admin,
64
- components: {
65
- ...config.admin?.components,
66
- userMenuSettingsItems: [
67
- ...config.admin?.components?.userMenuSettingsItems ?? [],
68
- {
69
- group: 'MCP',
70
- items: [
71
- '@payloadcms/plugin-mcp/client#MCPSettingsMenu'
72
- ]
73
- }
74
- ]
75
- }
76
- },
77
24
  endpoints: [
78
25
  ...config.endpoints ?? [],
79
26
  // Payload prefixes /api, so the full path is /api/mcp.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import type { AcceptedLanguages } from '@payloadcms/translations'\n\nimport { defaultUserCollection, definePlugin } from 'payload'\n\nimport type { PluginDefaultTranslationsObject } from './translations/types.js'\nimport type { AuthorizedMCP, MCPPluginConfig, SanitizedMCPPluginConfig } from './types.js'\n\nimport { getAPIKeysCollection } from './collection/index.js'\nimport { mcpEndpoint } from './endpoint/index.js'\nimport { sanitizeMCPConfig } from './mcp/sanitizeMCPConfig.js'\nimport { translations } from './translations/index.js'\n\ndeclare module 'payload' {\n export interface PayloadRequest {\n payloadAPI: 'GraphQL' | 'local' | 'MCP' | 'REST'\n }\n interface RegisteredPlugins {\n /** After the plugin's `plugin` callback runs, `options` holds the sanitized config. */\n '@payloadcms/plugin-mcp': MCPPluginConfig\n }\n}\n\nexport type { AuthorizedMCP, MCPPluginConfig, SanitizedMCPPluginConfig }\n\nexport { defineCollectionTool, defineGlobalTool, definePrompt, defineTool } from './defineTool.js'\n\nexport const mcpPlugin = definePlugin<MCPPluginConfig>({\n slug: '@payloadcms/plugin-mcp',\n order: 10,\n plugin: ({ config, plugins, ...rawConfig }) => {\n // If a project has no auth collection yet, add the default users collection\n // so the relationship target and default `userCollection` exist.\n if (!config.admin?.user) {\n const firstCollectionWithAuth = (config.collections ?? []).find(({ auth }) => Boolean(auth))\n if (!firstCollectionWithAuth) {\n ;(config.collections ??= []).push(defaultUserCollection)\n }\n }\n\n const pluginConfig = sanitizeMCPConfig({ config, pluginConfig: rawConfig })\n\n // Stash the sanitized config on plugin options so `getPluginConfig()` reads it.\n const registered = plugins['@payloadcms/plugin-mcp']\n if (registered) {\n // @ts-expect-error\n registered.sanitizedOptions = pluginConfig as unknown as typeof registered.options\n }\n\n ;(config.collections ??= []).push(getAPIKeysCollection({ pluginConfig }))\n\n if (!config.i18n) {\n config.i18n = {}\n }\n\n if (!config.i18n.translations) {\n config.i18n.translations = {}\n }\n\n const supportedLanguageKeys = config.i18n.supportedLanguages\n ? Object.keys(config.i18n.supportedLanguages)\n : ['en']\n\n for (const lang of supportedLanguageKeys) {\n const pluginEntry = translations[lang as keyof typeof translations]\n if (!pluginEntry) {\n continue\n }\n\n const typedLocale = lang as AcceptedLanguages\n const existing = (config.i18n.translations[typedLocale] ?? {}) as Record<string, unknown>\n config.i18n.translations[typedLocale] = {\n ...existing,\n 'plugin-mcp': pluginEntry.translations['plugin-mcp'],\n } as PluginDefaultTranslationsObject\n }\n\n // Keep the API-keys collection registered even when disabled, so DB schema\n // and generated types don't drift between enabled/disabled environments.\n if (pluginConfig.disabled) {\n return config\n }\n\n return {\n ...config,\n admin: {\n ...config.admin,\n components: {\n ...config.admin?.components,\n userMenuSettingsItems: [\n ...(config.admin?.components?.userMenuSettingsItems ?? []),\n {\n group: 'MCP',\n items: ['@payloadcms/plugin-mcp/client#MCPSettingsMenu'],\n },\n ],\n },\n },\n endpoints: [\n ...(config.endpoints ?? []),\n // Payload prefixes /api, so the full path is /api/mcp.\n { handler: mcpEndpoint, method: 'post', path: '/mcp' },\n // Streamable HTTP's optional server=>client GET stream. We don't offer\n // one, so answer 405 per spec-— clients then skip it cleanly\n {\n handler: () => new Response(null, { headers: { Allow: 'POST' }, status: 405 }),\n method: 'get',\n path: '/mcp',\n },\n ],\n }\n },\n})\n"],"names":["defaultUserCollection","definePlugin","getAPIKeysCollection","mcpEndpoint","sanitizeMCPConfig","translations","defineCollectionTool","defineGlobalTool","definePrompt","defineTool","mcpPlugin","slug","order","plugin","config","plugins","rawConfig","admin","user","firstCollectionWithAuth","collections","find","auth","Boolean","push","pluginConfig","registered","sanitizedOptions","i18n","supportedLanguageKeys","supportedLanguages","Object","keys","lang","pluginEntry","typedLocale","existing","disabled","components","userMenuSettingsItems","group","items","endpoints","handler","method","path","Response","headers","Allow","status"],"mappings":"AAEA,SAASA,qBAAqB,EAAEC,YAAY,QAAQ,UAAS;AAK7D,SAASC,oBAAoB,QAAQ,wBAAuB;AAC5D,SAASC,WAAW,QAAQ,sBAAqB;AACjD,SAASC,iBAAiB,QAAQ,6BAA4B;AAC9D,SAASC,YAAY,QAAQ,0BAAyB;AActD,SAASC,oBAAoB,EAAEC,gBAAgB,EAAEC,YAAY,EAAEC,UAAU,QAAQ,kBAAiB;AAElG,OAAO,MAAMC,YAAYT,aAA8B;IACrDU,MAAM;IACNC,OAAO;IACPC,QAAQ,CAAC,EAAEC,MAAM,EAAEC,OAAO,EAAE,GAAGC,WAAW;QACxC,4EAA4E;QAC5E,iEAAiE;QACjE,IAAI,CAACF,OAAOG,KAAK,EAAEC,MAAM;YACvB,MAAMC,0BAA0B,AAACL,CAAAA,OAAOM,WAAW,IAAI,EAAE,AAAD,EAAGC,IAAI,CAAC,CAAC,EAAEC,IAAI,EAAE,GAAKC,QAAQD;YACtF,IAAI,CAACH,yBAAyB;;gBAC1BL,CAAAA,OAAOM,WAAW,KAAK,EAAE,AAAD,EAAGI,IAAI,CAACxB;YACpC;QACF;QAEA,MAAMyB,eAAerB,kBAAkB;YAAEU;YAAQW,cAAcT;QAAU;QAEzE,gFAAgF;QAChF,MAAMU,aAAaX,OAAO,CAAC,yBAAyB;QACpD,IAAIW,YAAY;YACd,mBAAmB;YACnBA,WAAWC,gBAAgB,GAAGF;QAChC;;QAEEX,CAAAA,OAAOM,WAAW,KAAK,EAAE,AAAD,EAAGI,IAAI,CAACtB,qBAAqB;YAAEuB;QAAa;QAEtE,IAAI,CAACX,OAAOc,IAAI,EAAE;YAChBd,OAAOc,IAAI,GAAG,CAAC;QACjB;QAEA,IAAI,CAACd,OAAOc,IAAI,CAACvB,YAAY,EAAE;YAC7BS,OAAOc,IAAI,CAACvB,YAAY,GAAG,CAAC;QAC9B;QAEA,MAAMwB,wBAAwBf,OAAOc,IAAI,CAACE,kBAAkB,GACxDC,OAAOC,IAAI,CAAClB,OAAOc,IAAI,CAACE,kBAAkB,IAC1C;YAAC;SAAK;QAEV,KAAK,MAAMG,QAAQJ,sBAAuB;YACxC,MAAMK,cAAc7B,YAAY,CAAC4B,KAAkC;YACnE,IAAI,CAACC,aAAa;gBAChB;YACF;YAEA,MAAMC,cAAcF;YACpB,MAAMG,WAAYtB,OAAOc,IAAI,CAACvB,YAAY,CAAC8B,YAAY,IAAI,CAAC;YAC5DrB,OAAOc,IAAI,CAACvB,YAAY,CAAC8B,YAAY,GAAG;gBACtC,GAAGC,QAAQ;gBACX,cAAcF,YAAY7B,YAAY,CAAC,aAAa;YACtD;QACF;QAEA,2EAA2E;QAC3E,yEAAyE;QACzE,IAAIoB,aAAaY,QAAQ,EAAE;YACzB,OAAOvB;QACT;QAEA,OAAO;YACL,GAAGA,MAAM;YACTG,OAAO;gBACL,GAAGH,OAAOG,KAAK;gBACfqB,YAAY;oBACV,GAAGxB,OAAOG,KAAK,EAAEqB,UAAU;oBAC3BC,uBAAuB;2BACjBzB,OAAOG,KAAK,EAAEqB,YAAYC,yBAAyB,EAAE;wBACzD;4BACEC,OAAO;4BACPC,OAAO;gCAAC;6BAAgD;wBAC1D;qBACD;gBACH;YACF;YACAC,WAAW;mBACL5B,OAAO4B,SAAS,IAAI,EAAE;gBAC1B,uDAAuD;gBACvD;oBAAEC,SAASxC;oBAAayC,QAAQ;oBAAQC,MAAM;gBAAO;gBACrD,uEAAuE;gBACvE,6DAA6D;gBAC7D;oBACEF,SAAS,IAAM,IAAIG,SAAS,MAAM;4BAAEC,SAAS;gCAAEC,OAAO;4BAAO;4BAAGC,QAAQ;wBAAI;oBAC5EL,QAAQ;oBACRC,MAAM;gBACR;aACD;QACH;IACF;AACF,GAAE"}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { definePlugin } from 'payload'\n\nimport type { AuthorizedMCP, MCPPluginConfig, SanitizedMCPPluginConfig } from './types.js'\n\nimport { mcpEndpoint } from './endpoint/index.js'\nimport { sanitizeMCPConfig } from './mcp/sanitizeMCPConfig.js'\n\ndeclare module 'payload' {\n export interface PayloadRequestAPI {\n MCP: true\n }\n interface RegisteredPlugins {\n /** After the plugin's `plugin` callback runs, `options` holds the sanitized config. */\n '@payloadcms/plugin-mcp': MCPPluginConfig\n }\n}\n\nexport type { AuthorizedMCP, MCPPluginConfig, SanitizedMCPPluginConfig }\n\nexport { defineCollectionTool, defineGlobalTool, definePrompt, defineTool } from './defineTool.js'\n\nexport const mcpPlugin = definePlugin<MCPPluginConfig>({\n slug: '@payloadcms/plugin-mcp',\n order: 10,\n plugin: ({ config, options, plugins }) => {\n const pluginConfig = sanitizeMCPConfig({ config, pluginConfig: options })\n\n // Stash the sanitized config on plugin options so `getPluginConfig()` reads it.\n const registered = plugins['@payloadcms/plugin-mcp']\n if (registered) {\n // @ts-expect-error\n registered.sanitizedOptions = pluginConfig as unknown as typeof registered.options\n }\n\n if (pluginConfig.disabled) {\n return config\n }\n\n return {\n ...config,\n endpoints: [\n ...(config.endpoints ?? []),\n // Payload prefixes /api, so the full path is /api/mcp.\n { handler: mcpEndpoint, method: 'post', path: '/mcp' },\n // Streamable HTTP's optional server=>client GET stream. We don't offer\n // one, so answer 405 per spec-— clients then skip it cleanly\n {\n handler: () => new Response(null, { headers: { Allow: 'POST' }, status: 405 }),\n method: 'get',\n path: '/mcp',\n },\n ],\n }\n },\n})\n"],"names":["definePlugin","mcpEndpoint","sanitizeMCPConfig","defineCollectionTool","defineGlobalTool","definePrompt","defineTool","mcpPlugin","slug","order","plugin","config","options","plugins","pluginConfig","registered","sanitizedOptions","disabled","endpoints","handler","method","path","Response","headers","Allow","status"],"mappings":"AAAA,SAASA,YAAY,QAAQ,UAAS;AAItC,SAASC,WAAW,QAAQ,sBAAqB;AACjD,SAASC,iBAAiB,QAAQ,6BAA4B;AAc9D,SAASC,oBAAoB,EAAEC,gBAAgB,EAAEC,YAAY,EAAEC,UAAU,QAAQ,kBAAiB;AAElG,OAAO,MAAMC,YAAYP,aAA8B;IACrDQ,MAAM;IACNC,OAAO;IACPC,QAAQ,CAAC,EAAEC,MAAM,EAAEC,OAAO,EAAEC,OAAO,EAAE;QACnC,MAAMC,eAAeZ,kBAAkB;YAAES;YAAQG,cAAcF;QAAQ;QAEvE,gFAAgF;QAChF,MAAMG,aAAaF,OAAO,CAAC,yBAAyB;QACpD,IAAIE,YAAY;YACd,mBAAmB;YACnBA,WAAWC,gBAAgB,GAAGF;QAChC;QAEA,IAAIA,aAAaG,QAAQ,EAAE;YACzB,OAAON;QACT;QAEA,OAAO;YACL,GAAGA,MAAM;YACTO,WAAW;mBACLP,OAAOO,SAAS,IAAI,EAAE;gBAC1B,uDAAuD;gBACvD;oBAAEC,SAASlB;oBAAamB,QAAQ;oBAAQC,MAAM;gBAAO;gBACrD,uEAAuE;gBACvE,6DAA6D;gBAC7D;oBACEF,SAAS,IAAM,IAAIG,SAAS,MAAM;4BAAEC,SAAS;gCAAEC,OAAO;4BAAO;4BAAGC,QAAQ;wBAAI;oBAC5EL,QAAQ;oBACRC,MAAM;gBACR;aACD;QACH;IACF;AACF,GAAE"}
@@ -1,11 +1,11 @@
1
+ import type { PayloadRequest } from 'payload';
1
2
  import { McpServer } from '@modelcontextprotocol/server';
2
- import { type PayloadRequest } from 'payload';
3
3
  import type { AuthorizedMCP, SanitizedMCPPluginConfig } from '../types.js';
4
4
  /**
5
- * Transport-agnostic core: registers every authorized MCP item onto a fresh
6
- * `McpServer` and returns it. The caller is responsible for picking a transport
7
- * (`WebStandardStreamableHTTPServerTransport`, `StdioServerTransport`, …) and
8
- * calling `server.connect(transport)`.
5
+ * Serving-entry-agnostic core: registers every authorized MCP item onto a fresh
6
+ * `McpServer` and returns it. The HTTP and stdio entry point callers provide fresh
7
+ * instances from this builder while they own the transport and protocol-era
8
+ * decision.
9
9
  *
10
10
  * `req` is the request context handlers see. For HTTP it's the live
11
11
  * `PayloadRequest` derived from the incoming HTTP request; for stdio it's a
@@ -1 +1 @@
1
- {"version":3,"file":"buildMcpServer.d.ts","sourceRoot":"","sources":["../../src/mcp/buildMcpServer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAsB,MAAM,8BAA8B,CAAA;AAC5E,OAAO,EAAY,KAAK,cAAc,EAAE,MAAM,SAAS,CAAA;AAGvD,OAAO,KAAK,EACV,aAAa,EAMb,wBAAwB,EAEzB,MAAM,aAAa,CAAA;AAKpB;;;;;;;;;GASG;AACH,eAAO,MAAM,cAAc,GAAI,uCAI5B;IACD,aAAa,EAAE,aAAa,CAAA;IAC5B,YAAY,EAAE,wBAAwB,CAAA;IACtC,GAAG,EAAE,cAAc,CAAA;CACpB,KAAG,SAyLH,CAAA"}
1
+ {"version":3,"file":"buildMcpServer.d.ts","sourceRoot":"","sources":["../../src/mcp/buildMcpServer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAE7C,OAAO,EAAE,SAAS,EAAsB,MAAM,8BAA8B,CAAA;AAG5E,OAAO,KAAK,EACV,aAAa,EAMb,wBAAwB,EAEzB,MAAM,aAAa,CAAA;AAKpB;;;;;;;;;GASG;AACH,eAAO,MAAM,cAAc,0CAIxB;IACD,aAAa,EAAE,aAAa,CAAA;IAC5B,YAAY,EAAE,wBAAwB,CAAA;IACtC,GAAG,EAAE,cAAc,CAAA;CACpB,KAAG,SAgNH,CAAA"}
@@ -1,18 +1,18 @@
1
1
  import { McpServer } from '@modelcontextprotocol/server';
2
- import { APIError } from 'payload';
3
- import { z } from 'zod';
2
+ import { APIError, strictObject, z } from 'payload';
4
3
  import { getLogger } from '../utils/getLogger.js';
5
4
  import { toStandardSchema } from '../utils/toStandardSchema.js';
6
5
  /**
7
- * Transport-agnostic core: registers every authorized MCP item onto a fresh
8
- * `McpServer` and returns it. The caller is responsible for picking a transport
9
- * (`WebStandardStreamableHTTPServerTransport`, `StdioServerTransport`, …) and
10
- * calling `server.connect(transport)`.
6
+ * Serving-entry-agnostic core: registers every authorized MCP item onto a fresh
7
+ * `McpServer` and returns it. The HTTP and stdio entry point callers provide fresh
8
+ * instances from this builder while they own the transport and protocol-era
9
+ * decision.
11
10
  *
12
11
  * `req` is the request context handlers see. For HTTP it's the live
13
12
  * `PayloadRequest` derived from the incoming HTTP request; for stdio it's a
14
13
  * synthesized one built via `createLocalReq`.
15
14
  */ export const buildMcpServer = ({ authorizedMCP, pluginConfig, req })=>{
15
+ z.config(z.locales.en());
16
16
  const serverOptions = pluginConfig.mcp?.serverOptions || {};
17
17
  const server = new McpServer({
18
18
  name: 'Payload MCP Server',
@@ -25,27 +25,34 @@ import { toStandardSchema } from '../utils/toStandardSchema.js';
25
25
  /**
26
26
  * Wrap a tool handler's response with the tool's `overrideResponse`, then
27
27
  * strip the internal `doc` field so it doesn't leak onto the wire.
28
- */ const finalizeToolResponse = (response, overrideResponse)=>{
29
- const overridden = overrideResponse?.(response, response.doc ?? {}, req) ?? response;
28
+ */ const finalizeToolResponse = async ({ input, overrideResponse, response, toolName })=>{
29
+ let overridden = overrideResponse?.(response, response.doc ?? {}, req) ?? response;
30
+ for (const hook of pluginConfig.hooks?.afterToolCall ?? []){
31
+ overridden = await hook({
32
+ input,
33
+ req,
34
+ response: overridden,
35
+ toolName
36
+ });
37
+ }
30
38
  const { doc: _doc, ...rest } = overridden;
31
39
  return rest;
32
40
  };
33
41
  /**
34
42
  * Runs a collection/global tool call:
35
- * - reads `collectionSlug` / `globalSlug` from the input
43
+ * - reads `slug` from the input
36
44
  * - runs access control: errors if `authorizedMCP.items` has no entry for this tool + slug
37
45
  * - runs the tool handler and finalizes its response
38
46
  */ const callEntityTool = async ({ input, item, serverContext })=>{
39
47
  const entity = item.type === 'collectionTool' ? 'collection' : 'global';
40
- const slugKey = item.type === 'collectionTool' ? 'collectionSlug' : 'globalSlug';
41
48
  const toolInput = input ?? {};
42
- const slug = toolInput[slugKey];
49
+ const slug = toolInput.slug;
43
50
  if (!slug) {
44
51
  return {
45
52
  content: [
46
53
  {
47
54
  type: 'text',
48
- text: `Error: "${item.mcpName}" requires ${slugKey}. Use getConfigInfo to inspect ${entity} slugs.`
55
+ text: `Error: "${item.mcpName}" requires slug. Use getConfigInfo to inspect ${entity} slugs.`
49
56
  }
50
57
  ],
51
58
  isError: true
@@ -71,12 +78,17 @@ import { toStandardSchema } from '../utils/toStandardSchema.js';
71
78
  };
72
79
  const response = await (match.type === 'collectionTool' ? match.tool.handler({
73
80
  ...handlerArgs,
74
- collectionSlug: slug
81
+ slug
75
82
  }) : match.tool.handler({
76
83
  ...handlerArgs,
77
- globalSlug: slug
84
+ slug
78
85
  }));
79
- return finalizeToolResponse(response, match.tool.overrideResponse);
86
+ return finalizeToolResponse({
87
+ input: toolInput,
88
+ overrideResponse: match.tool.overrideResponse,
89
+ response,
90
+ toolName: match.mcpName
91
+ });
80
92
  };
81
93
  try {
82
94
  const registeredEntityTools = new Set();
@@ -90,7 +102,6 @@ import { toStandardSchema } from '../utils/toStandardSchema.js';
90
102
  }
91
103
  registeredEntityTools.add(item.mcpName);
92
104
  const inputSchema = withSlugInput({
93
- name: item.type === 'collectionTool' ? 'collectionSlug' : 'globalSlug',
94
105
  input: item.tool.input
95
106
  });
96
107
  server.registerTool(item.mcpName, {
@@ -151,12 +162,21 @@ import { toStandardSchema } from '../utils/toStandardSchema.js';
151
162
  annotations: tool.annotations,
152
163
  description: tool.description,
153
164
  inputSchema: tool.input ? toStandardSchema(tool.input) : undefined
154
- }, async (input, ctx)=>finalizeToolResponse(await tool.handler({
165
+ }, async (input, ctx)=>{
166
+ const toolInput = input ?? {};
167
+ const response = await tool.handler({
155
168
  authorizedMCP,
156
- input: input ?? {},
169
+ input: toolInput,
157
170
  req,
158
171
  serverContext: ctx
159
- }), tool.overrideResponse));
172
+ });
173
+ return finalizeToolResponse({
174
+ input: toolInput,
175
+ overrideResponse: tool.overrideResponse,
176
+ response,
177
+ toolName: item.mcpName
178
+ });
179
+ });
160
180
  logger.info(`✅ Tool: ${item.mcpName} Registered.`);
161
181
  break;
162
182
  }
@@ -167,33 +187,47 @@ import { toStandardSchema } from '../utils/toStandardSchema.js';
167
187
  }
168
188
  return server;
169
189
  };
170
- const withSlugInput = ({ name, input })=>{
171
- const description = name === 'collectionSlug' ? 'The collection slug' : 'The global slug';
172
- const slugSchema = z.string().describe(description);
190
+ const withSlugInput = ({ input })=>{
191
+ const description = 'The target slug.';
192
+ const slugSchema = z.string().check(z.describe(description));
173
193
  if (!input) {
174
- return z.object({
175
- [name]: slugSchema
194
+ return strictObject({
195
+ slug: slugSchema
176
196
  });
177
197
  }
178
- if (input instanceof z.ZodObject) {
179
- return input.extend({
180
- [name]: slugSchema
198
+ if (typeof input === 'object' && input !== null && '~standard' in input) {
199
+ const schema = input['~standard'].jsonSchema.input({
200
+ target: 'draft-2020-12'
201
+ });
202
+ const properties = schema.properties;
203
+ if (properties?.slug) {
204
+ return input;
205
+ }
206
+ return addSlugToJSONSchema({
207
+ description,
208
+ schema: schema
181
209
  });
182
210
  }
183
- const schema = input;
211
+ return addSlugToJSONSchema({
212
+ description,
213
+ schema: input
214
+ });
215
+ };
216
+ const addSlugToJSONSchema = ({ description, schema })=>{
217
+ const objectSchema = schema;
184
218
  return {
185
- ...schema,
219
+ ...objectSchema,
186
220
  type: 'object',
187
221
  properties: {
188
- ...schema.properties,
189
- [name]: {
222
+ ...objectSchema.properties,
223
+ slug: {
190
224
  type: 'string',
191
225
  description
192
226
  }
193
227
  },
194
228
  required: Array.from(new Set([
195
- name,
196
- ...schema.required ?? []
229
+ 'slug',
230
+ ...objectSchema.required ?? []
197
231
  ]))
198
232
  };
199
233
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/mcp/buildMcpServer.ts"],"sourcesContent":["import { McpServer, type ServerContext } from '@modelcontextprotocol/server'\nimport { APIError, type PayloadRequest } from 'payload'\nimport { z } from 'zod'\n\nimport type {\n AuthorizedMCP,\n CollectionMCPItem,\n GlobalMCPItem,\n JsonSchemaType,\n MCPResponseOverride,\n MCPToolResponse,\n SanitizedMCPPluginConfig,\n ToolInputSchema,\n} from '../types.js'\n\nimport { getLogger } from '../utils/getLogger.js'\nimport { toStandardSchema } from '../utils/toStandardSchema.js'\n\n/**\n * Transport-agnostic core: registers every authorized MCP item onto a fresh\n * `McpServer` and returns it. The caller is responsible for picking a transport\n * (`WebStandardStreamableHTTPServerTransport`, `StdioServerTransport`, …) and\n * calling `server.connect(transport)`.\n *\n * `req` is the request context handlers see. For HTTP it's the live\n * `PayloadRequest` derived from the incoming HTTP request; for stdio it's a\n * synthesized one built via `createLocalReq`.\n */\nexport const buildMcpServer = ({\n authorizedMCP,\n pluginConfig,\n req,\n}: {\n authorizedMCP: AuthorizedMCP\n pluginConfig: SanitizedMCPPluginConfig\n req: PayloadRequest\n}): McpServer => {\n const serverOptions = pluginConfig.mcp?.serverOptions || {}\n const server = new McpServer(\n { name: 'Payload MCP Server', version: '1.0.0', ...serverOptions.serverInfo },\n serverOptions.options,\n )\n\n const logger = getLogger({ payload: req.payload })\n\n /**\n * Wrap a tool handler's response with the tool's `overrideResponse`, then\n * strip the internal `doc` field so it doesn't leak onto the wire.\n */\n const finalizeToolResponse = (\n response: MCPToolResponse,\n overrideResponse?: MCPResponseOverride,\n ): MCPToolResponse => {\n const overridden = overrideResponse?.(response, response.doc ?? {}, req) ?? response\n const { doc: _doc, ...rest } = overridden\n return rest\n }\n\n /**\n * Runs a collection/global tool call:\n * - reads `collectionSlug` / `globalSlug` from the input\n * - runs access control: errors if `authorizedMCP.items` has no entry for this tool + slug\n * - runs the tool handler and finalizes its response\n */\n const callEntityTool = async ({\n input,\n item,\n serverContext,\n }: {\n input: unknown\n item: CollectionMCPItem | GlobalMCPItem\n serverContext: ServerContext\n }): Promise<MCPToolResponse> => {\n const entity = item.type === 'collectionTool' ? 'collection' : 'global'\n const slugKey = item.type === 'collectionTool' ? 'collectionSlug' : 'globalSlug'\n const toolInput = (input ?? {}) as Record<string, unknown>\n const slug = toolInput[slugKey] as string | undefined\n\n if (!slug) {\n return {\n content: [\n {\n type: 'text',\n text: `Error: \"${item.mcpName}\" requires ${slugKey}. Use getConfigInfo to inspect ${entity} slugs.`,\n },\n ],\n isError: true,\n }\n }\n\n const match = authorizedMCP.items.find(\n (candidate): candidate is CollectionMCPItem | GlobalMCPItem =>\n candidate.type === item.type &&\n candidate.mcpName === item.mcpName &&\n (candidate.type === 'collectionTool'\n ? candidate.collectionSlug === slug\n : candidate.type === 'globalTool' && candidate.globalSlug === slug),\n )\n\n if (!match) {\n return {\n content: [\n {\n type: 'text',\n text: `Error: MCP access to \"${item.mcpName}\" is not enabled for ${entity} \"${slug}\"`,\n },\n ],\n isError: true,\n }\n }\n\n const handlerArgs = { authorizedMCP, input: toolInput, req, serverContext }\n const response = await (match.type === 'collectionTool'\n ? match.tool.handler({ ...handlerArgs, collectionSlug: slug })\n : match.tool.handler({ ...handlerArgs, globalSlug: slug }))\n\n return finalizeToolResponse(response, match.tool.overrideResponse)\n }\n\n try {\n const registeredEntityTools = new Set<string>()\n\n for (const item of authorizedMCP.items) {\n switch (item.type) {\n case 'collectionTool':\n case 'globalTool': {\n if (registeredEntityTools.has(item.mcpName)) {\n break\n }\n registeredEntityTools.add(item.mcpName)\n\n const inputSchema = withSlugInput({\n name: item.type === 'collectionTool' ? 'collectionSlug' : 'globalSlug',\n input: item.tool.input,\n })\n\n server.registerTool(\n item.mcpName,\n {\n annotations: item.tool.annotations,\n description: item.tool.description,\n inputSchema: toStandardSchema(inputSchema),\n },\n async (input: unknown, ctx: ServerContext) =>\n callEntityTool({ input, item, serverContext: ctx }),\n )\n logger.info(`✅ Tool: ${item.mcpName} Registered.`)\n break\n }\n case 'prompt': {\n const prompt = item.prompt\n server.registerPrompt(\n item.mcpName,\n {\n argsSchema: prompt.argsSchema ? toStandardSchema(prompt.argsSchema) : undefined,\n description: prompt.description,\n title: prompt.title,\n },\n async (input: unknown, ctx: ServerContext) =>\n prompt.handler({\n input: (input ?? {}) as Record<string, unknown>,\n req,\n serverContext: ctx,\n }),\n )\n logger.info(`✅ Prompt: ${prompt.title} Registered.`)\n break\n }\n case 'resource': {\n const resource = item.resource\n server.registerResource(\n item.mcpName,\n // @ts-expect-error - Overload type ambiguity (string OR ResourceTemplate is valid)\n resource.uri,\n {\n description: resource.description,\n mimeType: resource.mimeType,\n title: resource.title,\n },\n // Static URIs call (uri, ctx); ResourceTemplates call (uri, params, ctx).\n // The rest-params shape lets us collect either signature uniformly.\n async (...sdkArgs: unknown[]) => {\n const ctx = sdkArgs[sdkArgs.length - 1] as ServerContext\n const uri = sdkArgs[0] as URL\n const params = (sdkArgs.length > 2 ? sdkArgs[1] : {}) as Record<string, string>\n return resource.handler({ params, req, serverContext: ctx, uri })\n },\n )\n logger.info(`✅ Resource: ${resource.title} Registered.`)\n break\n }\n case 'tool': {\n const tool = item.tool\n server.registerTool(\n item.mcpName,\n {\n annotations: tool.annotations,\n description: tool.description,\n inputSchema: tool.input ? toStandardSchema(tool.input) : undefined,\n },\n async (input: unknown, ctx: ServerContext) =>\n finalizeToolResponse(\n await tool.handler({\n authorizedMCP,\n input: (input ?? {}) as Record<string, unknown>,\n req,\n serverContext: ctx,\n }),\n tool.overrideResponse,\n ),\n )\n logger.info(`✅ Tool: ${item.mcpName} Registered.`)\n break\n }\n }\n }\n } catch (error) {\n throw new APIError(`Error initializing MCP handler: ${String(error)}`, 500)\n }\n\n return server\n}\n\nconst withSlugInput = ({\n name,\n input,\n}: {\n input?: ToolInputSchema\n name: 'collectionSlug' | 'globalSlug'\n}): ToolInputSchema => {\n const description = name === 'collectionSlug' ? 'The collection slug' : 'The global slug'\n const slugSchema = z.string().describe(description)\n\n if (!input) {\n return z.object({ [name]: slugSchema })\n }\n\n if (input instanceof z.ZodObject) {\n return input.extend({ [name]: slugSchema })\n }\n\n const schema = input as {\n properties?: Record<string, JsonSchemaType>\n required?: string[]\n } & JsonSchemaType\n\n return {\n ...schema,\n type: 'object',\n properties: {\n ...schema.properties,\n [name]: {\n type: 'string',\n description,\n },\n },\n required: Array.from(new Set([name, ...(schema.required ?? [])])),\n }\n}\n"],"names":["McpServer","APIError","z","getLogger","toStandardSchema","buildMcpServer","authorizedMCP","pluginConfig","req","serverOptions","mcp","server","name","version","serverInfo","options","logger","payload","finalizeToolResponse","response","overrideResponse","overridden","doc","_doc","rest","callEntityTool","input","item","serverContext","entity","type","slugKey","toolInput","slug","content","text","mcpName","isError","match","items","find","candidate","collectionSlug","globalSlug","handlerArgs","tool","handler","registeredEntityTools","Set","has","add","inputSchema","withSlugInput","registerTool","annotations","description","ctx","info","prompt","registerPrompt","argsSchema","undefined","title","resource","registerResource","uri","mimeType","sdkArgs","length","params","error","String","slugSchema","string","describe","object","ZodObject","extend","schema","properties","required","Array","from"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/mcp/buildMcpServer.ts"],"sourcesContent":["import type { PayloadRequest } from 'payload'\n\nimport { McpServer, type ServerContext } from '@modelcontextprotocol/server'\nimport { APIError, strictObject, z } from 'payload'\n\nimport type {\n AuthorizedMCP,\n CollectionMCPItem,\n GlobalMCPItem,\n JsonSchemaType,\n MCPResponseOverride,\n MCPToolResponse,\n SanitizedMCPPluginConfig,\n ToolInputSchema,\n} from '../types.js'\n\nimport { getLogger } from '../utils/getLogger.js'\nimport { toStandardSchema } from '../utils/toStandardSchema.js'\n\n/**\n * Serving-entry-agnostic core: registers every authorized MCP item onto a fresh\n * `McpServer` and returns it. The HTTP and stdio entry point callers provide fresh\n * instances from this builder while they own the transport and protocol-era\n * decision.\n *\n * `req` is the request context handlers see. For HTTP it's the live\n * `PayloadRequest` derived from the incoming HTTP request; for stdio it's a\n * synthesized one built via `createLocalReq`.\n */\nexport const buildMcpServer = ({\n authorizedMCP,\n pluginConfig,\n req,\n}: {\n authorizedMCP: AuthorizedMCP\n pluginConfig: SanitizedMCPPluginConfig\n req: PayloadRequest\n}): McpServer => {\n z.config(z.locales.en())\n\n const serverOptions = pluginConfig.mcp?.serverOptions || {}\n const server = new McpServer(\n { name: 'Payload MCP Server', version: '1.0.0', ...serverOptions.serverInfo },\n serverOptions.options,\n )\n\n const logger = getLogger({ payload: req.payload })\n\n /**\n * Wrap a tool handler's response with the tool's `overrideResponse`, then\n * strip the internal `doc` field so it doesn't leak onto the wire.\n */\n const finalizeToolResponse = async ({\n input,\n overrideResponse,\n response,\n toolName,\n }: {\n input: unknown\n overrideResponse?: MCPResponseOverride\n response: MCPToolResponse\n toolName: string\n }): Promise<MCPToolResponse> => {\n let overridden = overrideResponse?.(response, response.doc ?? {}, req) ?? response\n for (const hook of pluginConfig.hooks?.afterToolCall ?? []) {\n overridden = await hook({ input, req, response: overridden, toolName })\n }\n const { doc: _doc, ...rest } = overridden\n return rest\n }\n\n /**\n * Runs a collection/global tool call:\n * - reads `slug` from the input\n * - runs access control: errors if `authorizedMCP.items` has no entry for this tool + slug\n * - runs the tool handler and finalizes its response\n */\n const callEntityTool = async ({\n input,\n item,\n serverContext,\n }: {\n input: unknown\n item: CollectionMCPItem | GlobalMCPItem\n serverContext: ServerContext\n }): Promise<MCPToolResponse> => {\n const entity = item.type === 'collectionTool' ? 'collection' : 'global'\n const toolInput = (input ?? {}) as Record<string, unknown>\n const slug = toolInput.slug as string | undefined\n\n if (!slug) {\n return {\n content: [\n {\n type: 'text',\n text: `Error: \"${item.mcpName}\" requires slug. Use getConfigInfo to inspect ${entity} slugs.`,\n },\n ],\n isError: true,\n }\n }\n\n const match = authorizedMCP.items.find(\n (candidate): candidate is CollectionMCPItem | GlobalMCPItem =>\n candidate.type === item.type &&\n candidate.mcpName === item.mcpName &&\n (candidate.type === 'collectionTool'\n ? candidate.collectionSlug === slug\n : candidate.type === 'globalTool' && candidate.globalSlug === slug),\n )\n\n if (!match) {\n return {\n content: [\n {\n type: 'text',\n text: `Error: MCP access to \"${item.mcpName}\" is not enabled for ${entity} \"${slug}\"`,\n },\n ],\n isError: true,\n }\n }\n\n const handlerArgs = {\n authorizedMCP,\n input: toolInput,\n req,\n serverContext,\n }\n const response = await (match.type === 'collectionTool'\n ? match.tool.handler({ ...handlerArgs, slug })\n : match.tool.handler({ ...handlerArgs, slug }))\n\n return finalizeToolResponse({\n input: toolInput,\n overrideResponse: match.tool.overrideResponse,\n response,\n toolName: match.mcpName,\n })\n }\n\n try {\n const registeredEntityTools = new Set<string>()\n\n for (const item of authorizedMCP.items) {\n switch (item.type) {\n case 'collectionTool':\n case 'globalTool': {\n if (registeredEntityTools.has(item.mcpName)) {\n break\n }\n registeredEntityTools.add(item.mcpName)\n\n const inputSchema = withSlugInput({ input: item.tool.input })\n\n server.registerTool(\n item.mcpName,\n {\n annotations: item.tool.annotations,\n description: item.tool.description,\n inputSchema: toStandardSchema(inputSchema),\n },\n async (input: unknown, ctx: ServerContext) =>\n callEntityTool({ input, item, serverContext: ctx }),\n )\n logger.info(`✅ Tool: ${item.mcpName} Registered.`)\n break\n }\n case 'prompt': {\n const prompt = item.prompt\n server.registerPrompt(\n item.mcpName,\n {\n argsSchema: prompt.argsSchema ? toStandardSchema(prompt.argsSchema) : undefined,\n description: prompt.description,\n title: prompt.title,\n },\n async (input: unknown, ctx: ServerContext) =>\n prompt.handler({\n input: (input ?? {}) as Record<string, unknown>,\n req,\n serverContext: ctx,\n }),\n )\n logger.info(`✅ Prompt: ${prompt.title} Registered.`)\n break\n }\n case 'resource': {\n const resource = item.resource\n server.registerResource(\n item.mcpName,\n // @ts-expect-error - Overload type ambiguity (string OR ResourceTemplate is valid)\n resource.uri,\n {\n description: resource.description,\n mimeType: resource.mimeType,\n title: resource.title,\n },\n // Static URIs call (uri, ctx); ResourceTemplates call (uri, params, ctx).\n // The rest-params shape lets us collect either signature uniformly.\n async (...sdkArgs: unknown[]) => {\n const ctx = sdkArgs[sdkArgs.length - 1] as ServerContext\n const uri = sdkArgs[0] as URL\n const params = (sdkArgs.length > 2 ? sdkArgs[1] : {}) as Record<string, string>\n return resource.handler({ params, req, serverContext: ctx, uri })\n },\n )\n logger.info(`✅ Resource: ${resource.title} Registered.`)\n break\n }\n case 'tool': {\n const tool = item.tool\n server.registerTool(\n item.mcpName,\n {\n annotations: tool.annotations,\n description: tool.description,\n inputSchema: tool.input ? toStandardSchema(tool.input) : undefined,\n },\n async (input: unknown, ctx: ServerContext) => {\n const toolInput = (input ?? {}) as Record<string, unknown>\n const response = await tool.handler({\n authorizedMCP,\n input: toolInput,\n req,\n serverContext: ctx,\n })\n return finalizeToolResponse({\n input: toolInput,\n overrideResponse: tool.overrideResponse,\n response,\n toolName: item.mcpName,\n })\n },\n )\n logger.info(`✅ Tool: ${item.mcpName} Registered.`)\n break\n }\n }\n }\n } catch (error) {\n throw new APIError(`Error initializing MCP handler: ${String(error)}`, 500)\n }\n\n return server\n}\n\nconst withSlugInput = ({ input }: { input?: ToolInputSchema }): ToolInputSchema => {\n const description = 'The target slug.'\n const slugSchema = z.string().check(z.describe(description))\n\n if (!input) {\n return strictObject({ slug: slugSchema }) as unknown as ToolInputSchema\n }\n\n if (typeof input === 'object' && input !== null && '~standard' in input) {\n const schema = input['~standard'].jsonSchema.input({ target: 'draft-2020-12' })\n const properties = schema.properties as Record<string, unknown> | undefined\n\n if (properties?.slug) {\n return input\n }\n\n return addSlugToJSONSchema({ description, schema: schema as JsonSchemaType })\n }\n\n return addSlugToJSONSchema({ description, schema: input })\n}\n\nconst addSlugToJSONSchema = ({\n description,\n schema,\n}: {\n description: string\n schema: JsonSchemaType\n}): JsonSchemaType => {\n const objectSchema = schema as {\n properties?: Record<string, JsonSchemaType>\n required?: string[]\n } & JsonSchemaType\n\n return {\n ...objectSchema,\n type: 'object',\n properties: {\n ...objectSchema.properties,\n slug: {\n type: 'string',\n description,\n },\n },\n required: Array.from(new Set(['slug', ...(objectSchema.required ?? [])])),\n }\n}\n"],"names":["McpServer","APIError","strictObject","z","getLogger","toStandardSchema","buildMcpServer","authorizedMCP","pluginConfig","req","config","locales","en","serverOptions","mcp","server","name","version","serverInfo","options","logger","payload","finalizeToolResponse","input","overrideResponse","response","toolName","overridden","doc","hook","hooks","afterToolCall","_doc","rest","callEntityTool","item","serverContext","entity","type","toolInput","slug","content","text","mcpName","isError","match","items","find","candidate","collectionSlug","globalSlug","handlerArgs","tool","handler","registeredEntityTools","Set","has","add","inputSchema","withSlugInput","registerTool","annotations","description","ctx","info","prompt","registerPrompt","argsSchema","undefined","title","resource","registerResource","uri","mimeType","sdkArgs","length","params","error","String","slugSchema","string","check","describe","schema","jsonSchema","target","properties","addSlugToJSONSchema","objectSchema","required","Array","from"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"authTools.d.ts","sourceRoot":"","sources":["../../../../src/mcp/builtin/collections/authTools.ts"],"names":[],"mappings":"AAiCA,eAAO,MAAM,kBAAkB,4CAqC7B,CAAA;AAEF,eAAO,MAAM,4BAA4B,4CAuCvC,CAAA;AAEF,eAAO,MAAM,mBAAmB,4CAiD9B,CAAA;AAEF,eAAO,MAAM,2BAA2B,4CAmCtC,CAAA;AAEF,eAAO,MAAM,oBAAoB,4CAgC/B,CAAA;AAEF,eAAO,MAAM,oBAAoB,4CAiC/B,CAAA"}
1
+ {"version":3,"file":"authTools.d.ts","sourceRoot":"","sources":["../../../../src/mcp/builtin/collections/authTools.ts"],"names":[],"mappings":"AAkCA,eAAO,MAAM,kBAAkB,4CAuD7B,CAAA;AAEF,eAAO,MAAM,4BAA4B,4CAmCvC,CAAA;AAEF,eAAO,MAAM,mBAAmB,4CAuC9B,CAAA;AAEF,eAAO,MAAM,2BAA2B,4CAmCtC,CAAA;AAEF,eAAO,MAAM,oBAAoB,4CAmC/B,CAAA;AAEF,eAAO,MAAM,oBAAoB,4CAiC/B,CAAA"}