@frogbotai/plugin-mcp 0.29.0 → 0.31.0

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/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @frogbotai/plugin-mcp
2
2
 
3
- Expose selected FrogBot collections and globals to external MCP clients through Payload's MCP server.
3
+ Expose selected FrogBot collections and globals to external MCP clients.
4
4
 
5
5
  ```ts
6
6
  import { apiKeysPlugin } from '@frogbotai/plugin-api-keys';
@@ -25,4 +25,4 @@ export default buildConfig({
25
25
 
26
26
  Connect MCP clients to `/api/mcp` with a Bearer token minted by `@frogbotai/plugin-api-keys`. Revoked, malformed, and unknown keys are rejected. The plugin requires `apiKeysPlugin()` earlier in the plugin array.
27
27
 
28
- This package is a thin adapter around `@payloadcms/plugin-mcp`. Payload adds a dormant `payload-mcp-api-keys` collection for schema stability, but its keys cannot authenticate this endpoint. Experimental config, collection-definition, job, and auth-mutation tools are unavailable. SSE is not supported.
28
+ The plugin also adds a dormant `payload-mcp-api-keys` collection for schema stability, but its keys cannot authenticate this endpoint. Experimental config, collection-definition, job, and auth-mutation tools are unavailable. SSE is not supported.
@@ -1 +1 @@
1
- {"version":3,"file":"access.d.ts","sourceRoot":"","sources":["../src/access.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAsC,MAAM,SAAS,CAAC;AAEhF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAG9C,KAAK,uBAAuB,GAAG;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,YAAY,CAAC;IACvB,aAAa,EAAE,eAAe,CAAC;IAC/B,GAAG,EAAE,cAAc,CAAC;CACrB,CAAC;AAOF,wBAAgB,uBAAuB,CAAC,aAAa,EAAE,eAAe,GAAG,IAAI,CAiB5E;AA0BD,wBAAsB,gBAAgB,CAAC,EACrC,UAAU,EACV,QAAQ,EACR,aAAa,EACb,GAAG,GACJ,EAAE,uBAAuB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAsCtD"}
1
+ {"version":3,"file":"access.d.ts","sourceRoot":"","sources":["../src/access.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAsB,MAAM,SAAS,CAAC;AAEhE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAG9C,KAAK,uBAAuB,GAAG;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,YAAY,CAAC;IACvB,aAAa,EAAE,eAAe,CAAC;IAC/B,GAAG,EAAE,cAAc,CAAC;CACrB,CAAC;AAOF,wBAAgB,uBAAuB,CAAC,aAAa,EAAE,eAAe,GAAG,IAAI,CAiB5E;AA0BD,wBAAsB,gBAAgB,CAAC,EACrC,UAAU,EACV,QAAQ,EACR,aAAa,EACb,GAAG,GACJ,EAAE,uBAAuB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAsCtD"}
package/dist/access.js CHANGED
@@ -1,15 +1,23 @@
1
- import { executeAuthStrategy } from 'frogbot/internal';
1
+ import { attachRegisteredFrogBot, executeAuthStrategy } from 'frogbot/internal';
2
2
  import { UnauthorizedError } from 'payload';
3
- const toCamelCase = (value) => value
4
- .replace(/[-_\s]+(.)?/g, (_, character) => character?.toUpperCase() ?? '')
5
- .replace(/^(.)/, (_, character) => character.toLowerCase());
3
+ const toCamelCase = (value)=>value.replace(/[-_\s]+(.)?/g, (_, character)=>character?.toUpperCase() ?? '').replace(/^(.)/, (_, character)=>character.toLowerCase());
6
4
  export function validateMcpCapabilities(pluginOptions) {
7
- const reserved = new Set(['auth', 'config', 'jobs']);
5
+ const reserved = new Set([
6
+ 'auth',
7
+ 'config',
8
+ 'jobs'
9
+ ]);
8
10
  for (const [type, entities] of [
9
- ['Collection', pluginOptions.collections],
10
- ['Global', pluginOptions.globals],
11
- ]) {
12
- for (const slug of Object.keys(entities ?? {})) {
11
+ [
12
+ 'Collection',
13
+ pluginOptions.collections
14
+ ],
15
+ [
16
+ 'Global',
17
+ pluginOptions.globals
18
+ ]
19
+ ]){
20
+ for (const slug of Object.keys(entities ?? {})){
13
21
  const capability = toCamelCase(slug);
14
22
  if (reserved.has(capability)) {
15
23
  throw new Error(`[plugin-mcp] ${type} slug '${slug}' maps to reserved MCP capability '${capability}'.`);
@@ -18,24 +26,33 @@ export function validateMcpCapabilities(pluginOptions) {
18
26
  }
19
27
  }
20
28
  function collectionGrants(options) {
21
- return Object.fromEntries(Object.entries(options ?? {}).map(([slug, config]) => [
22
- toCamelCase(slug),
23
- config?.enabled === true
24
- ? { create: true, delete: true, find: true, update: true }
25
- : config?.enabled,
26
- ]));
29
+ return Object.fromEntries(Object.entries(options ?? {}).map(([slug, config])=>[
30
+ toCamelCase(slug),
31
+ config?.enabled === true ? {
32
+ create: true,
33
+ delete: true,
34
+ find: true,
35
+ update: true
36
+ } : config?.enabled
37
+ ]));
27
38
  }
28
39
  function globalGrants(options) {
29
- return Object.fromEntries(Object.entries(options ?? {}).map(([slug, config]) => [
30
- toCamelCase(slug),
31
- config?.enabled === true ? { find: true, update: true } : config?.enabled,
32
- ]));
40
+ return Object.fromEntries(Object.entries(options ?? {}).map(([slug, config])=>[
41
+ toCamelCase(slug),
42
+ config?.enabled === true ? {
43
+ find: true,
44
+ update: true
45
+ } : config?.enabled
46
+ ]));
33
47
  }
34
48
  function namedGrants(items) {
35
- return Object.fromEntries((items ?? []).map(({ name }) => [toCamelCase(name), true]));
49
+ return Object.fromEntries((items ?? []).map(({ name })=>[
50
+ toCamelCase(name),
51
+ true
52
+ ]));
36
53
  }
37
- export async function resolveMcpAccess({ collection, strategy, pluginOptions, req, }) {
38
- const frogbotReq = req;
54
+ export async function resolveMcpAccess({ collection, strategy, pluginOptions, req }) {
55
+ const frogbotReq = attachRegisteredFrogBot(req);
39
56
  const frogbot = frogbotReq.frogbot;
40
57
  let result;
41
58
  try {
@@ -45,16 +62,17 @@ export async function resolveMcpAccess({ collection, strategy, pluginOptions, re
45
62
  frogbot,
46
63
  headers: req.headers,
47
64
  req: frogbotReq,
48
- strategyName: strategy.name,
65
+ strategyName: strategy.name
49
66
  });
50
- }
51
- catch {
67
+ } catch {
52
68
  throw new UnauthorizedError();
53
69
  }
54
- if (!result.user)
55
- throw new UnauthorizedError();
70
+ if (!result.user) throw new UnauthorizedError();
56
71
  return {
57
- user: { ...result.user, collection: result.user.collection ?? collection },
72
+ user: {
73
+ ...result.user,
74
+ collection: result.user.collection ?? collection
75
+ },
58
76
  ...collectionGrants(pluginOptions.collections),
59
77
  ...globalGrants(pluginOptions.globals),
60
78
  'payload-mcp-tool': namedGrants(pluginOptions.mcp?.tools),
@@ -66,10 +84,18 @@ export async function resolveMcpAccess({ collection, strategy, pluginOptions, re
66
84
  login: false,
67
85
  resetPassword: false,
68
86
  unlock: false,
69
- verify: false,
87
+ verify: false
70
88
  },
71
- config: { find: false, update: false },
72
- jobs: { create: false, run: false, update: false },
89
+ config: {
90
+ find: false,
91
+ update: false
92
+ },
93
+ jobs: {
94
+ create: false,
95
+ run: false,
96
+ update: false
97
+ }
73
98
  };
74
99
  }
100
+
75
101
  //# sourceMappingURL=access.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"access.js","sourceRoot":"","sources":["../src/access.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"sources":["../src/access.ts"],"names":["attachRegisteredFrogBot","executeAuthStrategy","UnauthorizedError","toCamelCase","value","replace","_","character","toUpperCase","toLowerCase","validateMcpCapabilities","pluginOptions","reserved","Set","type","entities","collections","globals","slug","Object","keys","capability","has","Error","collectionGrants","options","fromEntries","entries","map","config","enabled","create","delete","find","update","globalGrants","namedGrants","items","name","resolveMcpAccess","collection","strategy","req","frogbotReq","frogbot","result","headers","strategyName","user","mcp","tools","prompts","resources","auth","forgotPassword","login","resetPassword","unlock","verify","jobs","run"],"mappings":"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","file":"access.js"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAItC,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,eAAe,EAAE,cAAc,GAAG,cAAc,CAAC,CAAC;AAEtF,wBAAgB,SAAS,CAAC,aAAa,GAAE,gBAAqB,GAAG,MAAM,CAoCtE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAKtC,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,eAAe,EAAE,cAAc,GAAG,cAAc,CAAC,CAAC;AAEtF,wBAAgB,SAAS,CAAC,aAAa,GAAE,gBAAqB,GAAG,MAAM,CAsCtE"}
package/dist/index.js CHANGED
@@ -1,31 +1,31 @@
1
1
  import { isApiKeyStrategy } from '@frogbotai/plugin-api-keys';
2
2
  import { mcpPlugin as payloadMcpPlugin } from '@payloadcms/plugin-mcp';
3
+ import { wrapPayloadPlugin } from 'frogbot/internal';
3
4
  import { resolveMcpAccess, validateMcpCapabilities } from './access.js';
4
5
  export function mcpPlugin(pluginOptions = {}) {
5
6
  validateMcpCapabilities(pluginOptions);
6
- return async (config) => {
7
- const apiKeyStrategy = config.collections
8
- .flatMap((collection) => {
7
+ return async (config)=>{
8
+ const apiKeyStrategy = config.collections.flatMap((collection)=>{
9
9
  const auth = typeof collection.auth === 'object' ? collection.auth : undefined;
10
- return (auth?.strategies ?? []).map((strategy) => ({
11
- collection: collection.slug,
12
- strategy,
13
- }));
14
- })
15
- .find(({ strategy }) => isApiKeyStrategy(strategy));
10
+ return (auth?.strategies ?? []).map((strategy)=>({
11
+ collection: collection.slug,
12
+ strategy
13
+ }));
14
+ }).find(({ strategy })=>isApiKeyStrategy(strategy));
16
15
  if (!apiKeyStrategy) {
17
16
  throw new Error('[plugin-mcp] apiKeysPlugin must be configured before mcpPlugin.');
18
17
  }
19
18
  const { experimental: _experimental, overrideAuth: _overrideAuth, ...options } = pluginOptions;
20
- return (await payloadMcpPlugin({
19
+ return wrapPayloadPlugin(payloadMcpPlugin({
21
20
  ...options,
22
- overrideAuth: (req) => resolveMcpAccess({
23
- collection: apiKeyStrategy.collection,
24
- strategy: apiKeyStrategy.strategy,
25
- pluginOptions: options,
26
- req,
27
- }),
28
- })(config));
21
+ overrideAuth: (req)=>resolveMcpAccess({
22
+ collection: apiKeyStrategy.collection,
23
+ strategy: apiKeyStrategy.strategy,
24
+ pluginOptions: options,
25
+ req
26
+ })
27
+ }))(config);
29
28
  };
30
29
  }
30
+
31
31
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAE9D,OAAO,EAAE,SAAS,IAAI,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAGvE,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAIxE,MAAM,UAAU,SAAS,CAAC,gBAAkC,EAAE;IAC5D,uBAAuB,CAAC,aAAa,CAAC,CAAC;IAEvC,OAAO,KAAK,EAAE,MAAM,EAAE,EAAE;QACtB,MAAM,cAAc,GAAG,MAAM,CAAC,WAAW;aACtC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;YACtB,MAAM,IAAI,GAAG,OAAO,UAAU,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;YAE/E,OAAO,CAAC,IAAI,EAAE,UAAU,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;gBACjD,UAAU,EAAE,UAAU,CAAC,IAAI;gBAC3B,QAAQ;aACT,CAAC,CAAC,CAAC;QACN,CAAC,CAAC;aACD,IAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC;QAEtD,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;QACrF,CAAC;QAED,MAAM,EACJ,YAAY,EAAE,aAAa,EAC3B,YAAY,EAAE,aAAa,EAC3B,GAAG,OAAO,EACX,GAAG,aAAgC,CAAC;QAErC,OAAO,CAAC,MAAM,gBAAgB,CAAC;YAC7B,GAAG,OAAO;YACV,YAAY,EAAE,CAAC,GAAG,EAAE,EAAE,CACpB,gBAAgB,CAAC;gBACf,UAAU,EAAE,cAAc,CAAC,UAAU;gBACrC,QAAQ,EAAE,cAAc,CAAC,QAAQ;gBACjC,aAAa,EAAE,OAAO;gBACtB,GAAG;aACJ,CAAC;SACL,CAAC,CAAC,MAAe,CAAC,CAA6B,CAAC;IACnD,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"sources":["../src/index.ts"],"names":["isApiKeyStrategy","mcpPlugin","payloadMcpPlugin","wrapPayloadPlugin","resolveMcpAccess","validateMcpCapabilities","pluginOptions","config","apiKeyStrategy","collections","flatMap","collection","auth","undefined","strategies","map","strategy","slug","find","Error","experimental","_experimental","overrideAuth","_overrideAuth","options","req"],"mappings":"AAAA,SAASA,gBAAgB,QAAQ,6BAA6B;AAE9D,SAASC,aAAaC,gBAAgB,QAAQ,yBAAyB;AAEvE,SAASC,iBAAiB,QAAQ,mBAAmB;AAErD,SAASC,gBAAgB,EAAEC,uBAAuB,QAAQ,cAAc;AAIxE,OAAO,SAASJ,UAAUK,gBAAkC,CAAC,CAAC;IAC5DD,wBAAwBC;IAExB,OAAO,OAAOC;QACZ,MAAMC,iBAAiBD,OAAOE,WAAW,CACtCC,OAAO,CAAC,CAACC;YACR,MAAMC,OAAO,OAAOD,WAAWC,IAAI,KAAK,WAAWD,WAAWC,IAAI,GAAGC;YAErE,OAAO,AAACD,CAAAA,MAAME,cAAc,EAAE,AAAD,EAAGC,GAAG,CAAC,CAACC,WAAc,CAAA;oBACjDL,YAAYA,WAAWM,IAAI;oBAC3BD;gBACF,CAAA;QACF,GACCE,IAAI,CAAC,CAAC,EAAEF,QAAQ,EAAE,GAAKhB,iBAAiBgB;QAE3C,IAAI,CAACR,gBAAgB;YACnB,MAAM,IAAIW,MAAM;QAClB;QAEA,MAAM,EACJC,cAAcC,aAAa,EAC3BC,cAAcC,aAAa,EAC3B,GAAGC,SACJ,GAAGlB;QAEJ,OAAOH,kBACLD,iBAAiB;YACf,GAAGsB,OAAO;YACVF,cAAc,CAACG,MACbrB,iBAAiB;oBACfO,YAAYH,eAAeG,UAAU;oBACrCK,UAAUR,eAAeQ,QAAQ;oBACjCV,eAAekB;oBACfC;gBACF;QACJ,IACAlB;IACJ;AACF","file":"index.js"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@frogbotai/plugin-mcp",
3
- "version": "0.29.0",
3
+ "version": "0.31.0",
4
4
  "description": "Payload MCP integration for FrogBot.",
5
5
  "license": "MIT",
6
6
  "author": "Colby Gilbert",
@@ -31,21 +31,21 @@
31
31
  },
32
32
  "peerDependencies": {
33
33
  "payload": "3.90.1",
34
- "@frogbotai/plugin-api-keys": "0.29.0",
35
- "frogbot": "0.29.0"
34
+ "@frogbotai/plugin-api-keys": "0.31.0",
35
+ "frogbot": "0.31.0"
36
36
  },
37
37
  "devDependencies": {
38
38
  "payload": "3.90.1",
39
39
  "typescript": "5.6.2",
40
- "@frogbotai/plugin-roles": "0.29.0",
41
- "@frogbotai/plugin-api-keys": "0.29.0",
42
- "frogbot": "0.29.0"
40
+ "@frogbotai/plugin-api-keys": "0.31.0",
41
+ "@frogbotai/plugin-roles": "0.31.0",
42
+ "frogbot": "0.31.0"
43
43
  },
44
44
  "publishConfig": {
45
45
  "access": "public"
46
46
  },
47
47
  "scripts": {
48
- "build": "rm -rf dist && tsc -p tsconfig.json",
48
+ "build": "node ../../../scripts/build-package.mjs",
49
49
  "clean": "rm -rf dist",
50
50
  "typecheck": "tsc --noEmit"
51
51
  }