@payloadcms/plugin-mcp 4.0.0-canary.1 → 4.0.0-canary.2
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.
- package/dist/collection/getAccessField.d.ts.map +1 -1
- package/dist/collection/getAccessField.js +24 -9
- package/dist/collection/getAccessField.js.map +1 -1
- package/dist/collection/index.d.ts.map +1 -1
- package/dist/collection/index.js +71 -26
- package/dist/collection/index.js.map +1 -1
- package/dist/components/APIKeyField/index.client.d.ts +9 -0
- package/dist/components/APIKeyField/index.client.d.ts.map +1 -0
- package/dist/components/APIKeyField/index.client.js +85 -0
- package/dist/components/APIKeyField/index.client.js.map +1 -0
- package/dist/components/APIKeyField/index.css +105 -0
- package/dist/components/APIKeysEmptyState/index.client.d.ts +4 -0
- package/dist/components/APIKeysEmptyState/index.client.d.ts.map +1 -0
- package/dist/components/APIKeysEmptyState/index.client.js +21 -0
- package/dist/components/APIKeysEmptyState/index.client.js.map +1 -0
- package/dist/components/AccessField/index.client.d.ts.map +1 -1
- package/dist/components/AccessField/index.client.js +139 -197
- package/dist/components/AccessField/index.client.js.map +1 -1
- package/dist/components/AccessField/index.css +50 -44
- package/dist/components/SettingsMenu/index.client.d.ts +8 -0
- package/dist/components/SettingsMenu/index.client.d.ts.map +1 -0
- package/dist/components/SettingsMenu/index.client.js +29 -0
- package/dist/components/SettingsMenu/index.client.js.map +1 -0
- package/dist/endpoint/access.js +16 -0
- package/dist/endpoint/access.js.map +1 -1
- package/dist/exports/client.d.ts +3 -0
- package/dist/exports/client.d.ts.map +1 -1
- package/dist/exports/client.js +3 -0
- package/dist/exports/client.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +46 -3
- package/dist/index.js.map +1 -1
- package/dist/translations/index.d.ts +11 -0
- package/dist/translations/index.d.ts.map +1 -0
- package/dist/translations/index.js +92 -0
- package/dist/translations/index.js.map +1 -0
- package/dist/translations/languages/ar.d.ts +31 -0
- package/dist/translations/languages/ar.d.ts.map +1 -0
- package/dist/translations/languages/ar.js +34 -0
- package/dist/translations/languages/ar.js.map +1 -0
- package/dist/translations/languages/az.d.ts +31 -0
- package/dist/translations/languages/az.d.ts.map +1 -0
- package/dist/translations/languages/az.js +34 -0
- package/dist/translations/languages/az.js.map +1 -0
- package/dist/translations/languages/bg.d.ts +31 -0
- package/dist/translations/languages/bg.d.ts.map +1 -0
- package/dist/translations/languages/bg.js +34 -0
- package/dist/translations/languages/bg.js.map +1 -0
- package/dist/translations/languages/bnBd.d.ts +31 -0
- package/dist/translations/languages/bnBd.d.ts.map +1 -0
- package/dist/translations/languages/bnBd.js +34 -0
- package/dist/translations/languages/bnBd.js.map +1 -0
- package/dist/translations/languages/bnIn.d.ts +31 -0
- package/dist/translations/languages/bnIn.d.ts.map +1 -0
- package/dist/translations/languages/bnIn.js +34 -0
- package/dist/translations/languages/bnIn.js.map +1 -0
- package/dist/translations/languages/ca.d.ts +31 -0
- package/dist/translations/languages/ca.d.ts.map +1 -0
- package/dist/translations/languages/ca.js +34 -0
- package/dist/translations/languages/ca.js.map +1 -0
- package/dist/translations/languages/cs.d.ts +31 -0
- package/dist/translations/languages/cs.d.ts.map +1 -0
- package/dist/translations/languages/cs.js +34 -0
- package/dist/translations/languages/cs.js.map +1 -0
- package/dist/translations/languages/da.d.ts +31 -0
- package/dist/translations/languages/da.d.ts.map +1 -0
- package/dist/translations/languages/da.js +34 -0
- package/dist/translations/languages/da.js.map +1 -0
- package/dist/translations/languages/de.d.ts +31 -0
- package/dist/translations/languages/de.d.ts.map +1 -0
- package/dist/translations/languages/de.js +34 -0
- package/dist/translations/languages/de.js.map +1 -0
- package/dist/translations/languages/en.d.ts +31 -0
- package/dist/translations/languages/en.d.ts.map +1 -0
- package/dist/translations/languages/en.js +34 -0
- package/dist/translations/languages/en.js.map +1 -0
- package/dist/translations/languages/es.d.ts +31 -0
- package/dist/translations/languages/es.d.ts.map +1 -0
- package/dist/translations/languages/es.js +34 -0
- package/dist/translations/languages/es.js.map +1 -0
- package/dist/translations/languages/et.d.ts +31 -0
- package/dist/translations/languages/et.d.ts.map +1 -0
- package/dist/translations/languages/et.js +34 -0
- package/dist/translations/languages/et.js.map +1 -0
- package/dist/translations/languages/fa.d.ts +31 -0
- package/dist/translations/languages/fa.d.ts.map +1 -0
- package/dist/translations/languages/fa.js +34 -0
- package/dist/translations/languages/fa.js.map +1 -0
- package/dist/translations/languages/fr.d.ts +31 -0
- package/dist/translations/languages/fr.d.ts.map +1 -0
- package/dist/translations/languages/fr.js +34 -0
- package/dist/translations/languages/fr.js.map +1 -0
- package/dist/translations/languages/he.d.ts +31 -0
- package/dist/translations/languages/he.d.ts.map +1 -0
- package/dist/translations/languages/he.js +34 -0
- package/dist/translations/languages/he.js.map +1 -0
- package/dist/translations/languages/hr.d.ts +31 -0
- package/dist/translations/languages/hr.d.ts.map +1 -0
- package/dist/translations/languages/hr.js +34 -0
- package/dist/translations/languages/hr.js.map +1 -0
- package/dist/translations/languages/hu.d.ts +31 -0
- package/dist/translations/languages/hu.d.ts.map +1 -0
- package/dist/translations/languages/hu.js +34 -0
- package/dist/translations/languages/hu.js.map +1 -0
- package/dist/translations/languages/hy.d.ts +31 -0
- package/dist/translations/languages/hy.d.ts.map +1 -0
- package/dist/translations/languages/hy.js +34 -0
- package/dist/translations/languages/hy.js.map +1 -0
- package/dist/translations/languages/id.d.ts +31 -0
- package/dist/translations/languages/id.d.ts.map +1 -0
- package/dist/translations/languages/id.js +34 -0
- package/dist/translations/languages/id.js.map +1 -0
- package/dist/translations/languages/is.d.ts +31 -0
- package/dist/translations/languages/is.d.ts.map +1 -0
- package/dist/translations/languages/is.js +34 -0
- package/dist/translations/languages/is.js.map +1 -0
- package/dist/translations/languages/it.d.ts +31 -0
- package/dist/translations/languages/it.d.ts.map +1 -0
- package/dist/translations/languages/it.js +34 -0
- package/dist/translations/languages/it.js.map +1 -0
- package/dist/translations/languages/ja.d.ts +31 -0
- package/dist/translations/languages/ja.d.ts.map +1 -0
- package/dist/translations/languages/ja.js +34 -0
- package/dist/translations/languages/ja.js.map +1 -0
- package/dist/translations/languages/ko.d.ts +31 -0
- package/dist/translations/languages/ko.d.ts.map +1 -0
- package/dist/translations/languages/ko.js +34 -0
- package/dist/translations/languages/ko.js.map +1 -0
- package/dist/translations/languages/lt.d.ts +31 -0
- package/dist/translations/languages/lt.d.ts.map +1 -0
- package/dist/translations/languages/lt.js +34 -0
- package/dist/translations/languages/lt.js.map +1 -0
- package/dist/translations/languages/lv.d.ts +31 -0
- package/dist/translations/languages/lv.d.ts.map +1 -0
- package/dist/translations/languages/lv.js +34 -0
- package/dist/translations/languages/lv.js.map +1 -0
- package/dist/translations/languages/my.d.ts +31 -0
- package/dist/translations/languages/my.d.ts.map +1 -0
- package/dist/translations/languages/my.js +34 -0
- package/dist/translations/languages/my.js.map +1 -0
- package/dist/translations/languages/nb.d.ts +31 -0
- package/dist/translations/languages/nb.d.ts.map +1 -0
- package/dist/translations/languages/nb.js +34 -0
- package/dist/translations/languages/nb.js.map +1 -0
- package/dist/translations/languages/nl.d.ts +31 -0
- package/dist/translations/languages/nl.d.ts.map +1 -0
- package/dist/translations/languages/nl.js +34 -0
- package/dist/translations/languages/nl.js.map +1 -0
- package/dist/translations/languages/pl.d.ts +31 -0
- package/dist/translations/languages/pl.d.ts.map +1 -0
- package/dist/translations/languages/pl.js +34 -0
- package/dist/translations/languages/pl.js.map +1 -0
- package/dist/translations/languages/pt.d.ts +31 -0
- package/dist/translations/languages/pt.d.ts.map +1 -0
- package/dist/translations/languages/pt.js +34 -0
- package/dist/translations/languages/pt.js.map +1 -0
- package/dist/translations/languages/ro.d.ts +31 -0
- package/dist/translations/languages/ro.d.ts.map +1 -0
- package/dist/translations/languages/ro.js +34 -0
- package/dist/translations/languages/ro.js.map +1 -0
- package/dist/translations/languages/rs.d.ts +31 -0
- package/dist/translations/languages/rs.d.ts.map +1 -0
- package/dist/translations/languages/rs.js +34 -0
- package/dist/translations/languages/rs.js.map +1 -0
- package/dist/translations/languages/rsLatin.d.ts +31 -0
- package/dist/translations/languages/rsLatin.d.ts.map +1 -0
- package/dist/translations/languages/rsLatin.js +34 -0
- package/dist/translations/languages/rsLatin.js.map +1 -0
- package/dist/translations/languages/ru.d.ts +31 -0
- package/dist/translations/languages/ru.d.ts.map +1 -0
- package/dist/translations/languages/ru.js +34 -0
- package/dist/translations/languages/ru.js.map +1 -0
- package/dist/translations/languages/sk.d.ts +31 -0
- package/dist/translations/languages/sk.d.ts.map +1 -0
- package/dist/translations/languages/sk.js +34 -0
- package/dist/translations/languages/sk.js.map +1 -0
- package/dist/translations/languages/sl.d.ts +31 -0
- package/dist/translations/languages/sl.d.ts.map +1 -0
- package/dist/translations/languages/sl.js +34 -0
- package/dist/translations/languages/sl.js.map +1 -0
- package/dist/translations/languages/sv.d.ts +31 -0
- package/dist/translations/languages/sv.d.ts.map +1 -0
- package/dist/translations/languages/sv.js +34 -0
- package/dist/translations/languages/sv.js.map +1 -0
- package/dist/translations/languages/ta.d.ts +31 -0
- package/dist/translations/languages/ta.d.ts.map +1 -0
- package/dist/translations/languages/ta.js +34 -0
- package/dist/translations/languages/ta.js.map +1 -0
- package/dist/translations/languages/th.d.ts +31 -0
- package/dist/translations/languages/th.d.ts.map +1 -0
- package/dist/translations/languages/th.js +34 -0
- package/dist/translations/languages/th.js.map +1 -0
- package/dist/translations/languages/tr.d.ts +31 -0
- package/dist/translations/languages/tr.d.ts.map +1 -0
- package/dist/translations/languages/tr.js +34 -0
- package/dist/translations/languages/tr.js.map +1 -0
- package/dist/translations/languages/uk.d.ts +31 -0
- package/dist/translations/languages/uk.d.ts.map +1 -0
- package/dist/translations/languages/uk.js +34 -0
- package/dist/translations/languages/uk.js.map +1 -0
- package/dist/translations/languages/vi.d.ts +31 -0
- package/dist/translations/languages/vi.d.ts.map +1 -0
- package/dist/translations/languages/vi.js +34 -0
- package/dist/translations/languages/vi.js.map +1 -0
- package/dist/translations/languages/zh.d.ts +31 -0
- package/dist/translations/languages/zh.d.ts.map +1 -0
- package/dist/translations/languages/zh.js +34 -0
- package/dist/translations/languages/zh.js.map +1 -0
- package/dist/translations/languages/zhTw.d.ts +31 -0
- package/dist/translations/languages/zhTw.d.ts.map +1 -0
- package/dist/translations/languages/zhTw.js +34 -0
- package/dist/translations/languages/zhTw.js.map +1 -0
- package/dist/translations/types.d.ts +32 -0
- package/dist/translations/types.d.ts.map +1 -0
- package/dist/translations/types.js +3 -0
- package/dist/translations/types.js.map +1 -0
- package/dist/types.d.ts +6 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +7 -6
- package/src/collection/getAccessField.ts +33 -13
- package/src/collection/index.ts +63 -22
- package/src/components/APIKeyField/index.client.tsx +73 -0
- package/src/components/APIKeyField/index.css +105 -0
- package/src/components/APIKeysEmptyState/index.client.tsx +36 -0
- package/src/components/AccessField/index.client.tsx +163 -211
- package/src/components/AccessField/index.css +50 -44
- package/src/components/SettingsMenu/index.client.tsx +34 -0
- package/src/endpoint/access.ts +12 -0
- package/src/exports/client.ts +3 -0
- package/src/index.ts +49 -3
- package/src/translations/index.ts +108 -0
- package/src/translations/languages/ar.ts +35 -0
- package/src/translations/languages/az.ts +35 -0
- package/src/translations/languages/bg.ts +35 -0
- package/src/translations/languages/bnBd.ts +35 -0
- package/src/translations/languages/bnIn.ts +35 -0
- package/src/translations/languages/ca.ts +35 -0
- package/src/translations/languages/cs.ts +35 -0
- package/src/translations/languages/da.ts +35 -0
- package/src/translations/languages/de.ts +35 -0
- package/src/translations/languages/en.ts +35 -0
- package/src/translations/languages/es.ts +35 -0
- package/src/translations/languages/et.ts +35 -0
- package/src/translations/languages/fa.ts +35 -0
- package/src/translations/languages/fr.ts +35 -0
- package/src/translations/languages/he.ts +35 -0
- package/src/translations/languages/hr.ts +35 -0
- package/src/translations/languages/hu.ts +35 -0
- package/src/translations/languages/hy.ts +35 -0
- package/src/translations/languages/id.ts +35 -0
- package/src/translations/languages/is.ts +35 -0
- package/src/translations/languages/it.ts +35 -0
- package/src/translations/languages/ja.ts +35 -0
- package/src/translations/languages/ko.ts +35 -0
- package/src/translations/languages/lt.ts +35 -0
- package/src/translations/languages/lv.ts +35 -0
- package/src/translations/languages/my.ts +35 -0
- package/src/translations/languages/nb.ts +35 -0
- package/src/translations/languages/nl.ts +35 -0
- package/src/translations/languages/pl.ts +35 -0
- package/src/translations/languages/pt.ts +35 -0
- package/src/translations/languages/ro.ts +35 -0
- package/src/translations/languages/rs.ts +35 -0
- package/src/translations/languages/rsLatin.ts +35 -0
- package/src/translations/languages/ru.ts +35 -0
- package/src/translations/languages/sk.ts +35 -0
- package/src/translations/languages/sl.ts +35 -0
- package/src/translations/languages/sv.ts +35 -0
- package/src/translations/languages/ta.ts +35 -0
- package/src/translations/languages/th.ts +35 -0
- package/src/translations/languages/tr.ts +35 -0
- package/src/translations/languages/uk.ts +35 -0
- package/src/translations/languages/vi.ts +35 -0
- package/src/translations/languages/zh.ts +35 -0
- package/src/translations/languages/zhTw.ts +35 -0
- package/src/translations/types.ts +34 -0
- package/src/types.ts +6 -1
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export const viTranslations = {
|
|
2
|
+
'plugin-mcp': {
|
|
3
|
+
apiKeyDescription: 'Khóa API kiểm soát các bộ sưu tập, tài nguyên, công cụ và prompt mà client MCP có thể truy cập.',
|
|
4
|
+
apiKeys: 'Khóa API',
|
|
5
|
+
authentication: 'Xác thực',
|
|
6
|
+
description: 'Mô tả',
|
|
7
|
+
descriptionDescription: 'Mô tả mục đích của khóa API.',
|
|
8
|
+
dismiss: 'Đóng',
|
|
9
|
+
keepKeyPrivate: 'Giữ khóa của bạn riêng tư.',
|
|
10
|
+
keyPrivateDescription: 'Khóa này cấp cho MCP quyền truy cập nội dung của bạn. Đừng chia sẻ với người khác!',
|
|
11
|
+
lastUsed: 'Lần dùng cuối',
|
|
12
|
+
manageAPIKeys: 'Quản lý khóa API',
|
|
13
|
+
mcp: 'MCP',
|
|
14
|
+
noAPIKeys: 'Không có khóa API',
|
|
15
|
+
operations: 'Thao tác',
|
|
16
|
+
overrideAccess: 'Ghi đè kiểm soát truy cập',
|
|
17
|
+
overrideAccessDescription: 'Khi bật, khóa này bỏ qua kiểm soát truy cập của Payload trong mọi thao tác. Hãy để tắt trừ khi bạn có lý do cụ thể.',
|
|
18
|
+
permissions: 'Quyền',
|
|
19
|
+
permissionsDescription: 'Cho phép client MCP truy cập các bộ sưu tập, công cụ, tài nguyên và prompt sau.',
|
|
20
|
+
prompts: 'Prompt',
|
|
21
|
+
resources: 'Tài nguyên',
|
|
22
|
+
server: 'Máy chủ',
|
|
23
|
+
title: 'Tiêu đề',
|
|
24
|
+
titleDescription: 'Tên gợi nhớ hữu ích cho khóa API.',
|
|
25
|
+
tools: 'Công cụ',
|
|
26
|
+
userDescription: 'Người dùng mà MCP sẽ đại diện để hành động.'
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
export const vi = {
|
|
30
|
+
dateFNSKey: 'vi',
|
|
31
|
+
translations: viTranslations
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
//# sourceMappingURL=vi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/translations/languages/vi.ts"],"sourcesContent":["import type { PluginLanguage } from '../types.js'\n\nexport const viTranslations = {\n 'plugin-mcp': {\n apiKeyDescription: 'Khóa API kiểm soát các bộ sưu tập, tài nguyên, công cụ và prompt mà client MCP có thể truy cập.',\n apiKeys: 'Khóa API',\n authentication: 'Xác thực',\n description: 'Mô tả',\n descriptionDescription: 'Mô tả mục đích của khóa API.',\n dismiss: 'Đóng',\n keepKeyPrivate: 'Giữ khóa của bạn riêng tư.',\n keyPrivateDescription: 'Khóa này cấp cho MCP quyền truy cập nội dung của bạn. Đừng chia sẻ với người khác!',\n lastUsed: 'Lần dùng cuối',\n manageAPIKeys: 'Quản lý khóa API',\n mcp: 'MCP',\n noAPIKeys: 'Không có khóa API',\n operations: 'Thao tác',\n overrideAccess: 'Ghi đè kiểm soát truy cập',\n overrideAccessDescription: 'Khi bật, khóa này bỏ qua kiểm soát truy cập của Payload trong mọi thao tác. Hãy để tắt trừ khi bạn có lý do cụ thể.',\n permissions: 'Quyền',\n permissionsDescription: 'Cho phép client MCP truy cập các bộ sưu tập, công cụ, tài nguyên và prompt sau.',\n prompts: 'Prompt',\n resources: 'Tài nguyên',\n server: 'Máy chủ',\n title: 'Tiêu đề',\n titleDescription: 'Tên gợi nhớ hữu ích cho khóa API.',\n tools: 'Công cụ',\n userDescription: 'Người dùng mà MCP sẽ đại diện để hành động.',\n },\n}\n\nexport const vi: PluginLanguage = {\n dateFNSKey: 'vi',\n translations: viTranslations,\n}\n"],"names":["viTranslations","apiKeyDescription","apiKeys","authentication","description","descriptionDescription","dismiss","keepKeyPrivate","keyPrivateDescription","lastUsed","manageAPIKeys","mcp","noAPIKeys","operations","overrideAccess","overrideAccessDescription","permissions","permissionsDescription","prompts","resources","server","title","titleDescription","tools","userDescription","vi","dateFNSKey","translations"],"mappings":"AAEA,OAAO,MAAMA,iBAAiB;IAC5B,cAAc;QACZC,mBAAmB;QACnBC,SAAS;QACTC,gBAAgB;QAChBC,aAAa;QACbC,wBAAwB;QACxBC,SAAS;QACTC,gBAAgB;QAChBC,uBAAuB;QACvBC,UAAU;QACVC,eAAe;QACfC,KAAK;QACLC,WAAW;QACXC,YAAY;QACZC,gBAAgB;QAChBC,2BAA2B;QAC3BC,aAAa;QACbC,wBAAwB;QACxBC,SAAS;QACTC,WAAW;QACXC,QAAQ;QACRC,OAAO;QACPC,kBAAkB;QAClBC,OAAO;QACPC,iBAAiB;IACnB;AACF,EAAC;AAED,OAAO,MAAMC,KAAqB;IAChCC,YAAY;IACZC,cAAc3B;AAChB,EAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { PluginLanguage } from '../types.js';
|
|
2
|
+
export declare const zhTranslations: {
|
|
3
|
+
'plugin-mcp': {
|
|
4
|
+
apiKeyDescription: string;
|
|
5
|
+
apiKeys: string;
|
|
6
|
+
authentication: string;
|
|
7
|
+
description: string;
|
|
8
|
+
descriptionDescription: string;
|
|
9
|
+
dismiss: string;
|
|
10
|
+
keepKeyPrivate: string;
|
|
11
|
+
keyPrivateDescription: string;
|
|
12
|
+
lastUsed: string;
|
|
13
|
+
manageAPIKeys: string;
|
|
14
|
+
mcp: string;
|
|
15
|
+
noAPIKeys: string;
|
|
16
|
+
operations: string;
|
|
17
|
+
overrideAccess: string;
|
|
18
|
+
overrideAccessDescription: string;
|
|
19
|
+
permissions: string;
|
|
20
|
+
permissionsDescription: string;
|
|
21
|
+
prompts: string;
|
|
22
|
+
resources: string;
|
|
23
|
+
server: string;
|
|
24
|
+
title: string;
|
|
25
|
+
titleDescription: string;
|
|
26
|
+
tools: string;
|
|
27
|
+
userDescription: string;
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
export declare const zh: PluginLanguage;
|
|
31
|
+
//# sourceMappingURL=zh.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zh.d.ts","sourceRoot":"","sources":["../../../src/translations/languages/zh.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAEjD,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2B1B,CAAA;AAED,eAAO,MAAM,EAAE,EAAE,cAGhB,CAAA"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export const zhTranslations = {
|
|
2
|
+
'plugin-mcp': {
|
|
3
|
+
apiKeyDescription: 'API 密钥控制 MCP 客户端可以访问哪些集合、资源、工具和提示词。',
|
|
4
|
+
apiKeys: 'API 密钥',
|
|
5
|
+
authentication: '身份验证',
|
|
6
|
+
description: '描述',
|
|
7
|
+
descriptionDescription: '描述 API 密钥的用途。',
|
|
8
|
+
dismiss: '关闭',
|
|
9
|
+
keepKeyPrivate: '请妥善保管你的密钥。',
|
|
10
|
+
keyPrivateDescription: '此密钥会让 MCP 访问你的内容。不要与他人共享!',
|
|
11
|
+
lastUsed: '上次使用',
|
|
12
|
+
manageAPIKeys: '管理 API 密钥',
|
|
13
|
+
mcp: 'MCP',
|
|
14
|
+
noAPIKeys: '没有 API 密钥',
|
|
15
|
+
operations: '操作',
|
|
16
|
+
overrideAccess: '覆盖访问控制',
|
|
17
|
+
overrideAccessDescription: '启用后,此密钥执行的每个操作都会绕过 Payload 访问控制。除非有明确原因,否则请保持关闭。',
|
|
18
|
+
permissions: '权限',
|
|
19
|
+
permissionsDescription: '允许 MCP 客户端访问以下集合、工具、资源和提示词。',
|
|
20
|
+
prompts: '提示词',
|
|
21
|
+
resources: '资源',
|
|
22
|
+
server: '服务器',
|
|
23
|
+
title: '标题',
|
|
24
|
+
titleDescription: 'API 密钥的易识别名称。',
|
|
25
|
+
tools: '工具',
|
|
26
|
+
userDescription: 'MCP 将代表其操作的用户。'
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
export const zh = {
|
|
30
|
+
dateFNSKey: 'zh-CN',
|
|
31
|
+
translations: zhTranslations
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
//# sourceMappingURL=zh.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/translations/languages/zh.ts"],"sourcesContent":["import type { PluginLanguage } from '../types.js'\n\nexport const zhTranslations = {\n 'plugin-mcp': {\n apiKeyDescription: 'API 密钥控制 MCP 客户端可以访问哪些集合、资源、工具和提示词。',\n apiKeys: 'API 密钥',\n authentication: '身份验证',\n description: '描述',\n descriptionDescription: '描述 API 密钥的用途。',\n dismiss: '关闭',\n keepKeyPrivate: '请妥善保管你的密钥。',\n keyPrivateDescription: '此密钥会让 MCP 访问你的内容。不要与他人共享!',\n lastUsed: '上次使用',\n manageAPIKeys: '管理 API 密钥',\n mcp: 'MCP',\n noAPIKeys: '没有 API 密钥',\n operations: '操作',\n overrideAccess: '覆盖访问控制',\n overrideAccessDescription: '启用后,此密钥执行的每个操作都会绕过 Payload 访问控制。除非有明确原因,否则请保持关闭。',\n permissions: '权限',\n permissionsDescription: '允许 MCP 客户端访问以下集合、工具、资源和提示词。',\n prompts: '提示词',\n resources: '资源',\n server: '服务器',\n title: '标题',\n titleDescription: 'API 密钥的易识别名称。',\n tools: '工具',\n userDescription: 'MCP 将代表其操作的用户。',\n },\n}\n\nexport const zh: PluginLanguage = {\n dateFNSKey: 'zh-CN',\n translations: zhTranslations,\n}\n"],"names":["zhTranslations","apiKeyDescription","apiKeys","authentication","description","descriptionDescription","dismiss","keepKeyPrivate","keyPrivateDescription","lastUsed","manageAPIKeys","mcp","noAPIKeys","operations","overrideAccess","overrideAccessDescription","permissions","permissionsDescription","prompts","resources","server","title","titleDescription","tools","userDescription","zh","dateFNSKey","translations"],"mappings":"AAEA,OAAO,MAAMA,iBAAiB;IAC5B,cAAc;QACZC,mBAAmB;QACnBC,SAAS;QACTC,gBAAgB;QAChBC,aAAa;QACbC,wBAAwB;QACxBC,SAAS;QACTC,gBAAgB;QAChBC,uBAAuB;QACvBC,UAAU;QACVC,eAAe;QACfC,KAAK;QACLC,WAAW;QACXC,YAAY;QACZC,gBAAgB;QAChBC,2BAA2B;QAC3BC,aAAa;QACbC,wBAAwB;QACxBC,SAAS;QACTC,WAAW;QACXC,QAAQ;QACRC,OAAO;QACPC,kBAAkB;QAClBC,OAAO;QACPC,iBAAiB;IACnB;AACF,EAAC;AAED,OAAO,MAAMC,KAAqB;IAChCC,YAAY;IACZC,cAAc3B;AAChB,EAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { PluginLanguage } from '../types.js';
|
|
2
|
+
export declare const zhTwTranslations: {
|
|
3
|
+
'plugin-mcp': {
|
|
4
|
+
apiKeyDescription: string;
|
|
5
|
+
apiKeys: string;
|
|
6
|
+
authentication: string;
|
|
7
|
+
description: string;
|
|
8
|
+
descriptionDescription: string;
|
|
9
|
+
dismiss: string;
|
|
10
|
+
keepKeyPrivate: string;
|
|
11
|
+
keyPrivateDescription: string;
|
|
12
|
+
lastUsed: string;
|
|
13
|
+
manageAPIKeys: string;
|
|
14
|
+
mcp: string;
|
|
15
|
+
noAPIKeys: string;
|
|
16
|
+
operations: string;
|
|
17
|
+
overrideAccess: string;
|
|
18
|
+
overrideAccessDescription: string;
|
|
19
|
+
permissions: string;
|
|
20
|
+
permissionsDescription: string;
|
|
21
|
+
prompts: string;
|
|
22
|
+
resources: string;
|
|
23
|
+
server: string;
|
|
24
|
+
title: string;
|
|
25
|
+
titleDescription: string;
|
|
26
|
+
tools: string;
|
|
27
|
+
userDescription: string;
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
export declare const zhTw: PluginLanguage;
|
|
31
|
+
//# sourceMappingURL=zhTw.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zhTw.d.ts","sourceRoot":"","sources":["../../../src/translations/languages/zhTw.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAEjD,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2B5B,CAAA;AAED,eAAO,MAAM,IAAI,EAAE,cAGlB,CAAA"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export const zhTwTranslations = {
|
|
2
|
+
'plugin-mcp': {
|
|
3
|
+
apiKeyDescription: 'API 金鑰控制 MCP 用戶端可以存取哪些集合、資源、工具和提示詞。',
|
|
4
|
+
apiKeys: 'API 金鑰',
|
|
5
|
+
authentication: '驗證',
|
|
6
|
+
description: '描述',
|
|
7
|
+
descriptionDescription: '描述 API 金鑰的用途。',
|
|
8
|
+
dismiss: '關閉',
|
|
9
|
+
keepKeyPrivate: '請妥善保管你的金鑰。',
|
|
10
|
+
keyPrivateDescription: '此金鑰會讓 MCP 存取你的內容。不要與他人分享!',
|
|
11
|
+
lastUsed: '上次使用',
|
|
12
|
+
manageAPIKeys: '管理 API 金鑰',
|
|
13
|
+
mcp: 'MCP',
|
|
14
|
+
noAPIKeys: '沒有 API 金鑰',
|
|
15
|
+
operations: '操作',
|
|
16
|
+
overrideAccess: '覆寫存取控制',
|
|
17
|
+
overrideAccessDescription: '啟用後,此金鑰執行的每個操作都會略過 Payload 存取控制。除非有明確原因,否則請保持關閉。',
|
|
18
|
+
permissions: '權限',
|
|
19
|
+
permissionsDescription: '允許 MCP 用戶端存取以下集合、工具、資源和提示詞。',
|
|
20
|
+
prompts: '提示詞',
|
|
21
|
+
resources: '資源',
|
|
22
|
+
server: '伺服器',
|
|
23
|
+
title: '標題',
|
|
24
|
+
titleDescription: 'API 金鑰的易識別名稱。',
|
|
25
|
+
tools: '工具',
|
|
26
|
+
userDescription: 'MCP 將代表其操作的使用者。'
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
export const zhTw = {
|
|
30
|
+
dateFNSKey: 'zh-TW',
|
|
31
|
+
translations: zhTwTranslations
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
//# sourceMappingURL=zhTw.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/translations/languages/zhTw.ts"],"sourcesContent":["import type { PluginLanguage } from '../types.js'\n\nexport const zhTwTranslations = {\n 'plugin-mcp': {\n apiKeyDescription: 'API 金鑰控制 MCP 用戶端可以存取哪些集合、資源、工具和提示詞。',\n apiKeys: 'API 金鑰',\n authentication: '驗證',\n description: '描述',\n descriptionDescription: '描述 API 金鑰的用途。',\n dismiss: '關閉',\n keepKeyPrivate: '請妥善保管你的金鑰。',\n keyPrivateDescription: '此金鑰會讓 MCP 存取你的內容。不要與他人分享!',\n lastUsed: '上次使用',\n manageAPIKeys: '管理 API 金鑰',\n mcp: 'MCP',\n noAPIKeys: '沒有 API 金鑰',\n operations: '操作',\n overrideAccess: '覆寫存取控制',\n overrideAccessDescription: '啟用後,此金鑰執行的每個操作都會略過 Payload 存取控制。除非有明確原因,否則請保持關閉。',\n permissions: '權限',\n permissionsDescription: '允許 MCP 用戶端存取以下集合、工具、資源和提示詞。',\n prompts: '提示詞',\n resources: '資源',\n server: '伺服器',\n title: '標題',\n titleDescription: 'API 金鑰的易識別名稱。',\n tools: '工具',\n userDescription: 'MCP 將代表其操作的使用者。',\n },\n}\n\nexport const zhTw: PluginLanguage = {\n dateFNSKey: 'zh-TW',\n translations: zhTwTranslations,\n}\n"],"names":["zhTwTranslations","apiKeyDescription","apiKeys","authentication","description","descriptionDescription","dismiss","keepKeyPrivate","keyPrivateDescription","lastUsed","manageAPIKeys","mcp","noAPIKeys","operations","overrideAccess","overrideAccessDescription","permissions","permissionsDescription","prompts","resources","server","title","titleDescription","tools","userDescription","zhTw","dateFNSKey","translations"],"mappings":"AAEA,OAAO,MAAMA,mBAAmB;IAC9B,cAAc;QACZC,mBAAmB;QACnBC,SAAS;QACTC,gBAAgB;QAChBC,aAAa;QACbC,wBAAwB;QACxBC,SAAS;QACTC,gBAAgB;QAChBC,uBAAuB;QACvBC,UAAU;QACVC,eAAe;QACfC,KAAK;QACLC,WAAW;QACXC,YAAY;QACZC,gBAAgB;QAChBC,2BAA2B;QAC3BC,aAAa;QACbC,wBAAwB;QACxBC,SAAS;QACTC,WAAW;QACXC,QAAQ;QACRC,OAAO;QACPC,kBAAkB;QAClBC,OAAO;QACPC,iBAAiB;IACnB;AACF,EAAC;AAED,OAAO,MAAMC,OAAuB;IAClCC,YAAY;IACZC,cAAc3B;AAChB,EAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { Language } from '@payloadcms/translations';
|
|
2
|
+
import type { enTranslations } from './languages/en.js';
|
|
3
|
+
export type PluginLanguage = Language<{
|
|
4
|
+
'plugin-mcp': {
|
|
5
|
+
apiKeyDescription: string;
|
|
6
|
+
apiKeys: string;
|
|
7
|
+
authentication: string;
|
|
8
|
+
description: string;
|
|
9
|
+
descriptionDescription: string;
|
|
10
|
+
dismiss: string;
|
|
11
|
+
keepKeyPrivate: string;
|
|
12
|
+
keyPrivateDescription: string;
|
|
13
|
+
lastUsed: string;
|
|
14
|
+
manageAPIKeys: string;
|
|
15
|
+
mcp: string;
|
|
16
|
+
noAPIKeys: string;
|
|
17
|
+
operations: string;
|
|
18
|
+
overrideAccess: string;
|
|
19
|
+
overrideAccessDescription: string;
|
|
20
|
+
permissions: string;
|
|
21
|
+
permissionsDescription: string;
|
|
22
|
+
prompts: string;
|
|
23
|
+
resources: string;
|
|
24
|
+
server: string;
|
|
25
|
+
title: string;
|
|
26
|
+
titleDescription: string;
|
|
27
|
+
tools: string;
|
|
28
|
+
userDescription: string;
|
|
29
|
+
};
|
|
30
|
+
}>;
|
|
31
|
+
export type PluginDefaultTranslationsObject = typeof enTranslations;
|
|
32
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/translations/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AAExD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAEvD,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC;IACpC,YAAY,EAAE;QACZ,iBAAiB,EAAE,MAAM,CAAA;QACzB,OAAO,EAAE,MAAM,CAAA;QACf,cAAc,EAAE,MAAM,CAAA;QACtB,WAAW,EAAE,MAAM,CAAA;QACnB,sBAAsB,EAAE,MAAM,CAAA;QAC9B,OAAO,EAAE,MAAM,CAAA;QACf,cAAc,EAAE,MAAM,CAAA;QACtB,qBAAqB,EAAE,MAAM,CAAA;QAC7B,QAAQ,EAAE,MAAM,CAAA;QAChB,aAAa,EAAE,MAAM,CAAA;QACrB,GAAG,EAAE,MAAM,CAAA;QACX,SAAS,EAAE,MAAM,CAAA;QACjB,UAAU,EAAE,MAAM,CAAA;QAClB,cAAc,EAAE,MAAM,CAAA;QACtB,yBAAyB,EAAE,MAAM,CAAA;QACjC,WAAW,EAAE,MAAM,CAAA;QACnB,sBAAsB,EAAE,MAAM,CAAA;QAC9B,OAAO,EAAE,MAAM,CAAA;QACf,SAAS,EAAE,MAAM,CAAA;QACjB,MAAM,EAAE,MAAM,CAAA;QACd,KAAK,EAAE,MAAM,CAAA;QACb,gBAAgB,EAAE,MAAM,CAAA;QACxB,KAAK,EAAE,MAAM,CAAA;QACb,eAAe,EAAE,MAAM,CAAA;KACxB,CAAA;CACF,CAAC,CAAA;AAEF,MAAM,MAAM,+BAA+B,GAAG,OAAO,cAAc,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/translations/types.ts"],"sourcesContent":["import type { Language } from '@payloadcms/translations'\n\nimport type { enTranslations } from './languages/en.js'\n\nexport type PluginLanguage = Language<{\n 'plugin-mcp': {\n apiKeyDescription: string\n apiKeys: string\n authentication: string\n description: string\n descriptionDescription: string\n dismiss: string\n keepKeyPrivate: string\n keyPrivateDescription: string\n lastUsed: string\n manageAPIKeys: string\n mcp: string\n noAPIKeys: string\n operations: string\n overrideAccess: string\n overrideAccessDescription: string\n permissions: string\n permissionsDescription: string\n prompts: string\n resources: string\n server: string\n title: string\n titleDescription: string\n tools: string\n userDescription: string\n }\n}>\n\nexport type PluginDefaultTranslationsObject = typeof enTranslations\n"],"names":[],"mappings":"AAiCA,WAAmE"}
|
package/dist/types.d.ts
CHANGED
|
@@ -21,8 +21,10 @@ export type ClientMCPPluginConfig = {
|
|
|
21
21
|
items: Array<{
|
|
22
22
|
collectionSlug?: string;
|
|
23
23
|
configKey: string;
|
|
24
|
-
description
|
|
24
|
+
description?: string;
|
|
25
25
|
globalSlug?: string;
|
|
26
|
+
/** Admin-UI bucket for collection/global tools: built-in CRUD, auth, or custom. */
|
|
27
|
+
group?: 'auth' | 'custom' | 'operations';
|
|
26
28
|
label: string;
|
|
27
29
|
type: 'collectionTool' | 'globalTool' | 'prompt' | 'resource' | 'tool';
|
|
28
30
|
}>;
|
|
@@ -227,7 +229,10 @@ export type MCPAPIKeysDocAccessTree = {
|
|
|
227
229
|
*/
|
|
228
230
|
export type MCPAPIKeysDoc = {
|
|
229
231
|
access: MCPAPIKeysDocAccessTree;
|
|
232
|
+
apiKey?: string;
|
|
233
|
+
apiKeyIndex?: string;
|
|
230
234
|
id: DefaultDocumentIDType;
|
|
235
|
+
lastUsed?: string;
|
|
231
236
|
overrideAccess?: boolean;
|
|
232
237
|
user: null | TypedUser;
|
|
233
238
|
};
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EACZ,cAAc,EACd,SAAS,EACT,gBAAgB,EAChB,aAAa,EACb,sBAAsB,EACvB,MAAM,8BAA8B,CAAA;AACrC,OAAO,KAAK,EACV,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,EACd,qBAAqB,EACrB,UAAU,EACV,YAAY,EACZ,cAAc,EACd,SAAS,EACV,MAAM,SAAS,CAAA;AAEhB,OAAO,KAAK,EACV,yBAAyB,EACzB,wBAAwB,EACxB,oBAAoB,EACrB,MAAM,uBAAuB,CAAA;AAE9B,YAAY,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,CAAA;AAEzF,iHAAiH;AACjH,YAAY,EAAE,cAAc,EAAE,sBAAsB,EAAE,CAAA;AAEtD;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG,cAAc,GAAG,sBAAsB,CAAA;AAErE;;;;;;;GAOG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC,KAAK,EAAE,KAAK,CAAC;QACX,cAAc,CAAC,EAAE,MAAM,CAAA;QACvB,SAAS,EAAE,MAAM,CAAA;QACjB,WAAW,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/types.ts"],"sourcesContent":["import type {\n CallToolResult,\n ContentBlock,\n JsonSchemaType,\n McpServer,\n ResourceTemplate,\n ServerContext,\n StandardSchemaWithJSON,\n} from '@modelcontextprotocol/server'\nimport type {\n AuthCollectionSlug,\n CollectionConfig,\n CollectionSlug,\n DefaultDocumentIDType,\n GlobalSlug,\n MaybePromise,\n PayloadRequest,\n TypedUser,\n} from 'payload'\n\nimport type {\n MCPCollectionAuthToolName,\n MCPCollectionBuiltinName,\n MCPGlobalBuiltinName,\n} from './mcp/builtinTools.js'\n\nexport type { MCPCollectionAuthToolName, MCPCollectionBuiltinName, MCPGlobalBuiltinName }\n\n/** Re-exported from `@modelcontextprotocol/server` — the JSON Schema shape the MCP runtime validates against. */\nexport type { JsonSchemaType, StandardSchemaWithJSON }\n\n/**\n * What a tool's `input` (or a prompt's `argsSchema`) can be — either a raw\n * JSON Schema literal, or a Standard Schema instance (Zod, Valibot, …).\n */\nexport type ToolInputSchema = JsonSchemaType | StandardSchemaWithJSON\n\n/**\n * Serializable mirror of `SanitizedMCPPluginConfig` for client components —\n * the full sanitized config carries functions (tool handlers, etc.) that can't\n * cross the server→client boundary. Built by `sanitizeClientPluginConfig` and\n * passed to the `AccessField` component via `clientProps`.\n *\n * @internal\n */\nexport type ClientMCPPluginConfig = {\n items: Array<{\n collectionSlug?: string\n configKey: string\n description: string\n globalSlug?: string\n label: string\n type: 'collectionTool' | 'globalTool' | 'prompt' | 'resource' | 'tool'\n }>\n}\n\nexport type MCPToolResponse = {\n content: ContentBlock[]\n /**\n * If available, return the document fetched within the\n * mcp tool. This is threaded as an additional argument to\n * overrideResponse functions and stripped before going on the wire.\n */\n doc?: Record<string, unknown>\n} & Pick<CallToolResult, '_meta' | 'isError' | 'structuredContent'>\n\nexport type MCPResponseOverride = (\n response: MCPToolResponse,\n doc: Record<string, unknown>,\n req: PayloadRequest,\n) => MCPToolResponse\n\n/**\n * The handler's `input` type. A specific Standard Schema (Zod, Valibot, …) gets\n * its inferred output; anything else falls back to `Record<string, unknown>`.\n */\nexport type TypedInput<TSchema> = TSchema extends StandardSchemaWithJSON\n ? StandardSchemaWithJSON extends TSchema\n ? Record<string, unknown>\n : StandardSchemaWithJSON.InferOutput<TSchema>\n : Record<string, unknown>\n\nexport type ToolHandlerArgs<TSchema = undefined> = {\n authorizedMCP: AuthorizedMCP\n input: TypedInput<TSchema>\n req: PayloadRequest\n serverContext: ServerContext\n}\n\nexport type CollectionToolHandlerArgs<TSchema = undefined> = {\n collectionSlug: CollectionSlug\n} & ToolHandlerArgs<TSchema>\n\nexport type GlobalToolHandlerArgs<TSchema = undefined> = {\n globalSlug: GlobalSlug\n} & ToolHandlerArgs<TSchema>\n\nexport type Tool<TSchema extends ToolInputSchema | undefined = ToolInputSchema | undefined> = {\n description: string\n handler: (args: ToolHandlerArgs<TSchema>) => MaybePromise<MCPToolResponse>\n input?: TSchema\n /**\n * Override the return value of the tool handler\n */\n overrideResponse?: MCPResponseOverride\n}\n\nexport type CollectionTool<\n TSchema extends ToolInputSchema | undefined = ToolInputSchema | undefined,\n> = {\n handler: (args: CollectionToolHandlerArgs<TSchema>) => MaybePromise<MCPToolResponse>\n input?: TSchema\n} & Pick<Tool, 'description' | 'overrideResponse'>\n\nexport type GlobalTool<TSchema extends ToolInputSchema | undefined = ToolInputSchema | undefined> =\n {\n handler: (args: GlobalToolHandlerArgs<TSchema>) => MaybePromise<MCPToolResponse>\n input?: TSchema\n } & Pick<Tool, 'description' | 'overrideResponse'>\n\n/**\n * Configures (or disables) a built-in tool without replacing it.\n * `handler?: never` prevents a full `CollectionTool`/`GlobalTool` (which has a\n * required handler) from being silently accepted at a built-in key slot.\n */\nexport type MCPBuiltInToolOverride = {\n description?: string\n handler?: never\n overrideResponse?: MCPResponseOverride\n}\n\n/**\n * Value at a custom (non-built-in) tool key. Either the tool itself, or `false`\n * to disable it (useful when one plugin defines a custom tool and another\n * wants to opt out per-collection).\n */\nexport type MCPTopLevelToolEntry = Tool\n\nexport type MCPCollectionToolsMap = {\n [customToolName: string]: boolean | CollectionTool | MCPBuiltInToolOverride | undefined\n} & {\n [K in MCPCollectionBuiltinName]?: false | MCPBuiltInToolOverride\n}\n\nexport type MCPAuthCollectionToolsMap = {\n [K in MCPCollectionAuthToolName]?: MCPBuiltInToolOverride | true\n} & MCPCollectionToolsMap\n\n/** Auth-enabled collections get auth-tool name autocomplete; others get CRUD-only. */\nexport type MCPToolsMapForCollection<Slug extends CollectionSlug> = Slug extends AuthCollectionSlug\n ? MCPAuthCollectionToolsMap\n : MCPCollectionToolsMap\n\nexport type MCPGlobalToolsMap = {\n [customToolName: string]: boolean | GlobalTool | MCPBuiltInToolOverride | undefined\n} & {\n [K in MCPGlobalBuiltinName]?: false | MCPBuiltInToolOverride\n}\n\nexport type MCPTopLevelToolsMap = Record<string, Tool>\n\nexport type PromptHandlerArgs<TSchema = undefined> = {\n input: TypedInput<TSchema>\n req: PayloadRequest\n serverContext: ServerContext\n}\n\nexport type Prompt<TSchema extends ToolInputSchema = ToolInputSchema> = {\n argsSchema: TSchema\n description: string\n handler: (args: PromptHandlerArgs<TSchema>) => MaybePromise<{\n messages: Array<{ content: { text: string; type: 'text' }; role: 'assistant' | 'user' }>\n }>\n title: string\n}\n\nexport type ResourceHandlerArgs = {\n /** Variables extracted from a `ResourceTemplate` URI. Empty for static-URI resources. */\n params: Record<string, string>\n req: PayloadRequest\n serverContext: ServerContext\n uri: URL\n}\n\nexport type Resource = {\n description: string\n handler: (args: ResourceHandlerArgs) => MaybePromise<{\n contents: Array<{ text: string; uri: string }>\n }>\n mimeType: string\n title: string\n uri: ResourceTemplate | string\n}\n\nexport type MCPPluginCollectionConfig<TSlug extends CollectionSlug> = {\n description?: string\n /** Fallback for built-in tools that don't set their own `overrideResponse`. */\n overrideResponse?: MCPResponseOverride\n tools?: MCPToolsMapForCollection<TSlug>\n}\n\nexport type MCPPluginGlobalConfig = {\n description?: string\n overrideResponse?: MCPResponseOverride\n tools?: MCPGlobalToolsMap\n}\n\n/**\n * The user-facing config shape passed to `mcpPlugin({ ... })`. Tools, prompts,\n * resources, and per-collection/global tool maps live in their own nested\n * fields. `sanitizeMCPConfig` flattens those into `items` and applies defaults\n * to produce a `SanitizedMCPPluginConfig` — the form every internal consumer\n * actually works with.\n */\nexport type MCPPluginConfig = {\n collections?: {\n [Slug in CollectionSlug]?: MCPPluginCollectionConfig<Slug>\n }\n /** Skip MCP registration. The API key collection is still added (so DB / types stay stable). */\n disabled?: boolean\n globals?: {\n [Slug in GlobalSlug]?: MCPPluginGlobalConfig\n }\n mcp?: {\n serverOptions?: MCPServerOptions\n verboseLogs?: boolean\n }\n overrideApiKeyCollection?: (collection: CollectionConfig) => CollectionConfig\n /** Replace the default API-key auth with a custom resolver. */\n overrideAuth?: (args: {\n getAPIKeyDoc: (overrideApiKey?: string) => Promise<MCPAPIKeysDoc>\n getAuthorizedMCP: (args: { apiKeyDoc: MCPAPIKeysDoc }) => AuthorizedMCP\n pluginConfig: SanitizedMCPPluginConfig\n req: PayloadRequest\n }) => MaybePromise<AuthorizedMCP>\n prompts?: Record<string, Prompt>\n resources?: Record<string, Resource>\n /** Cross-cutting tools (not scoped to any collection or global). */\n tools?: MCPTopLevelToolsMap\n userCollection?: CollectionSlug\n}\n\nexport type SanitizedMCPPluginConfig = {\n items: MCPItem[]\n userCollection: CollectionSlug\n} & Pick<MCPPluginConfig, 'disabled' | 'mcp' | 'overrideApiKeyCollection' | 'overrideAuth'>\n\nexport type MCPServerOptions = {\n options?: ConstructorParameters<typeof McpServer>[1]\n serverInfo?: Partial<ConstructorParameters<typeof McpServer>[0]>\n}\n\n/**\n * Nested access tree as stored in the collection.\n * A `false` leaf disables that tool; missing keys defer to\n * defaults (built-in CRUD is on, opt-in tools are off).\n */\nexport type MCPAPIKeysDocAccessTree = {\n collections?: {\n [CollectionSlug: CollectionSlug]: {\n [ToolKey: string]: boolean\n }\n }\n globals?: {\n [GlobalSlug: GlobalSlug]: {\n [ToolKey: string]: boolean\n }\n }\n prompts?: {\n [PromptKey: string]: boolean\n }\n resources?: {\n [ResourceKey: string]: boolean\n }\n tools?: {\n [ToolKey: string]: boolean\n }\n}\n\n/**\n * Stored on `payload-mcp-api-keys` docs\n */\nexport type MCPAPIKeysDoc = {\n access: MCPAPIKeysDocAccessTree\n id: DefaultDocumentIDType\n overrideAccess?: boolean\n user: null | TypedUser\n}\n\n/**\n * One MCP primitive plus the metadata needed for access checks, admin UI, and\n * registration.\n *\n * - `configKey`: the config/API-key identifier, e.g. `find` or `echo`.\n * - `mcpName`: the MCP wire name, e.g. `findDocuments` or `echo`.\n * - `label`: human-readable admin checkbox text.\n */\nexport type MCPItemBase = {\n configKey: string\n label: string\n mcpName: string\n}\n\nexport type CollectionMCPItem = {\n collectionSlug: CollectionSlug\n tool: CollectionTool\n type: 'collectionTool'\n} & MCPItemBase\n\nexport type GlobalMCPItem = {\n globalSlug: GlobalSlug\n tool: GlobalTool\n type: 'globalTool'\n} & MCPItemBase\n\nexport type MCPItem =\n | ({\n prompt: Prompt\n type: 'prompt'\n } & MCPItemBase)\n | ({\n resource: Resource\n type: 'resource'\n } & MCPItemBase)\n | ({\n tool: Tool\n type: 'tool'\n } & MCPItemBase)\n | CollectionMCPItem\n | GlobalMCPItem\n\n/**\n * The caller's identity + the MCP items they can use for this request. Returned\n * by `getAuthorizedMCP`; denied items are simply absent from `items`. Handlers\n * receive this via `args.authorizedMCP` so they can spread\n * `localAPIDefaults(authorizedMCP)` into every local API call.\n */\nexport type AuthorizedMCP = {\n items: MCPItem[]\n overrideAccess: boolean\n user: null | TypedUser\n}\n"],"names":[],"mappings":"AA2UA;;;;;CAKC,GACD,WAIC"}
|
|
1
|
+
{"version":3,"sources":["../src/types.ts"],"sourcesContent":["import type {\n CallToolResult,\n ContentBlock,\n JsonSchemaType,\n McpServer,\n ResourceTemplate,\n ServerContext,\n StandardSchemaWithJSON,\n} from '@modelcontextprotocol/server'\nimport type {\n AuthCollectionSlug,\n CollectionConfig,\n CollectionSlug,\n DefaultDocumentIDType,\n GlobalSlug,\n MaybePromise,\n PayloadRequest,\n TypedUser,\n} from 'payload'\n\nimport type {\n MCPCollectionAuthToolName,\n MCPCollectionBuiltinName,\n MCPGlobalBuiltinName,\n} from './mcp/builtinTools.js'\n\nexport type { MCPCollectionAuthToolName, MCPCollectionBuiltinName, MCPGlobalBuiltinName }\n\n/** Re-exported from `@modelcontextprotocol/server` — the JSON Schema shape the MCP runtime validates against. */\nexport type { JsonSchemaType, StandardSchemaWithJSON }\n\n/**\n * What a tool's `input` (or a prompt's `argsSchema`) can be — either a raw\n * JSON Schema literal, or a Standard Schema instance (Zod, Valibot, …).\n */\nexport type ToolInputSchema = JsonSchemaType | StandardSchemaWithJSON\n\n/**\n * Serializable mirror of `SanitizedMCPPluginConfig` for client components —\n * the full sanitized config carries functions (tool handlers, etc.) that can't\n * cross the server→client boundary. Built by `sanitizeClientPluginConfig` and\n * passed to the `AccessField` component via `clientProps`.\n *\n * @internal\n */\nexport type ClientMCPPluginConfig = {\n items: Array<{\n collectionSlug?: string\n configKey: string\n description?: string\n globalSlug?: string\n /** Admin-UI bucket for collection/global tools: built-in CRUD, auth, or custom. */\n group?: 'auth' | 'custom' | 'operations'\n label: string\n type: 'collectionTool' | 'globalTool' | 'prompt' | 'resource' | 'tool'\n }>\n}\n\nexport type MCPToolResponse = {\n content: ContentBlock[]\n /**\n * If available, return the document fetched within the\n * mcp tool. This is threaded as an additional argument to\n * overrideResponse functions and stripped before going on the wire.\n */\n doc?: Record<string, unknown>\n} & Pick<CallToolResult, '_meta' | 'isError' | 'structuredContent'>\n\nexport type MCPResponseOverride = (\n response: MCPToolResponse,\n doc: Record<string, unknown>,\n req: PayloadRequest,\n) => MCPToolResponse\n\n/**\n * The handler's `input` type. A specific Standard Schema (Zod, Valibot, …) gets\n * its inferred output; anything else falls back to `Record<string, unknown>`.\n */\nexport type TypedInput<TSchema> = TSchema extends StandardSchemaWithJSON\n ? StandardSchemaWithJSON extends TSchema\n ? Record<string, unknown>\n : StandardSchemaWithJSON.InferOutput<TSchema>\n : Record<string, unknown>\n\nexport type ToolHandlerArgs<TSchema = undefined> = {\n authorizedMCP: AuthorizedMCP\n input: TypedInput<TSchema>\n req: PayloadRequest\n serverContext: ServerContext\n}\n\nexport type CollectionToolHandlerArgs<TSchema = undefined> = {\n collectionSlug: CollectionSlug\n} & ToolHandlerArgs<TSchema>\n\nexport type GlobalToolHandlerArgs<TSchema = undefined> = {\n globalSlug: GlobalSlug\n} & ToolHandlerArgs<TSchema>\n\nexport type Tool<TSchema extends ToolInputSchema | undefined = ToolInputSchema | undefined> = {\n description: string\n handler: (args: ToolHandlerArgs<TSchema>) => MaybePromise<MCPToolResponse>\n input?: TSchema\n /**\n * Override the return value of the tool handler\n */\n overrideResponse?: MCPResponseOverride\n}\n\nexport type CollectionTool<\n TSchema extends ToolInputSchema | undefined = ToolInputSchema | undefined,\n> = {\n handler: (args: CollectionToolHandlerArgs<TSchema>) => MaybePromise<MCPToolResponse>\n input?: TSchema\n} & Pick<Tool, 'description' | 'overrideResponse'>\n\nexport type GlobalTool<TSchema extends ToolInputSchema | undefined = ToolInputSchema | undefined> =\n {\n handler: (args: GlobalToolHandlerArgs<TSchema>) => MaybePromise<MCPToolResponse>\n input?: TSchema\n } & Pick<Tool, 'description' | 'overrideResponse'>\n\n/**\n * Configures (or disables) a built-in tool without replacing it.\n * `handler?: never` prevents a full `CollectionTool`/`GlobalTool` (which has a\n * required handler) from being silently accepted at a built-in key slot.\n */\nexport type MCPBuiltInToolOverride = {\n description?: string\n handler?: never\n overrideResponse?: MCPResponseOverride\n}\n\n/**\n * Value at a custom (non-built-in) tool key. Either the tool itself, or `false`\n * to disable it (useful when one plugin defines a custom tool and another\n * wants to opt out per-collection).\n */\nexport type MCPTopLevelToolEntry = Tool\n\nexport type MCPCollectionToolsMap = {\n [customToolName: string]: boolean | CollectionTool | MCPBuiltInToolOverride | undefined\n} & {\n [K in MCPCollectionBuiltinName]?: false | MCPBuiltInToolOverride\n}\n\nexport type MCPAuthCollectionToolsMap = {\n [K in MCPCollectionAuthToolName]?: MCPBuiltInToolOverride | true\n} & MCPCollectionToolsMap\n\n/** Auth-enabled collections get auth-tool name autocomplete; others get CRUD-only. */\nexport type MCPToolsMapForCollection<Slug extends CollectionSlug> = Slug extends AuthCollectionSlug\n ? MCPAuthCollectionToolsMap\n : MCPCollectionToolsMap\n\nexport type MCPGlobalToolsMap = {\n [customToolName: string]: boolean | GlobalTool | MCPBuiltInToolOverride | undefined\n} & {\n [K in MCPGlobalBuiltinName]?: false | MCPBuiltInToolOverride\n}\n\nexport type MCPTopLevelToolsMap = Record<string, Tool>\n\nexport type PromptHandlerArgs<TSchema = undefined> = {\n input: TypedInput<TSchema>\n req: PayloadRequest\n serverContext: ServerContext\n}\n\nexport type Prompt<TSchema extends ToolInputSchema = ToolInputSchema> = {\n argsSchema: TSchema\n description: string\n handler: (args: PromptHandlerArgs<TSchema>) => MaybePromise<{\n messages: Array<{ content: { text: string; type: 'text' }; role: 'assistant' | 'user' }>\n }>\n title: string\n}\n\nexport type ResourceHandlerArgs = {\n /** Variables extracted from a `ResourceTemplate` URI. Empty for static-URI resources. */\n params: Record<string, string>\n req: PayloadRequest\n serverContext: ServerContext\n uri: URL\n}\n\nexport type Resource = {\n description: string\n handler: (args: ResourceHandlerArgs) => MaybePromise<{\n contents: Array<{ text: string; uri: string }>\n }>\n mimeType: string\n title: string\n uri: ResourceTemplate | string\n}\n\nexport type MCPPluginCollectionConfig<TSlug extends CollectionSlug> = {\n description?: string\n /** Fallback for built-in tools that don't set their own `overrideResponse`. */\n overrideResponse?: MCPResponseOverride\n tools?: MCPToolsMapForCollection<TSlug>\n}\n\nexport type MCPPluginGlobalConfig = {\n description?: string\n overrideResponse?: MCPResponseOverride\n tools?: MCPGlobalToolsMap\n}\n\n/**\n * The user-facing config shape passed to `mcpPlugin({ ... })`. Tools, prompts,\n * resources, and per-collection/global tool maps live in their own nested\n * fields. `sanitizeMCPConfig` flattens those into `items` and applies defaults\n * to produce a `SanitizedMCPPluginConfig` — the form every internal consumer\n * actually works with.\n */\nexport type MCPPluginConfig = {\n collections?: {\n [Slug in CollectionSlug]?: MCPPluginCollectionConfig<Slug>\n }\n /** Skip MCP registration. The API key collection is still added (so DB / types stay stable). */\n disabled?: boolean\n globals?: {\n [Slug in GlobalSlug]?: MCPPluginGlobalConfig\n }\n mcp?: {\n serverOptions?: MCPServerOptions\n verboseLogs?: boolean\n }\n overrideApiKeyCollection?: (collection: CollectionConfig) => CollectionConfig\n /** Replace the default API-key auth with a custom resolver. */\n overrideAuth?: (args: {\n getAPIKeyDoc: (overrideApiKey?: string) => Promise<MCPAPIKeysDoc>\n getAuthorizedMCP: (args: { apiKeyDoc: MCPAPIKeysDoc }) => AuthorizedMCP\n pluginConfig: SanitizedMCPPluginConfig\n req: PayloadRequest\n }) => MaybePromise<AuthorizedMCP>\n prompts?: Record<string, Prompt>\n resources?: Record<string, Resource>\n /** Cross-cutting tools (not scoped to any collection or global). */\n tools?: MCPTopLevelToolsMap\n userCollection?: CollectionSlug\n}\n\nexport type SanitizedMCPPluginConfig = {\n items: MCPItem[]\n userCollection: CollectionSlug\n} & Pick<MCPPluginConfig, 'disabled' | 'mcp' | 'overrideApiKeyCollection' | 'overrideAuth'>\n\nexport type MCPServerOptions = {\n options?: ConstructorParameters<typeof McpServer>[1]\n serverInfo?: Partial<ConstructorParameters<typeof McpServer>[0]>\n}\n\n/**\n * Nested access tree as stored in the collection.\n * A `false` leaf disables that tool; missing keys defer to\n * defaults (built-in CRUD is on, opt-in tools are off).\n */\nexport type MCPAPIKeysDocAccessTree = {\n collections?: {\n [CollectionSlug: CollectionSlug]: {\n [ToolKey: string]: boolean\n }\n }\n globals?: {\n [GlobalSlug: GlobalSlug]: {\n [ToolKey: string]: boolean\n }\n }\n prompts?: {\n [PromptKey: string]: boolean\n }\n resources?: {\n [ResourceKey: string]: boolean\n }\n tools?: {\n [ToolKey: string]: boolean\n }\n}\n\n/**\n * Stored on `payload-mcp-api-keys` docs\n */\nexport type MCPAPIKeysDoc = {\n access: MCPAPIKeysDocAccessTree\n apiKey?: string\n apiKeyIndex?: string\n id: DefaultDocumentIDType\n lastUsed?: string\n overrideAccess?: boolean\n user: null | TypedUser\n}\n\n/**\n * One MCP primitive plus the metadata needed for access checks, admin UI, and\n * registration.\n *\n * - `configKey`: the config/API-key identifier, e.g. `find` or `echo`.\n * - `mcpName`: the MCP wire name, e.g. `findDocuments` or `echo`.\n * - `label`: human-readable admin checkbox text.\n */\nexport type MCPItemBase = {\n configKey: string\n label: string\n mcpName: string\n}\n\nexport type CollectionMCPItem = {\n collectionSlug: CollectionSlug\n tool: CollectionTool\n type: 'collectionTool'\n} & MCPItemBase\n\nexport type GlobalMCPItem = {\n globalSlug: GlobalSlug\n tool: GlobalTool\n type: 'globalTool'\n} & MCPItemBase\n\nexport type MCPItem =\n | ({\n prompt: Prompt\n type: 'prompt'\n } & MCPItemBase)\n | ({\n resource: Resource\n type: 'resource'\n } & MCPItemBase)\n | ({\n tool: Tool\n type: 'tool'\n } & MCPItemBase)\n | CollectionMCPItem\n | GlobalMCPItem\n\n/**\n * The caller's identity + the MCP items they can use for this request. Returned\n * by `getAuthorizedMCP`; denied items are simply absent from `items`. Handlers\n * receive this via `args.authorizedMCP` so they can spread\n * `localAPIDefaults(authorizedMCP)` into every local API call.\n */\nexport type AuthorizedMCP = {\n items: MCPItem[]\n overrideAccess: boolean\n user: null | TypedUser\n}\n"],"names":[],"mappings":"AAgVA;;;;;CAKC,GACD,WAIC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@payloadcms/plugin-mcp",
|
|
3
|
-
"version": "4.0.0-canary.
|
|
3
|
+
"version": "4.0.0-canary.2",
|
|
4
4
|
"description": "MCP (Model Context Protocol) capabilities with Payload",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"plugin",
|
|
@@ -56,19 +56,20 @@
|
|
|
56
56
|
"@cfworker/json-schema": "^4.1.1",
|
|
57
57
|
"@modelcontextprotocol/server": "2.0.0-alpha.2",
|
|
58
58
|
"tsx": "4.22.4",
|
|
59
|
-
"zod": "^4.0.0"
|
|
59
|
+
"zod": "^4.0.0",
|
|
60
|
+
"@payloadcms/translations": "4.0.0-canary.2"
|
|
60
61
|
},
|
|
61
62
|
"devDependencies": {
|
|
62
63
|
"@types/react": "19.2.14",
|
|
63
64
|
"react": "^19.0.1 || ^19.1.2 || ^19.2.1",
|
|
64
65
|
"@payloadcms/eslint-config": "3.28.0",
|
|
65
|
-
"
|
|
66
|
-
"
|
|
66
|
+
"payload": "4.0.0-canary.2",
|
|
67
|
+
"@payloadcms/ui": "4.0.0-canary.2"
|
|
67
68
|
},
|
|
68
69
|
"peerDependencies": {
|
|
69
70
|
"react": "^19.0.1 || ^19.1.2 || ^19.2.1",
|
|
70
|
-
"@payloadcms/ui": "4.0.0-canary.
|
|
71
|
-
"payload": "4.0.0-canary.
|
|
71
|
+
"@payloadcms/ui": "4.0.0-canary.2",
|
|
72
|
+
"payload": "4.0.0-canary.2"
|
|
72
73
|
},
|
|
73
74
|
"//deps_notes": {
|
|
74
75
|
"zod": "zod is a hard dependency of @modelcontextprotocol/server, thus we can safely use it without it impacting bundle size. Make extra sure the zod version here matches exactly what's defined in the dependencies of @modelcontextprotocol/server to avoid duplicate versions being installed.",
|
|
@@ -2,6 +2,12 @@ import type { JSONField } from 'payload'
|
|
|
2
2
|
|
|
3
3
|
import type { ClientMCPPluginConfig, MCPItem, SanitizedMCPPluginConfig } from '../types.js'
|
|
4
4
|
|
|
5
|
+
import {
|
|
6
|
+
COLLECTION_AUTH_BUILTINS,
|
|
7
|
+
COLLECTION_BUILTINS,
|
|
8
|
+
GLOBAL_BUILTINS,
|
|
9
|
+
} from '../mcp/builtinTools.js'
|
|
10
|
+
|
|
5
11
|
/**
|
|
6
12
|
* Returns the API key collection's `access` field — a JSON field whose value
|
|
7
13
|
* is the `MCPAPIKeysDocAccessTree` the endpoint consults. The actual UI is
|
|
@@ -25,13 +31,9 @@ export const getAccessField = ({
|
|
|
25
31
|
path: '@payloadcms/plugin-mcp/client#AccessField',
|
|
26
32
|
},
|
|
27
33
|
},
|
|
28
|
-
// TODO: needs i18n once design is finalized
|
|
29
|
-
description: 'Access for this API key — uncheck to revoke individual tools.',
|
|
30
|
-
position: 'sidebar',
|
|
31
34
|
},
|
|
32
35
|
defaultValue: {},
|
|
33
|
-
|
|
34
|
-
label: 'Access',
|
|
36
|
+
label: false,
|
|
35
37
|
}
|
|
36
38
|
}
|
|
37
39
|
|
|
@@ -43,14 +45,19 @@ export const getAccessField = ({
|
|
|
43
45
|
const sanitizeClientPluginConfig = (
|
|
44
46
|
pluginConfig: SanitizedMCPPluginConfig,
|
|
45
47
|
): ClientMCPPluginConfig => ({
|
|
46
|
-
items: pluginConfig.items.map((item) =>
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
48
|
+
items: pluginConfig.items.map((item) => {
|
|
49
|
+
const group = itemGroup(item)
|
|
50
|
+
|
|
51
|
+
return {
|
|
52
|
+
...(item.type === 'collectionTool' ? { collectionSlug: item.collectionSlug } : {}),
|
|
53
|
+
...(item.type === 'globalTool' ? { globalSlug: item.globalSlug } : {}),
|
|
54
|
+
type: item.type,
|
|
55
|
+
configKey: item.configKey,
|
|
56
|
+
...(group === 'operations' ? {} : { description: itemDescription(item) }),
|
|
57
|
+
group,
|
|
58
|
+
label: item.label,
|
|
59
|
+
}
|
|
60
|
+
}),
|
|
54
61
|
})
|
|
55
62
|
|
|
56
63
|
const itemDescription = (item: MCPItem): string => {
|
|
@@ -62,3 +69,16 @@ const itemDescription = (item: MCPItem): string => {
|
|
|
62
69
|
}
|
|
63
70
|
return item.tool.description
|
|
64
71
|
}
|
|
72
|
+
|
|
73
|
+
const itemGroup = (item: MCPItem): 'auth' | 'custom' | 'operations' | undefined => {
|
|
74
|
+
if (item.type === 'collectionTool') {
|
|
75
|
+
if (item.configKey in COLLECTION_BUILTINS) {
|
|
76
|
+
return 'operations'
|
|
77
|
+
}
|
|
78
|
+
return item.configKey in COLLECTION_AUTH_BUILTINS ? 'auth' : 'custom'
|
|
79
|
+
}
|
|
80
|
+
if (item.type === 'globalTool') {
|
|
81
|
+
return item.configKey in GLOBAL_BUILTINS ? 'operations' : 'custom'
|
|
82
|
+
}
|
|
83
|
+
return undefined
|
|
84
|
+
}
|
package/src/collection/index.ts
CHANGED
|
@@ -1,9 +1,25 @@
|
|
|
1
1
|
import type { CollectionConfig } from 'payload'
|
|
2
2
|
|
|
3
|
+
import { createAPIKeyFields } from 'payload'
|
|
4
|
+
|
|
3
5
|
import type { SanitizedMCPPluginConfig } from '../types.js'
|
|
4
6
|
|
|
5
7
|
import { getAccessField } from './getAccessField.js'
|
|
6
8
|
|
|
9
|
+
const apiKeyStorageFields = createAPIKeyFields({
|
|
10
|
+
apiKeyField: {
|
|
11
|
+
admin: {
|
|
12
|
+
components: { Field: '@payloadcms/plugin-mcp/client#APIKeyField' },
|
|
13
|
+
},
|
|
14
|
+
required: true,
|
|
15
|
+
},
|
|
16
|
+
apiKeyIndexField: {
|
|
17
|
+
index: true,
|
|
18
|
+
required: true,
|
|
19
|
+
},
|
|
20
|
+
includeEnableAPIKey: false,
|
|
21
|
+
})
|
|
22
|
+
|
|
7
23
|
export const getAPIKeysCollection = ({
|
|
8
24
|
pluginConfig,
|
|
9
25
|
}: {
|
|
@@ -12,48 +28,73 @@ export const getAPIKeysCollection = ({
|
|
|
12
28
|
const collection: CollectionConfig = {
|
|
13
29
|
slug: 'payload-mcp-api-keys',
|
|
14
30
|
admin: {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
31
|
+
components: {
|
|
32
|
+
views: {
|
|
33
|
+
list: {
|
|
34
|
+
NoResults: '@payloadcms/plugin-mcp/client#APIKeysEmptyState',
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
defaultColumns: ['label', 'lastUsed', 'user'],
|
|
39
|
+
// Kept out of the main nav — reachable through the user menu's settings instead.
|
|
40
|
+
group: false,
|
|
18
41
|
useAsTitle: 'label',
|
|
19
42
|
},
|
|
20
|
-
auth: {
|
|
21
|
-
disableLocalStrategy: true,
|
|
22
|
-
useAPIKey: true,
|
|
23
|
-
},
|
|
24
43
|
fields: [
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
type: 'relationship',
|
|
28
|
-
admin: { description: 'The user that the API key is associated with.' },
|
|
29
|
-
relationTo: pluginConfig.userCollection,
|
|
30
|
-
required: true,
|
|
31
|
-
},
|
|
44
|
+
...apiKeyStorageFields,
|
|
45
|
+
getAccessField({ pluginConfig }),
|
|
32
46
|
{
|
|
33
47
|
name: 'label',
|
|
34
48
|
type: 'text',
|
|
35
|
-
admin: {
|
|
49
|
+
admin: {
|
|
50
|
+
description: ({ t }) => t('plugin-mcp:titleDescription'),
|
|
51
|
+
position: 'sidebar',
|
|
52
|
+
},
|
|
53
|
+
label: ({ t }) => t('plugin-mcp:title'),
|
|
36
54
|
},
|
|
37
55
|
{
|
|
38
56
|
name: 'description',
|
|
39
57
|
type: 'text',
|
|
40
|
-
admin: {
|
|
58
|
+
admin: {
|
|
59
|
+
description: ({ t }) => t('plugin-mcp:descriptionDescription'),
|
|
60
|
+
position: 'sidebar',
|
|
61
|
+
},
|
|
62
|
+
label: ({ t }) => t('plugin-mcp:description'),
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
name: 'lastUsed',
|
|
66
|
+
type: 'date',
|
|
67
|
+
admin: {
|
|
68
|
+
date: { pickerAppearance: 'dayAndTime' },
|
|
69
|
+
disabled: { field: true },
|
|
70
|
+
},
|
|
71
|
+
label: ({ t }) => t('plugin-mcp:lastUsed'),
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
name: 'user',
|
|
75
|
+
type: 'relationship',
|
|
76
|
+
admin: {
|
|
77
|
+
description: ({ t }) => t('plugin-mcp:userDescription'),
|
|
78
|
+
position: 'sidebar',
|
|
79
|
+
},
|
|
80
|
+
label: ({ t }) => t('general:user'),
|
|
81
|
+
relationTo: pluginConfig.userCollection,
|
|
82
|
+
required: true,
|
|
41
83
|
},
|
|
42
84
|
{
|
|
43
85
|
name: 'overrideAccess',
|
|
44
86
|
type: 'checkbox',
|
|
45
87
|
admin: {
|
|
46
|
-
description:
|
|
47
|
-
|
|
88
|
+
description: ({ t }) => t('plugin-mcp:overrideAccessDescription'),
|
|
89
|
+
position: 'sidebar',
|
|
48
90
|
},
|
|
49
91
|
defaultValue: false,
|
|
50
|
-
label:
|
|
92
|
+
label: ({ t }) => t('plugin-mcp:overrideAccess'),
|
|
51
93
|
},
|
|
52
|
-
getAccessField({ pluginConfig }),
|
|
53
94
|
],
|
|
54
95
|
labels: {
|
|
55
|
-
plural: '
|
|
56
|
-
singular: '
|
|
96
|
+
plural: ({ t }) => `${t('plugin-mcp:mcp')} ${t('plugin-mcp:apiKeys')}`,
|
|
97
|
+
singular: ({ t }) => `${t('plugin-mcp:mcp')} ${t('authentication:apiKey')}`,
|
|
57
98
|
},
|
|
58
99
|
versions: false,
|
|
59
100
|
}
|