@strapi/core 5.46.1 → 5.47.1
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/Strapi.d.ts.map +1 -1
- package/dist/Strapi.js +12 -3
- package/dist/Strapi.js.map +1 -1
- package/dist/Strapi.mjs +12 -3
- package/dist/Strapi.mjs.map +1 -1
- package/dist/compile.d.ts.map +1 -1
- package/dist/compile.js +12 -5
- package/dist/compile.js.map +1 -1
- package/dist/compile.mjs +12 -5
- package/dist/compile.mjs.map +1 -1
- package/dist/core-api/routes/index.js +2 -0
- package/dist/core-api/routes/index.js.map +1 -1
- package/dist/core-api/routes/index.mjs +2 -0
- package/dist/core-api/routes/index.mjs.map +1 -1
- package/dist/core-api/routes/validation/content-type.d.ts +13 -1
- package/dist/core-api/routes/validation/content-type.d.ts.map +1 -1
- package/dist/core-api/routes/validation/content-type.js +15 -2
- package/dist/core-api/routes/validation/content-type.js.map +1 -1
- package/dist/core-api/routes/validation/content-type.mjs +15 -2
- package/dist/core-api/routes/validation/content-type.mjs.map +1 -1
- package/dist/middlewares/session.d.ts +2 -2
- package/dist/middlewares/session.d.ts.map +1 -1
- package/dist/middlewares/session.js +1 -1
- package/dist/middlewares/session.js.map +1 -1
- package/dist/middlewares/session.mjs +2 -2
- package/dist/middlewares/session.mjs.map +1 -1
- package/dist/migrations/database/5.0.0-discard-drafts.d.ts +2 -1
- package/dist/migrations/database/5.0.0-discard-drafts.d.ts.map +1 -1
- package/dist/migrations/database/5.0.0-discard-drafts.js +41 -30
- package/dist/migrations/database/5.0.0-discard-drafts.js.map +1 -1
- package/dist/migrations/database/5.0.0-discard-drafts.mjs +41 -30
- package/dist/migrations/database/5.0.0-discard-drafts.mjs.map +1 -1
- package/dist/package.json.js +16 -15
- package/dist/package.json.js.map +1 -1
- package/dist/package.json.mjs +16 -15
- package/dist/package.json.mjs.map +1 -1
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js +3 -1
- package/dist/providers/index.js.map +1 -1
- package/dist/providers/index.mjs +3 -1
- package/dist/providers/index.mjs.map +1 -1
- package/dist/providers/mcp.d.ts +3 -0
- package/dist/providers/mcp.d.ts.map +1 -0
- package/dist/providers/mcp.js +39 -0
- package/dist/providers/mcp.js.map +1 -0
- package/dist/providers/mcp.mjs +37 -0
- package/dist/providers/mcp.mjs.map +1 -0
- package/dist/providers/session-manager.d.ts.map +1 -1
- package/dist/providers/session-manager.js +3 -0
- package/dist/providers/session-manager.js.map +1 -1
- package/dist/providers/session-manager.mjs +3 -0
- package/dist/providers/session-manager.mjs.map +1 -1
- package/dist/services/ai.d.ts.map +1 -1
- package/dist/services/ai.js +3 -0
- package/dist/services/ai.js.map +1 -1
- package/dist/services/ai.mjs +3 -0
- package/dist/services/ai.mjs.map +1 -1
- package/dist/services/cron.d.ts +1 -1
- package/dist/services/cron.d.ts.map +1 -1
- package/dist/services/cron.js +10 -2
- package/dist/services/cron.js.map +1 -1
- package/dist/services/cron.mjs +10 -2
- package/dist/services/cron.mjs.map +1 -1
- package/dist/services/document-service/draft-and-publish.d.ts +2 -16
- package/dist/services/document-service/draft-and-publish.d.ts.map +1 -1
- package/dist/services/document-service/draft-and-publish.js +0 -53
- package/dist/services/document-service/draft-and-publish.js.map +1 -1
- package/dist/services/document-service/draft-and-publish.mjs +2 -53
- package/dist/services/document-service/draft-and-publish.mjs.map +1 -1
- package/dist/services/document-service/params.d.ts +2 -2
- package/dist/services/document-service/params.d.ts.map +1 -1
- package/dist/services/document-service/publication-filter.d.ts +6 -0
- package/dist/services/document-service/publication-filter.d.ts.map +1 -0
- package/dist/services/document-service/publication-filter.js +20 -0
- package/dist/services/document-service/publication-filter.js.map +1 -0
- package/dist/services/document-service/publication-filter.mjs +15 -0
- package/dist/services/document-service/publication-filter.mjs.map +1 -0
- package/dist/services/document-service/transform/query.d.ts +1 -1
- package/dist/services/document-service/transform/query.d.ts.map +1 -1
- package/dist/services/document-service/transform/query.js +32 -19
- package/dist/services/document-service/transform/query.js.map +1 -1
- package/dist/services/document-service/transform/query.mjs +33 -20
- package/dist/services/document-service/transform/query.mjs.map +1 -1
- package/dist/services/entity-validator/blocks-validator.js +1 -1
- package/dist/services/entity-validator/blocks-validator.js.map +1 -1
- package/dist/services/entity-validator/blocks-validator.mjs +1 -1
- package/dist/services/entity-validator/blocks-validator.mjs.map +1 -1
- package/dist/services/mcp/authentication.d.ts +23 -0
- package/dist/services/mcp/authentication.d.ts.map +1 -0
- package/dist/services/mcp/authentication.js +45 -0
- package/dist/services/mcp/authentication.js.map +1 -0
- package/dist/services/mcp/authentication.mjs +43 -0
- package/dist/services/mcp/authentication.mjs.map +1 -0
- package/dist/services/mcp/handlers/handlePost.d.ts +4 -0
- package/dist/services/mcp/handlers/handlePost.d.ts.map +1 -0
- package/dist/services/mcp/handlers/handlePost.js +59 -0
- package/dist/services/mcp/handlers/handlePost.js.map +1 -0
- package/dist/services/mcp/handlers/handlePost.mjs +57 -0
- package/dist/services/mcp/handlers/handlePost.mjs.map +1 -0
- package/dist/services/mcp/handlers/types.d.ts +12 -0
- package/dist/services/mcp/handlers/types.d.ts.map +1 -0
- package/dist/services/mcp/index.d.ts +6 -0
- package/dist/services/mcp/index.d.ts.map +1 -0
- package/dist/services/mcp/index.js +101 -0
- package/dist/services/mcp/index.js.map +1 -0
- package/dist/services/mcp/index.mjs +99 -0
- package/dist/services/mcp/index.mjs.map +1 -0
- package/dist/services/mcp/internal/McpCapabilityDefinitionRegistry.d.ts +13 -0
- package/dist/services/mcp/internal/McpCapabilityDefinitionRegistry.d.ts.map +1 -0
- package/dist/services/mcp/internal/McpCapabilityDefinitionRegistry.js +53 -0
- package/dist/services/mcp/internal/McpCapabilityDefinitionRegistry.js.map +1 -0
- package/dist/services/mcp/internal/McpCapabilityDefinitionRegistry.mjs +51 -0
- package/dist/services/mcp/internal/McpCapabilityDefinitionRegistry.mjs.map +1 -0
- package/dist/services/mcp/internal/McpCapabilityRegistry.d.ts +43 -0
- package/dist/services/mcp/internal/McpCapabilityRegistry.d.ts.map +1 -0
- package/dist/services/mcp/internal/McpCapabilityRegistry.js +108 -0
- package/dist/services/mcp/internal/McpCapabilityRegistry.js.map +1 -0
- package/dist/services/mcp/internal/McpCapabilityRegistry.mjs +106 -0
- package/dist/services/mcp/internal/McpCapabilityRegistry.mjs.map +1 -0
- package/dist/services/mcp/internal/McpConfiguration.d.ts +11 -0
- package/dist/services/mcp/internal/McpConfiguration.d.ts.map +1 -0
- package/dist/services/mcp/internal/McpConfiguration.js +34 -0
- package/dist/services/mcp/internal/McpConfiguration.js.map +1 -0
- package/dist/services/mcp/internal/McpConfiguration.mjs +32 -0
- package/dist/services/mcp/internal/McpConfiguration.mjs.map +1 -0
- package/dist/services/mcp/internal/McpServerFactory.d.ts +37 -0
- package/dist/services/mcp/internal/McpServerFactory.d.ts.map +1 -0
- package/dist/services/mcp/internal/McpServerFactory.js +71 -0
- package/dist/services/mcp/internal/McpServerFactory.js.map +1 -0
- package/dist/services/mcp/internal/McpServerFactory.mjs +69 -0
- package/dist/services/mcp/internal/McpServerFactory.mjs.map +1 -0
- package/dist/services/mcp/internal/syncMcpSessionCapabilities.d.ts +21 -0
- package/dist/services/mcp/internal/syncMcpSessionCapabilities.d.ts.map +1 -0
- package/dist/services/mcp/internal/syncMcpSessionCapabilities.js +76 -0
- package/dist/services/mcp/internal/syncMcpSessionCapabilities.js.map +1 -0
- package/dist/services/mcp/internal/syncMcpSessionCapabilities.mjs +73 -0
- package/dist/services/mcp/internal/syncMcpSessionCapabilities.mjs.map +1 -0
- package/dist/services/mcp/metrics/metrics.d.ts +29 -0
- package/dist/services/mcp/metrics/metrics.d.ts.map +1 -0
- package/dist/services/mcp/metrics/metrics.js +97 -0
- package/dist/services/mcp/metrics/metrics.js.map +1 -0
- package/dist/services/mcp/metrics/metrics.mjs +88 -0
- package/dist/services/mcp/metrics/metrics.mjs.map +1 -0
- package/dist/services/mcp/metrics/normalizeMcpCapability.d.ts +11 -0
- package/dist/services/mcp/metrics/normalizeMcpCapability.d.ts.map +1 -0
- package/dist/services/mcp/metrics/normalizeMcpCapability.js +10 -0
- package/dist/services/mcp/metrics/normalizeMcpCapability.js.map +1 -0
- package/dist/services/mcp/metrics/normalizeMcpCapability.mjs +8 -0
- package/dist/services/mcp/metrics/normalizeMcpCapability.mjs.map +1 -0
- package/dist/services/mcp/metrics/wrapCapabilityHandlerForMetrics.d.ts +4 -0
- package/dist/services/mcp/metrics/wrapCapabilityHandlerForMetrics.d.ts.map +1 -0
- package/dist/services/mcp/metrics/wrapCapabilityHandlerForMetrics.js +27 -0
- package/dist/services/mcp/metrics/wrapCapabilityHandlerForMetrics.js.map +1 -0
- package/dist/services/mcp/metrics/wrapCapabilityHandlerForMetrics.mjs +25 -0
- package/dist/services/mcp/metrics/wrapCapabilityHandlerForMetrics.mjs.map +1 -0
- package/dist/services/mcp/middleware/oauthDiscoveryFallback.d.ts +3 -0
- package/dist/services/mcp/middleware/oauthDiscoveryFallback.d.ts.map +1 -0
- package/dist/services/mcp/middleware/oauthDiscoveryFallback.js +47 -0
- package/dist/services/mcp/middleware/oauthDiscoveryFallback.js.map +1 -0
- package/dist/services/mcp/middleware/oauthDiscoveryFallback.mjs +45 -0
- package/dist/services/mcp/middleware/oauthDiscoveryFallback.mjs.map +1 -0
- package/dist/services/mcp/prompt-registry.d.ts +16 -0
- package/dist/services/mcp/prompt-registry.d.ts.map +1 -0
- package/dist/services/mcp/prompt-registry.js +77 -0
- package/dist/services/mcp/prompt-registry.js.map +1 -0
- package/dist/services/mcp/prompt-registry.mjs +75 -0
- package/dist/services/mcp/prompt-registry.mjs.map +1 -0
- package/dist/services/mcp/resource-registry.d.ts +14 -0
- package/dist/services/mcp/resource-registry.d.ts.map +1 -0
- package/dist/services/mcp/resource-registry.js +67 -0
- package/dist/services/mcp/resource-registry.js.map +1 -0
- package/dist/services/mcp/resource-registry.mjs +65 -0
- package/dist/services/mcp/resource-registry.mjs.map +1 -0
- package/dist/services/mcp/routes.d.ts +11 -0
- package/dist/services/mcp/routes.d.ts.map +1 -0
- package/dist/services/mcp/routes.js +58 -0
- package/dist/services/mcp/routes.js.map +1 -0
- package/dist/services/mcp/routes.mjs +56 -0
- package/dist/services/mcp/routes.mjs.map +1 -0
- package/dist/services/mcp/tool-registry.d.ts +25 -0
- package/dist/services/mcp/tool-registry.d.ts.map +1 -0
- package/dist/services/mcp/tool-registry.js +102 -0
- package/dist/services/mcp/tool-registry.js.map +1 -0
- package/dist/services/mcp/tool-registry.mjs +99 -0
- package/dist/services/mcp/tool-registry.mjs.map +1 -0
- package/dist/services/mcp/tools/log.d.ts +87 -0
- package/dist/services/mcp/tools/log.d.ts.map +1 -0
- package/dist/services/mcp/tools/log.js +88 -0
- package/dist/services/mcp/tools/log.js.map +1 -0
- package/dist/services/mcp/tools/log.mjs +86 -0
- package/dist/services/mcp/tools/log.mjs.map +1 -0
- package/dist/services/mcp/utils/createSafeCapabilityRegistration.d.ts +36 -0
- package/dist/services/mcp/utils/createSafeCapabilityRegistration.d.ts.map +1 -0
- package/dist/services/mcp/utils/createSafeCapabilityRegistration.js +59 -0
- package/dist/services/mcp/utils/createSafeCapabilityRegistration.js.map +1 -0
- package/dist/services/mcp/utils/createSafeCapabilityRegistration.mjs +56 -0
- package/dist/services/mcp/utils/createSafeCapabilityRegistration.mjs.map +1 -0
- package/dist/services/mcp/utils/jsonRpcErrors.d.ts +22 -0
- package/dist/services/mcp/utils/jsonRpcErrors.d.ts.map +1 -0
- package/dist/services/mcp/utils/jsonRpcErrors.js +25 -0
- package/dist/services/mcp/utils/jsonRpcErrors.js.map +1 -0
- package/dist/services/mcp/utils/jsonRpcErrors.mjs +23 -0
- package/dist/services/mcp/utils/jsonRpcErrors.mjs.map +1 -0
- package/dist/services/mcp/utils/safeHandlerWrapper.d.ts +18 -0
- package/dist/services/mcp/utils/safeHandlerWrapper.d.ts.map +1 -0
- package/dist/services/mcp/utils/safeHandlerWrapper.js +29 -0
- package/dist/services/mcp/utils/safeHandlerWrapper.js.map +1 -0
- package/dist/services/mcp/utils/safeHandlerWrapper.mjs +27 -0
- package/dist/services/mcp/utils/safeHandlerWrapper.mjs.map +1 -0
- package/dist/services/mcp/utils/sendJsonRpcError.d.ts +5 -0
- package/dist/services/mcp/utils/sendJsonRpcError.d.ts.map +1 -0
- package/dist/services/mcp/utils/sendJsonRpcError.js +23 -0
- package/dist/services/mcp/utils/sendJsonRpcError.js.map +1 -0
- package/dist/services/mcp/utils/sendJsonRpcError.mjs +21 -0
- package/dist/services/mcp/utils/sendJsonRpcError.mjs.map +1 -0
- package/dist/services/mcp/utils/withTimeout.d.ts +7 -0
- package/dist/services/mcp/utils/withTimeout.d.ts.map +1 -0
- package/dist/services/mcp/utils/withTimeout.js +23 -0
- package/dist/services/mcp/utils/withTimeout.js.map +1 -0
- package/dist/services/mcp/utils/withTimeout.mjs +21 -0
- package/dist/services/mcp/utils/withTimeout.mjs.map +1 -0
- package/dist/services/metrics/index.d.ts.map +1 -1
- package/dist/services/metrics/index.js +9 -6
- package/dist/services/metrics/index.js.map +1 -1
- package/dist/services/metrics/index.mjs +9 -6
- package/dist/services/metrics/index.mjs.map +1 -1
- package/dist/services/metrics/sender.d.ts.map +1 -1
- package/dist/services/metrics/sender.js +11 -3
- package/dist/services/metrics/sender.js.map +1 -1
- package/dist/services/metrics/sender.mjs +11 -3
- package/dist/services/metrics/sender.mjs.map +1 -1
- package/package.json +16 -15
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
function _class_private_field_loose_base(receiver, privateKey) {
|
|
2
|
+
if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) {
|
|
3
|
+
throw new TypeError("attempted to use private field on non-instance");
|
|
4
|
+
}
|
|
5
|
+
return receiver;
|
|
6
|
+
}
|
|
7
|
+
var id = 0;
|
|
8
|
+
function _class_private_field_loose_key(name) {
|
|
9
|
+
return "__private_" + id++ + "_" + name;
|
|
10
|
+
}
|
|
11
|
+
var _strapi = /*#__PURE__*/ _class_private_field_loose_key("_strapi");
|
|
12
|
+
class McpConfiguration {
|
|
13
|
+
isEnabled() {
|
|
14
|
+
return _class_private_field_loose_base(this, _strapi)[_strapi].config.get('server.mcp.enabled', false) === true;
|
|
15
|
+
}
|
|
16
|
+
isDevMode() {
|
|
17
|
+
return _class_private_field_loose_base(this, _strapi)[_strapi].config.get('autoReload', false);
|
|
18
|
+
}
|
|
19
|
+
constructor(strapi){
|
|
20
|
+
Object.defineProperty(this, _strapi, {
|
|
21
|
+
writable: true,
|
|
22
|
+
value: void 0
|
|
23
|
+
});
|
|
24
|
+
_class_private_field_loose_base(this, _strapi)[_strapi] = strapi;
|
|
25
|
+
this.path = '/mcp';
|
|
26
|
+
this.connectTimeoutMs = strapi.config.get('server.mcp.connectTimeoutMs', 5 * 1000); // 5 seconds
|
|
27
|
+
this.requestTimeoutMs = strapi.config.get('server.mcp.requestTimeoutMs', 60 * 1000); // 60 seconds
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export { McpConfiguration };
|
|
32
|
+
//# sourceMappingURL=McpConfiguration.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"McpConfiguration.mjs","sources":["../../../../src/services/mcp/internal/McpConfiguration.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\n\nexport class McpConfiguration {\n readonly path: string;\n\n readonly connectTimeoutMs: number;\n\n readonly requestTimeoutMs: number;\n\n #strapi: Core.Strapi;\n\n constructor(strapi: Core.Strapi) {\n this.#strapi = strapi;\n this.path = '/mcp';\n this.connectTimeoutMs = strapi.config.get('server.mcp.connectTimeoutMs', 5 * 1000); // 5 seconds\n this.requestTimeoutMs = strapi.config.get('server.mcp.requestTimeoutMs', 60 * 1000); // 60 seconds\n }\n\n isEnabled(): boolean {\n return this.#strapi.config.get<boolean>('server.mcp.enabled', false) === true;\n }\n\n isDevMode(): boolean {\n return this.#strapi.config.get('autoReload', false);\n }\n}\n"],"names":["McpConfiguration","isEnabled","config","get","isDevMode","strapi","path","connectTimeoutMs","requestTimeoutMs"],"mappings":";;;;;;;;;;AASE,IAAA,OAAA,iBAAA,8BAAA,CAAA,SAAA,CAAA;AAPK,MAAMA,gBAAAA,CAAAA;IAgBXC,SAAAA,GAAqB;QACnB,OAAO,+BAAA,CAAA,IAAI,EAAC,OAAA,CAAA,CAAA,OAAA,CAAA,CAAQC,MAAM,CAACC,GAAG,CAAU,oBAAA,EAAsB,KAAA,CAAA,KAAW,IAAA;AAC3E,IAAA;IAEAC,SAAAA,GAAqB;QACnB,OAAO,+BAAA,CAAA,IAAI,EAAC,OAAA,CAAA,CAAA,SAAQF,MAAM,CAACC,GAAG,CAAC,YAAA,EAAc,KAAA,CAAA;AAC/C,IAAA;AAbA,IAAA,WAAA,CAAYE,MAAmB,CAAE;QAFjC,MAAA,CAAA,cAAA,CAAA,IAAA,EAAA,OAAA,EAAA;;mBAAA;;QAGE,+BAAA,CAAA,IAAI,EAAC,OAAA,CAAA,CAAA,OAAA,CAAA,GAAUA,MAAAA;QACf,IAAI,CAACC,IAAI,GAAG,MAAA;QACZ,IAAI,CAACC,gBAAgB,GAAGF,MAAAA,CAAOH,MAAM,CAACC,GAAG,CAAC,6BAAA,EAA+B,CAAA,GAAI,IAAA,CAAA,CAAA;QAC7E,IAAI,CAACK,gBAAgB,GAAGH,MAAAA,CAAOH,MAAM,CAACC,GAAG,CAAC,6BAAA,EAA+B,EAAA,GAAK,IAAA,CAAA,CAAA;AAChF,IAAA;AASF;;;;"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
|
+
import type { Core, Modules } from '@strapi/types';
|
|
3
|
+
import { McpPromptRegistry } from '../prompt-registry';
|
|
4
|
+
import { McpResourceRegistry } from '../resource-registry';
|
|
5
|
+
import { McpToolRegistry } from '../tool-registry';
|
|
6
|
+
import type { McpAdminTokenAbility } from '../authentication';
|
|
7
|
+
import { McpCapabilityDefinitionRegistry } from './McpCapabilityDefinitionRegistry';
|
|
8
|
+
import type { McpCapabilityRegistryReadonly } from './McpCapabilityRegistry';
|
|
9
|
+
export type McpCapabilityDefinitions = {
|
|
10
|
+
tools: McpCapabilityDefinitionRegistry<'tool', Modules.MCP.McpToolDefinition>;
|
|
11
|
+
prompts: McpCapabilityDefinitionRegistry<'prompt', Modules.MCP.McpPromptDefinition>;
|
|
12
|
+
resources: McpCapabilityDefinitionRegistry<'resource', Modules.MCP.McpResourceDefinition>;
|
|
13
|
+
};
|
|
14
|
+
export type McpRegistries = {
|
|
15
|
+
tools: McpToolRegistry;
|
|
16
|
+
prompts: McpPromptRegistry;
|
|
17
|
+
resources: McpResourceRegistry;
|
|
18
|
+
};
|
|
19
|
+
/** Read-only registry surface exposed on McpServerWithRegistries. */
|
|
20
|
+
export type McpRegistriesReadonly = {
|
|
21
|
+
tools: McpCapabilityRegistryReadonly;
|
|
22
|
+
prompts: McpCapabilityRegistryReadonly;
|
|
23
|
+
resources: McpCapabilityRegistryReadonly;
|
|
24
|
+
};
|
|
25
|
+
export type McpServerWithRegistries = {
|
|
26
|
+
mcpServer: McpServer;
|
|
27
|
+
registries: McpRegistriesReadonly;
|
|
28
|
+
};
|
|
29
|
+
export type CreateMcpServerWithRegistriesParams = {
|
|
30
|
+
strapi: Core.Strapi;
|
|
31
|
+
definitions: McpCapabilityDefinitions;
|
|
32
|
+
isDevMode: boolean;
|
|
33
|
+
ability: McpAdminTokenAbility;
|
|
34
|
+
user: Modules.MCP.McpHandlerContext['user'];
|
|
35
|
+
};
|
|
36
|
+
export declare const createMcpServerWithRegistries: ({ strapi, definitions, isDevMode, ability, user, }: CreateMcpServerWithRegistriesParams) => McpServerWithRegistries;
|
|
37
|
+
//# sourceMappingURL=McpServerFactory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"McpServerFactory.d.ts","sourceRoot":"","sources":["../../../../src/services/mcp/internal/McpServerFactory.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,+BAA+B,EAAE,MAAM,mCAAmC,CAAC;AACpF,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AAG7E,MAAM,MAAM,wBAAwB,GAAG;IACrC,KAAK,EAAE,+BAA+B,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAC9E,OAAO,EAAE,+BAA+B,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IACpF,SAAS,EAAE,+BAA+B,CAAC,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;CAC3F,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,eAAe,CAAC;IACvB,OAAO,EAAE,iBAAiB,CAAC;IAC3B,SAAS,EAAE,mBAAmB,CAAC;CAChC,CAAC;AAEF,qEAAqE;AACrE,MAAM,MAAM,qBAAqB,GAAG;IAClC,KAAK,EAAE,6BAA6B,CAAC;IACrC,OAAO,EAAE,6BAA6B,CAAC;IACvC,SAAS,EAAE,6BAA6B,CAAC;CAC1C,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,SAAS,EAAE,SAAS,CAAC;IACrB,UAAU,EAAE,qBAAqB,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,mCAAmC,GAAG;IAChD,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;IACpB,WAAW,EAAE,wBAAwB,CAAC;IACtC,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,oBAAoB,CAAC;IAC9B,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;CAC7C,CAAC;AAEF,eAAO,MAAM,6BAA6B,uDAMvC,mCAAmC,KAAG,uBAuExC,CAAC"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var mcp_js = require('@modelcontextprotocol/sdk/server/mcp.js');
|
|
4
|
+
var promptRegistry = require('../prompt-registry.js');
|
|
5
|
+
var resourceRegistry = require('../resource-registry.js');
|
|
6
|
+
var toolRegistry = require('../tool-registry.js');
|
|
7
|
+
var syncMcpSessionCapabilities = require('./syncMcpSessionCapabilities.js');
|
|
8
|
+
|
|
9
|
+
// eslint-disable-next-line import/extensions
|
|
10
|
+
const createMcpServerWithRegistries = ({ strapi, definitions, isDevMode, ability, user })=>{
|
|
11
|
+
const capabilities = {
|
|
12
|
+
logging: {}
|
|
13
|
+
};
|
|
14
|
+
// Advertise capability categories when definitions exist (server-level), not per-user enabled
|
|
15
|
+
// count. Clients discover the real set via tools/list, prompts/list, resources/list after sync.
|
|
16
|
+
if (definitions.tools.size > 0) {
|
|
17
|
+
capabilities.tools = {};
|
|
18
|
+
}
|
|
19
|
+
if (definitions.prompts.size > 0) {
|
|
20
|
+
capabilities.prompts = {};
|
|
21
|
+
}
|
|
22
|
+
if (definitions.resources.size > 0) {
|
|
23
|
+
capabilities.resources = {};
|
|
24
|
+
}
|
|
25
|
+
const mcpServer = new mcp_js.McpServer({
|
|
26
|
+
name: 'strapi-mcp-server',
|
|
27
|
+
version: '1.0.0'
|
|
28
|
+
}, {
|
|
29
|
+
capabilities
|
|
30
|
+
});
|
|
31
|
+
// Bootstrap registries with current definitions
|
|
32
|
+
const tools = new toolRegistry.McpToolRegistry({
|
|
33
|
+
strapi,
|
|
34
|
+
definitions: definitions.tools,
|
|
35
|
+
ability,
|
|
36
|
+
user
|
|
37
|
+
});
|
|
38
|
+
const prompts = new promptRegistry.McpPromptRegistry({
|
|
39
|
+
strapi,
|
|
40
|
+
definitions: definitions.prompts
|
|
41
|
+
});
|
|
42
|
+
const resources = new resourceRegistry.McpResourceRegistry({
|
|
43
|
+
strapi,
|
|
44
|
+
definitions: definitions.resources
|
|
45
|
+
});
|
|
46
|
+
// Register capabilities (disabled by default)
|
|
47
|
+
tools.bind(mcpServer);
|
|
48
|
+
prompts.bind(mcpServer);
|
|
49
|
+
resources.bind(mcpServer);
|
|
50
|
+
syncMcpSessionCapabilities.syncMcpSessionCapabilities({
|
|
51
|
+
registries: {
|
|
52
|
+
tools,
|
|
53
|
+
prompts,
|
|
54
|
+
resources
|
|
55
|
+
},
|
|
56
|
+
definitions,
|
|
57
|
+
ability,
|
|
58
|
+
isDevMode
|
|
59
|
+
});
|
|
60
|
+
return {
|
|
61
|
+
mcpServer,
|
|
62
|
+
registries: {
|
|
63
|
+
tools,
|
|
64
|
+
prompts,
|
|
65
|
+
resources
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
exports.createMcpServerWithRegistries = createMcpServerWithRegistries;
|
|
71
|
+
//# sourceMappingURL=McpServerFactory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"McpServerFactory.js","sources":["../../../../src/services/mcp/internal/McpServerFactory.ts"],"sourcesContent":["// eslint-disable-next-line import/extensions\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { Core, Modules } from '@strapi/types';\nimport { McpPromptRegistry } from '../prompt-registry';\nimport { McpResourceRegistry } from '../resource-registry';\nimport { McpToolRegistry } from '../tool-registry';\nimport type { McpAdminTokenAbility } from '../authentication';\nimport { McpCapabilityDefinitionRegistry } from './McpCapabilityDefinitionRegistry';\nimport type { McpCapabilityRegistryReadonly } from './McpCapabilityRegistry';\nimport { syncMcpSessionCapabilities } from './syncMcpSessionCapabilities';\n\nexport type McpCapabilityDefinitions = {\n tools: McpCapabilityDefinitionRegistry<'tool', Modules.MCP.McpToolDefinition>;\n prompts: McpCapabilityDefinitionRegistry<'prompt', Modules.MCP.McpPromptDefinition>;\n resources: McpCapabilityDefinitionRegistry<'resource', Modules.MCP.McpResourceDefinition>;\n};\n\nexport type McpRegistries = {\n tools: McpToolRegistry;\n prompts: McpPromptRegistry;\n resources: McpResourceRegistry;\n};\n\n/** Read-only registry surface exposed on McpServerWithRegistries. */\nexport type McpRegistriesReadonly = {\n tools: McpCapabilityRegistryReadonly;\n prompts: McpCapabilityRegistryReadonly;\n resources: McpCapabilityRegistryReadonly;\n};\n\nexport type McpServerWithRegistries = {\n mcpServer: McpServer;\n registries: McpRegistriesReadonly;\n};\n\nexport type CreateMcpServerWithRegistriesParams = {\n strapi: Core.Strapi;\n definitions: McpCapabilityDefinitions;\n isDevMode: boolean;\n ability: McpAdminTokenAbility;\n user: Modules.MCP.McpHandlerContext['user'];\n};\n\nexport const createMcpServerWithRegistries = ({\n strapi,\n definitions,\n isDevMode,\n ability,\n user,\n}: CreateMcpServerWithRegistriesParams): McpServerWithRegistries => {\n const capabilities: {\n logging?: Record<string, unknown>;\n tools?: Record<string, unknown>;\n prompts?: Record<string, unknown>;\n resources?: Record<string, unknown>;\n } = {\n logging: {},\n };\n // Advertise capability categories when definitions exist (server-level), not per-user enabled\n // count. Clients discover the real set via tools/list, prompts/list, resources/list after sync.\n if (definitions.tools.size > 0) {\n capabilities.tools = {};\n }\n if (definitions.prompts.size > 0) {\n capabilities.prompts = {};\n }\n if (definitions.resources.size > 0) {\n capabilities.resources = {};\n }\n\n const mcpServer = new McpServer(\n {\n name: 'strapi-mcp-server',\n version: '1.0.0',\n },\n {\n capabilities,\n }\n );\n\n // Bootstrap registries with current definitions\n const tools = new McpToolRegistry({\n strapi,\n definitions: definitions.tools,\n ability,\n user,\n });\n const prompts = new McpPromptRegistry({\n strapi,\n definitions: definitions.prompts,\n });\n const resources = new McpResourceRegistry({\n strapi,\n definitions: definitions.resources,\n });\n\n // Register capabilities (disabled by default)\n tools.bind(mcpServer);\n prompts.bind(mcpServer);\n resources.bind(mcpServer);\n\n syncMcpSessionCapabilities({\n registries: {\n tools,\n prompts,\n resources,\n },\n definitions,\n ability,\n isDevMode,\n });\n\n return {\n mcpServer,\n registries: {\n tools,\n prompts,\n resources,\n },\n };\n};\n"],"names":["createMcpServerWithRegistries","strapi","definitions","isDevMode","ability","user","capabilities","logging","tools","size","prompts","resources","mcpServer","McpServer","name","version","McpToolRegistry","McpPromptRegistry","McpResourceRegistry","bind","syncMcpSessionCapabilities","registries"],"mappings":";;;;;;;;AAAA;AA2CO,MAAMA,6BAAAA,GAAgC,CAAC,EAC5CC,MAAM,EACNC,WAAW,EACXC,SAAS,EACTC,OAAO,EACPC,IAAI,EACgC,GAAA;AACpC,IAAA,MAAMC,YAAAA,GAKF;AACFC,QAAAA,OAAAA,EAAS;AACX,KAAA;;;AAGA,IAAA,IAAIL,WAAAA,CAAYM,KAAK,CAACC,IAAI,GAAG,CAAA,EAAG;QAC9BH,YAAAA,CAAaE,KAAK,GAAG,EAAC;AACxB,IAAA;AACA,IAAA,IAAIN,WAAAA,CAAYQ,OAAO,CAACD,IAAI,GAAG,CAAA,EAAG;QAChCH,YAAAA,CAAaI,OAAO,GAAG,EAAC;AAC1B,IAAA;AACA,IAAA,IAAIR,WAAAA,CAAYS,SAAS,CAACF,IAAI,GAAG,CAAA,EAAG;QAClCH,YAAAA,CAAaK,SAAS,GAAG,EAAC;AAC5B,IAAA;IAEA,MAAMC,SAAAA,GAAY,IAAIC,gBAAAA,CACpB;QACEC,IAAAA,EAAM,mBAAA;QACNC,OAAAA,EAAS;KACX,EACA;AACET,QAAAA;AACF,KAAA,CAAA;;IAIF,MAAME,KAAAA,GAAQ,IAAIQ,4BAAAA,CAAgB;AAChCf,QAAAA,MAAAA;AACAC,QAAAA,WAAAA,EAAaA,YAAYM,KAAK;AAC9BJ,QAAAA,OAAAA;AACAC,QAAAA;AACF,KAAA,CAAA;IACA,MAAMK,OAAAA,GAAU,IAAIO,gCAAAA,CAAkB;AACpChB,QAAAA,MAAAA;AACAC,QAAAA,WAAAA,EAAaA,YAAYQ;AAC3B,KAAA,CAAA;IACA,MAAMC,SAAAA,GAAY,IAAIO,oCAAAA,CAAoB;AACxCjB,QAAAA,MAAAA;AACAC,QAAAA,WAAAA,EAAaA,YAAYS;AAC3B,KAAA,CAAA;;AAGAH,IAAAA,KAAAA,CAAMW,IAAI,CAACP,SAAAA,CAAAA;AACXF,IAAAA,OAAAA,CAAQS,IAAI,CAACP,SAAAA,CAAAA;AACbD,IAAAA,SAAAA,CAAUQ,IAAI,CAACP,SAAAA,CAAAA;IAEfQ,qDAAAA,CAA2B;QACzBC,UAAAA,EAAY;AACVb,YAAAA,KAAAA;AACAE,YAAAA,OAAAA;AACAC,YAAAA;AACF,SAAA;AACAT,QAAAA,WAAAA;AACAE,QAAAA,OAAAA;AACAD,QAAAA;AACF,KAAA,CAAA;IAEA,OAAO;AACLS,QAAAA,SAAAA;QACAS,UAAAA,EAAY;AACVb,YAAAA,KAAAA;AACAE,YAAAA,OAAAA;AACAC,YAAAA;AACF;AACF,KAAA;AACF;;;;"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
|
+
import { McpPromptRegistry } from '../prompt-registry.mjs';
|
|
3
|
+
import { McpResourceRegistry } from '../resource-registry.mjs';
|
|
4
|
+
import { McpToolRegistry } from '../tool-registry.mjs';
|
|
5
|
+
import { syncMcpSessionCapabilities } from './syncMcpSessionCapabilities.mjs';
|
|
6
|
+
|
|
7
|
+
// eslint-disable-next-line import/extensions
|
|
8
|
+
const createMcpServerWithRegistries = ({ strapi, definitions, isDevMode, ability, user })=>{
|
|
9
|
+
const capabilities = {
|
|
10
|
+
logging: {}
|
|
11
|
+
};
|
|
12
|
+
// Advertise capability categories when definitions exist (server-level), not per-user enabled
|
|
13
|
+
// count. Clients discover the real set via tools/list, prompts/list, resources/list after sync.
|
|
14
|
+
if (definitions.tools.size > 0) {
|
|
15
|
+
capabilities.tools = {};
|
|
16
|
+
}
|
|
17
|
+
if (definitions.prompts.size > 0) {
|
|
18
|
+
capabilities.prompts = {};
|
|
19
|
+
}
|
|
20
|
+
if (definitions.resources.size > 0) {
|
|
21
|
+
capabilities.resources = {};
|
|
22
|
+
}
|
|
23
|
+
const mcpServer = new McpServer({
|
|
24
|
+
name: 'strapi-mcp-server',
|
|
25
|
+
version: '1.0.0'
|
|
26
|
+
}, {
|
|
27
|
+
capabilities
|
|
28
|
+
});
|
|
29
|
+
// Bootstrap registries with current definitions
|
|
30
|
+
const tools = new McpToolRegistry({
|
|
31
|
+
strapi,
|
|
32
|
+
definitions: definitions.tools,
|
|
33
|
+
ability,
|
|
34
|
+
user
|
|
35
|
+
});
|
|
36
|
+
const prompts = new McpPromptRegistry({
|
|
37
|
+
strapi,
|
|
38
|
+
definitions: definitions.prompts
|
|
39
|
+
});
|
|
40
|
+
const resources = new McpResourceRegistry({
|
|
41
|
+
strapi,
|
|
42
|
+
definitions: definitions.resources
|
|
43
|
+
});
|
|
44
|
+
// Register capabilities (disabled by default)
|
|
45
|
+
tools.bind(mcpServer);
|
|
46
|
+
prompts.bind(mcpServer);
|
|
47
|
+
resources.bind(mcpServer);
|
|
48
|
+
syncMcpSessionCapabilities({
|
|
49
|
+
registries: {
|
|
50
|
+
tools,
|
|
51
|
+
prompts,
|
|
52
|
+
resources
|
|
53
|
+
},
|
|
54
|
+
definitions,
|
|
55
|
+
ability,
|
|
56
|
+
isDevMode
|
|
57
|
+
});
|
|
58
|
+
return {
|
|
59
|
+
mcpServer,
|
|
60
|
+
registries: {
|
|
61
|
+
tools,
|
|
62
|
+
prompts,
|
|
63
|
+
resources
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
export { createMcpServerWithRegistries };
|
|
69
|
+
//# sourceMappingURL=McpServerFactory.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"McpServerFactory.mjs","sources":["../../../../src/services/mcp/internal/McpServerFactory.ts"],"sourcesContent":["// eslint-disable-next-line import/extensions\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { Core, Modules } from '@strapi/types';\nimport { McpPromptRegistry } from '../prompt-registry';\nimport { McpResourceRegistry } from '../resource-registry';\nimport { McpToolRegistry } from '../tool-registry';\nimport type { McpAdminTokenAbility } from '../authentication';\nimport { McpCapabilityDefinitionRegistry } from './McpCapabilityDefinitionRegistry';\nimport type { McpCapabilityRegistryReadonly } from './McpCapabilityRegistry';\nimport { syncMcpSessionCapabilities } from './syncMcpSessionCapabilities';\n\nexport type McpCapabilityDefinitions = {\n tools: McpCapabilityDefinitionRegistry<'tool', Modules.MCP.McpToolDefinition>;\n prompts: McpCapabilityDefinitionRegistry<'prompt', Modules.MCP.McpPromptDefinition>;\n resources: McpCapabilityDefinitionRegistry<'resource', Modules.MCP.McpResourceDefinition>;\n};\n\nexport type McpRegistries = {\n tools: McpToolRegistry;\n prompts: McpPromptRegistry;\n resources: McpResourceRegistry;\n};\n\n/** Read-only registry surface exposed on McpServerWithRegistries. */\nexport type McpRegistriesReadonly = {\n tools: McpCapabilityRegistryReadonly;\n prompts: McpCapabilityRegistryReadonly;\n resources: McpCapabilityRegistryReadonly;\n};\n\nexport type McpServerWithRegistries = {\n mcpServer: McpServer;\n registries: McpRegistriesReadonly;\n};\n\nexport type CreateMcpServerWithRegistriesParams = {\n strapi: Core.Strapi;\n definitions: McpCapabilityDefinitions;\n isDevMode: boolean;\n ability: McpAdminTokenAbility;\n user: Modules.MCP.McpHandlerContext['user'];\n};\n\nexport const createMcpServerWithRegistries = ({\n strapi,\n definitions,\n isDevMode,\n ability,\n user,\n}: CreateMcpServerWithRegistriesParams): McpServerWithRegistries => {\n const capabilities: {\n logging?: Record<string, unknown>;\n tools?: Record<string, unknown>;\n prompts?: Record<string, unknown>;\n resources?: Record<string, unknown>;\n } = {\n logging: {},\n };\n // Advertise capability categories when definitions exist (server-level), not per-user enabled\n // count. Clients discover the real set via tools/list, prompts/list, resources/list after sync.\n if (definitions.tools.size > 0) {\n capabilities.tools = {};\n }\n if (definitions.prompts.size > 0) {\n capabilities.prompts = {};\n }\n if (definitions.resources.size > 0) {\n capabilities.resources = {};\n }\n\n const mcpServer = new McpServer(\n {\n name: 'strapi-mcp-server',\n version: '1.0.0',\n },\n {\n capabilities,\n }\n );\n\n // Bootstrap registries with current definitions\n const tools = new McpToolRegistry({\n strapi,\n definitions: definitions.tools,\n ability,\n user,\n });\n const prompts = new McpPromptRegistry({\n strapi,\n definitions: definitions.prompts,\n });\n const resources = new McpResourceRegistry({\n strapi,\n definitions: definitions.resources,\n });\n\n // Register capabilities (disabled by default)\n tools.bind(mcpServer);\n prompts.bind(mcpServer);\n resources.bind(mcpServer);\n\n syncMcpSessionCapabilities({\n registries: {\n tools,\n prompts,\n resources,\n },\n definitions,\n ability,\n isDevMode,\n });\n\n return {\n mcpServer,\n registries: {\n tools,\n prompts,\n resources,\n },\n };\n};\n"],"names":["createMcpServerWithRegistries","strapi","definitions","isDevMode","ability","user","capabilities","logging","tools","size","prompts","resources","mcpServer","McpServer","name","version","McpToolRegistry","McpPromptRegistry","McpResourceRegistry","bind","syncMcpSessionCapabilities","registries"],"mappings":";;;;;;AAAA;AA2CO,MAAMA,6BAAAA,GAAgC,CAAC,EAC5CC,MAAM,EACNC,WAAW,EACXC,SAAS,EACTC,OAAO,EACPC,IAAI,EACgC,GAAA;AACpC,IAAA,MAAMC,YAAAA,GAKF;AACFC,QAAAA,OAAAA,EAAS;AACX,KAAA;;;AAGA,IAAA,IAAIL,WAAAA,CAAYM,KAAK,CAACC,IAAI,GAAG,CAAA,EAAG;QAC9BH,YAAAA,CAAaE,KAAK,GAAG,EAAC;AACxB,IAAA;AACA,IAAA,IAAIN,WAAAA,CAAYQ,OAAO,CAACD,IAAI,GAAG,CAAA,EAAG;QAChCH,YAAAA,CAAaI,OAAO,GAAG,EAAC;AAC1B,IAAA;AACA,IAAA,IAAIR,WAAAA,CAAYS,SAAS,CAACF,IAAI,GAAG,CAAA,EAAG;QAClCH,YAAAA,CAAaK,SAAS,GAAG,EAAC;AAC5B,IAAA;IAEA,MAAMC,SAAAA,GAAY,IAAIC,SAAAA,CACpB;QACEC,IAAAA,EAAM,mBAAA;QACNC,OAAAA,EAAS;KACX,EACA;AACET,QAAAA;AACF,KAAA,CAAA;;IAIF,MAAME,KAAAA,GAAQ,IAAIQ,eAAAA,CAAgB;AAChCf,QAAAA,MAAAA;AACAC,QAAAA,WAAAA,EAAaA,YAAYM,KAAK;AAC9BJ,QAAAA,OAAAA;AACAC,QAAAA;AACF,KAAA,CAAA;IACA,MAAMK,OAAAA,GAAU,IAAIO,iBAAAA,CAAkB;AACpChB,QAAAA,MAAAA;AACAC,QAAAA,WAAAA,EAAaA,YAAYQ;AAC3B,KAAA,CAAA;IACA,MAAMC,SAAAA,GAAY,IAAIO,mBAAAA,CAAoB;AACxCjB,QAAAA,MAAAA;AACAC,QAAAA,WAAAA,EAAaA,YAAYS;AAC3B,KAAA,CAAA;;AAGAH,IAAAA,KAAAA,CAAMW,IAAI,CAACP,SAAAA,CAAAA;AACXF,IAAAA,OAAAA,CAAQS,IAAI,CAACP,SAAAA,CAAAA;AACbD,IAAAA,SAAAA,CAAUQ,IAAI,CAACP,SAAAA,CAAAA;IAEfQ,0BAAAA,CAA2B;QACzBC,UAAAA,EAAY;AACVb,YAAAA,KAAAA;AACAE,YAAAA,OAAAA;AACAC,YAAAA;AACF,SAAA;AACAT,QAAAA,WAAAA;AACAE,QAAAA,OAAAA;AACAD,QAAAA;AACF,KAAA,CAAA;IAEA,OAAO;AACLS,QAAAA,SAAAA;QACAS,UAAAA,EAAY;AACVb,YAAAA,KAAAA;AACAE,YAAAA,OAAAA;AACAC,YAAAA;AACF;AACF,KAAA;AACF;;;;"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { Modules } from '@strapi/types';
|
|
2
|
+
import type { McpAdminTokenAbility } from '../authentication';
|
|
3
|
+
import type { McpCapabilityDefinitions, McpRegistries } from './McpServerFactory';
|
|
4
|
+
export type CanUseMcpCapabilityParams = {
|
|
5
|
+
ability: McpAdminTokenAbility;
|
|
6
|
+
definition: Modules.MCP.McpCapabilityDefinition;
|
|
7
|
+
isDevMode: boolean;
|
|
8
|
+
};
|
|
9
|
+
export type SyncMcpSessionCapabilitiesParams = {
|
|
10
|
+
registries: McpRegistries;
|
|
11
|
+
definitions: McpCapabilityDefinitions;
|
|
12
|
+
ability: McpAdminTokenAbility;
|
|
13
|
+
isDevMode: boolean;
|
|
14
|
+
};
|
|
15
|
+
export type SyncMcpSessionCapabilitiesSummary = {
|
|
16
|
+
enabled: string[];
|
|
17
|
+
disabled: string[];
|
|
18
|
+
};
|
|
19
|
+
export declare const canUseMcpCapability: ({ ability, definition, isDevMode, }: CanUseMcpCapabilityParams) => boolean;
|
|
20
|
+
export declare const syncMcpSessionCapabilities: ({ registries, definitions, ability, isDevMode, }: SyncMcpSessionCapabilitiesParams) => SyncMcpSessionCapabilitiesSummary;
|
|
21
|
+
//# sourceMappingURL=syncMcpSessionCapabilities.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"syncMcpSessionCapabilities.d.ts","sourceRoot":"","sources":["../../../../src/services/mcp/internal/syncMcpSessionCapabilities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,KAAK,EAAE,wBAAwB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAOlF,MAAM,MAAM,yBAAyB,GAAG;IACtC,OAAO,EAAE,oBAAoB,CAAC;IAC9B,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC;IAChD,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,gCAAgC,GAAG;IAC7C,UAAU,EAAE,aAAa,CAAC;IAC1B,WAAW,EAAE,wBAAwB,CAAC;IACtC,OAAO,EAAE,oBAAoB,CAAC;IAC9B,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,iCAAiC,GAAG;IAC9C,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,CAAC;AAUF,eAAO,MAAM,mBAAmB,wCAI7B,yBAAyB,KAAG,OAY9B,CAAC;AAEF,eAAO,MAAM,0BAA0B,qDAKpC,gCAAgC,KAAG,iCAoDrC,CAAC"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const canUseAuthorizedCapability = ({ ability, auth })=>auth.policies.some(({ action, subject })=>subject !== undefined ? ability.can(action, subject) : ability.can(action));
|
|
4
|
+
const canUseMcpCapability = ({ ability, definition, isDevMode })=>{
|
|
5
|
+
if (definition.devModeOnly === true) {
|
|
6
|
+
return isDevMode === true;
|
|
7
|
+
}
|
|
8
|
+
if (definition.auth === undefined) {
|
|
9
|
+
return false;
|
|
10
|
+
}
|
|
11
|
+
// Session capability availability is a coarse allowlist. Field/entity conditions must be
|
|
12
|
+
// enforced by capability handlers with request-specific context.
|
|
13
|
+
return canUseAuthorizedCapability({
|
|
14
|
+
ability,
|
|
15
|
+
auth: definition.auth
|
|
16
|
+
});
|
|
17
|
+
};
|
|
18
|
+
const syncMcpSessionCapabilities = ({ registries, definitions, ability, isDevMode })=>{
|
|
19
|
+
const summary = {
|
|
20
|
+
enabled: [],
|
|
21
|
+
disabled: []
|
|
22
|
+
};
|
|
23
|
+
definitions.tools.forEach((definition)=>{
|
|
24
|
+
const allowed = canUseMcpCapability({
|
|
25
|
+
ability,
|
|
26
|
+
definition,
|
|
27
|
+
isDevMode
|
|
28
|
+
});
|
|
29
|
+
const status = registries.tools.status(definition.name);
|
|
30
|
+
if (status === 'disabled' && allowed === true) {
|
|
31
|
+
registries.tools.enable(definition.name);
|
|
32
|
+
summary.enabled.push(definition.name);
|
|
33
|
+
}
|
|
34
|
+
if (status === 'enabled' && allowed === false) {
|
|
35
|
+
registries.tools.disable(definition.name);
|
|
36
|
+
summary.disabled.push(definition.name);
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
definitions.prompts.forEach((definition)=>{
|
|
40
|
+
const allowed = canUseMcpCapability({
|
|
41
|
+
ability,
|
|
42
|
+
definition,
|
|
43
|
+
isDevMode
|
|
44
|
+
});
|
|
45
|
+
const status = registries.prompts.status(definition.name);
|
|
46
|
+
if (status === 'disabled' && allowed === true) {
|
|
47
|
+
registries.prompts.enable(definition.name);
|
|
48
|
+
summary.enabled.push(definition.name);
|
|
49
|
+
}
|
|
50
|
+
if (status === 'enabled' && allowed === false) {
|
|
51
|
+
registries.prompts.disable(definition.name);
|
|
52
|
+
summary.disabled.push(definition.name);
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
definitions.resources.forEach((definition)=>{
|
|
56
|
+
const allowed = canUseMcpCapability({
|
|
57
|
+
ability,
|
|
58
|
+
definition,
|
|
59
|
+
isDevMode
|
|
60
|
+
});
|
|
61
|
+
const status = registries.resources.status(definition.name);
|
|
62
|
+
if (status === 'disabled' && allowed === true) {
|
|
63
|
+
registries.resources.enable(definition.name);
|
|
64
|
+
summary.enabled.push(definition.name);
|
|
65
|
+
}
|
|
66
|
+
if (status === 'enabled' && allowed === false) {
|
|
67
|
+
registries.resources.disable(definition.name);
|
|
68
|
+
summary.disabled.push(definition.name);
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
return summary;
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
exports.canUseMcpCapability = canUseMcpCapability;
|
|
75
|
+
exports.syncMcpSessionCapabilities = syncMcpSessionCapabilities;
|
|
76
|
+
//# sourceMappingURL=syncMcpSessionCapabilities.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"syncMcpSessionCapabilities.js","sources":["../../../../src/services/mcp/internal/syncMcpSessionCapabilities.ts"],"sourcesContent":["import type { Modules } from '@strapi/types';\nimport type { McpAdminTokenAbility } from '../authentication';\nimport type { McpCapabilityDefinitions, McpRegistries } from './McpServerFactory';\n\ntype CanUseAuthorizedCapabilityParams = {\n ability: McpAdminTokenAbility;\n auth: Modules.MCP.McpCapabilityAuth;\n};\n\nexport type CanUseMcpCapabilityParams = {\n ability: McpAdminTokenAbility;\n definition: Modules.MCP.McpCapabilityDefinition;\n isDevMode: boolean;\n};\n\nexport type SyncMcpSessionCapabilitiesParams = {\n registries: McpRegistries;\n definitions: McpCapabilityDefinitions;\n ability: McpAdminTokenAbility;\n isDevMode: boolean;\n};\n\nexport type SyncMcpSessionCapabilitiesSummary = {\n enabled: string[];\n disabled: string[];\n};\n\nconst canUseAuthorizedCapability = ({ ability, auth }: CanUseAuthorizedCapabilityParams): boolean =>\n auth.policies.some(({ action, subject }) =>\n subject !== undefined\n ? ability.can(action, subject)\n : // @ts-expect-error ability.can expects 2 arguments, but runtime allows 1\n ability.can(action)\n );\n\nexport const canUseMcpCapability = ({\n ability,\n definition,\n isDevMode,\n}: CanUseMcpCapabilityParams): boolean => {\n if (definition.devModeOnly === true) {\n return isDevMode === true;\n }\n\n if (definition.auth === undefined) {\n return false;\n }\n\n // Session capability availability is a coarse allowlist. Field/entity conditions must be\n // enforced by capability handlers with request-specific context.\n return canUseAuthorizedCapability({ ability, auth: definition.auth });\n};\n\nexport const syncMcpSessionCapabilities = ({\n registries,\n definitions,\n ability,\n isDevMode,\n}: SyncMcpSessionCapabilitiesParams): SyncMcpSessionCapabilitiesSummary => {\n const summary: SyncMcpSessionCapabilitiesSummary = {\n enabled: [],\n disabled: [],\n };\n\n definitions.tools.forEach((definition) => {\n const allowed = canUseMcpCapability({ ability, definition, isDevMode });\n const status = registries.tools.status(definition.name);\n\n if (status === 'disabled' && allowed === true) {\n registries.tools.enable(definition.name);\n summary.enabled.push(definition.name);\n }\n\n if (status === 'enabled' && allowed === false) {\n registries.tools.disable(definition.name);\n summary.disabled.push(definition.name);\n }\n });\n\n definitions.prompts.forEach((definition) => {\n const allowed = canUseMcpCapability({ ability, definition, isDevMode });\n const status = registries.prompts.status(definition.name);\n\n if (status === 'disabled' && allowed === true) {\n registries.prompts.enable(definition.name);\n summary.enabled.push(definition.name);\n }\n\n if (status === 'enabled' && allowed === false) {\n registries.prompts.disable(definition.name);\n summary.disabled.push(definition.name);\n }\n });\n\n definitions.resources.forEach((definition) => {\n const allowed = canUseMcpCapability({ ability, definition, isDevMode });\n const status = registries.resources.status(definition.name);\n\n if (status === 'disabled' && allowed === true) {\n registries.resources.enable(definition.name);\n summary.enabled.push(definition.name);\n }\n\n if (status === 'enabled' && allowed === false) {\n registries.resources.disable(definition.name);\n summary.disabled.push(definition.name);\n }\n });\n\n return summary;\n};\n"],"names":["canUseAuthorizedCapability","ability","auth","policies","some","action","subject","undefined","can","canUseMcpCapability","definition","isDevMode","devModeOnly","syncMcpSessionCapabilities","registries","definitions","summary","enabled","disabled","tools","forEach","allowed","status","name","enable","push","disable","prompts","resources"],"mappings":"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"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
const canUseAuthorizedCapability = ({ ability, auth })=>auth.policies.some(({ action, subject })=>subject !== undefined ? ability.can(action, subject) : ability.can(action));
|
|
2
|
+
const canUseMcpCapability = ({ ability, definition, isDevMode })=>{
|
|
3
|
+
if (definition.devModeOnly === true) {
|
|
4
|
+
return isDevMode === true;
|
|
5
|
+
}
|
|
6
|
+
if (definition.auth === undefined) {
|
|
7
|
+
return false;
|
|
8
|
+
}
|
|
9
|
+
// Session capability availability is a coarse allowlist. Field/entity conditions must be
|
|
10
|
+
// enforced by capability handlers with request-specific context.
|
|
11
|
+
return canUseAuthorizedCapability({
|
|
12
|
+
ability,
|
|
13
|
+
auth: definition.auth
|
|
14
|
+
});
|
|
15
|
+
};
|
|
16
|
+
const syncMcpSessionCapabilities = ({ registries, definitions, ability, isDevMode })=>{
|
|
17
|
+
const summary = {
|
|
18
|
+
enabled: [],
|
|
19
|
+
disabled: []
|
|
20
|
+
};
|
|
21
|
+
definitions.tools.forEach((definition)=>{
|
|
22
|
+
const allowed = canUseMcpCapability({
|
|
23
|
+
ability,
|
|
24
|
+
definition,
|
|
25
|
+
isDevMode
|
|
26
|
+
});
|
|
27
|
+
const status = registries.tools.status(definition.name);
|
|
28
|
+
if (status === 'disabled' && allowed === true) {
|
|
29
|
+
registries.tools.enable(definition.name);
|
|
30
|
+
summary.enabled.push(definition.name);
|
|
31
|
+
}
|
|
32
|
+
if (status === 'enabled' && allowed === false) {
|
|
33
|
+
registries.tools.disable(definition.name);
|
|
34
|
+
summary.disabled.push(definition.name);
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
definitions.prompts.forEach((definition)=>{
|
|
38
|
+
const allowed = canUseMcpCapability({
|
|
39
|
+
ability,
|
|
40
|
+
definition,
|
|
41
|
+
isDevMode
|
|
42
|
+
});
|
|
43
|
+
const status = registries.prompts.status(definition.name);
|
|
44
|
+
if (status === 'disabled' && allowed === true) {
|
|
45
|
+
registries.prompts.enable(definition.name);
|
|
46
|
+
summary.enabled.push(definition.name);
|
|
47
|
+
}
|
|
48
|
+
if (status === 'enabled' && allowed === false) {
|
|
49
|
+
registries.prompts.disable(definition.name);
|
|
50
|
+
summary.disabled.push(definition.name);
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
definitions.resources.forEach((definition)=>{
|
|
54
|
+
const allowed = canUseMcpCapability({
|
|
55
|
+
ability,
|
|
56
|
+
definition,
|
|
57
|
+
isDevMode
|
|
58
|
+
});
|
|
59
|
+
const status = registries.resources.status(definition.name);
|
|
60
|
+
if (status === 'disabled' && allowed === true) {
|
|
61
|
+
registries.resources.enable(definition.name);
|
|
62
|
+
summary.enabled.push(definition.name);
|
|
63
|
+
}
|
|
64
|
+
if (status === 'enabled' && allowed === false) {
|
|
65
|
+
registries.resources.disable(definition.name);
|
|
66
|
+
summary.disabled.push(definition.name);
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
return summary;
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
export { canUseMcpCapability, syncMcpSessionCapabilities };
|
|
73
|
+
//# sourceMappingURL=syncMcpSessionCapabilities.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"syncMcpSessionCapabilities.mjs","sources":["../../../../src/services/mcp/internal/syncMcpSessionCapabilities.ts"],"sourcesContent":["import type { Modules } from '@strapi/types';\nimport type { McpAdminTokenAbility } from '../authentication';\nimport type { McpCapabilityDefinitions, McpRegistries } from './McpServerFactory';\n\ntype CanUseAuthorizedCapabilityParams = {\n ability: McpAdminTokenAbility;\n auth: Modules.MCP.McpCapabilityAuth;\n};\n\nexport type CanUseMcpCapabilityParams = {\n ability: McpAdminTokenAbility;\n definition: Modules.MCP.McpCapabilityDefinition;\n isDevMode: boolean;\n};\n\nexport type SyncMcpSessionCapabilitiesParams = {\n registries: McpRegistries;\n definitions: McpCapabilityDefinitions;\n ability: McpAdminTokenAbility;\n isDevMode: boolean;\n};\n\nexport type SyncMcpSessionCapabilitiesSummary = {\n enabled: string[];\n disabled: string[];\n};\n\nconst canUseAuthorizedCapability = ({ ability, auth }: CanUseAuthorizedCapabilityParams): boolean =>\n auth.policies.some(({ action, subject }) =>\n subject !== undefined\n ? ability.can(action, subject)\n : // @ts-expect-error ability.can expects 2 arguments, but runtime allows 1\n ability.can(action)\n );\n\nexport const canUseMcpCapability = ({\n ability,\n definition,\n isDevMode,\n}: CanUseMcpCapabilityParams): boolean => {\n if (definition.devModeOnly === true) {\n return isDevMode === true;\n }\n\n if (definition.auth === undefined) {\n return false;\n }\n\n // Session capability availability is a coarse allowlist. Field/entity conditions must be\n // enforced by capability handlers with request-specific context.\n return canUseAuthorizedCapability({ ability, auth: definition.auth });\n};\n\nexport const syncMcpSessionCapabilities = ({\n registries,\n definitions,\n ability,\n isDevMode,\n}: SyncMcpSessionCapabilitiesParams): SyncMcpSessionCapabilitiesSummary => {\n const summary: SyncMcpSessionCapabilitiesSummary = {\n enabled: [],\n disabled: [],\n };\n\n definitions.tools.forEach((definition) => {\n const allowed = canUseMcpCapability({ ability, definition, isDevMode });\n const status = registries.tools.status(definition.name);\n\n if (status === 'disabled' && allowed === true) {\n registries.tools.enable(definition.name);\n summary.enabled.push(definition.name);\n }\n\n if (status === 'enabled' && allowed === false) {\n registries.tools.disable(definition.name);\n summary.disabled.push(definition.name);\n }\n });\n\n definitions.prompts.forEach((definition) => {\n const allowed = canUseMcpCapability({ ability, definition, isDevMode });\n const status = registries.prompts.status(definition.name);\n\n if (status === 'disabled' && allowed === true) {\n registries.prompts.enable(definition.name);\n summary.enabled.push(definition.name);\n }\n\n if (status === 'enabled' && allowed === false) {\n registries.prompts.disable(definition.name);\n summary.disabled.push(definition.name);\n }\n });\n\n definitions.resources.forEach((definition) => {\n const allowed = canUseMcpCapability({ ability, definition, isDevMode });\n const status = registries.resources.status(definition.name);\n\n if (status === 'disabled' && allowed === true) {\n registries.resources.enable(definition.name);\n summary.enabled.push(definition.name);\n }\n\n if (status === 'enabled' && allowed === false) {\n registries.resources.disable(definition.name);\n summary.disabled.push(definition.name);\n }\n });\n\n return summary;\n};\n"],"names":["canUseAuthorizedCapability","ability","auth","policies","some","action","subject","undefined","can","canUseMcpCapability","definition","isDevMode","devModeOnly","syncMcpSessionCapabilities","registries","definitions","summary","enabled","disabled","tools","forEach","allowed","status","name","enable","push","disable","prompts","resources"],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { Core } from '@strapi/types';
|
|
2
|
+
import type { McpCapabilityIdentity } from './normalizeMcpCapability';
|
|
3
|
+
/** Rate-limited via core telemetry `LIMITED_EVENTS`. */
|
|
4
|
+
export declare const MCP_LIMITED_TELEMETRY_EVENTS: {
|
|
5
|
+
readonly didStartMcpServer: "didStartMcpServer";
|
|
6
|
+
readonly didUseMcpServer: "didUseMcpServer";
|
|
7
|
+
readonly didNotAuthenticateMcpRequest: "didNotAuthenticateMcpRequest";
|
|
8
|
+
readonly didNotHandleMcpRequest: "didNotHandleMcpRequest";
|
|
9
|
+
};
|
|
10
|
+
export type McpLimitedTelemetryEvent = (typeof MCP_LIMITED_TELEMETRY_EVENTS)[keyof typeof MCP_LIMITED_TELEMETRY_EVENTS];
|
|
11
|
+
export type McpAuthErrorClass = 'missing_token' | 'invalid_token';
|
|
12
|
+
export type McpRequestErrorClass = 'timeout' | 'error';
|
|
13
|
+
export type McpCapabilityErrorClass = 'execution_error';
|
|
14
|
+
export type McpStartTelemetryProperties = {
|
|
15
|
+
path: string;
|
|
16
|
+
numberOfTools: number;
|
|
17
|
+
numberOfPrompts: number;
|
|
18
|
+
numberOfResources: number;
|
|
19
|
+
};
|
|
20
|
+
/** Resets in-memory capability metrics state (unit tests only). */
|
|
21
|
+
export declare const resetMcpMetricsStateForTests: () => void;
|
|
22
|
+
export declare const classifyMcpRequestFailure: (error: unknown) => McpRequestErrorClass;
|
|
23
|
+
export declare const sendDidStartMcpServer: (strapi: Core.Strapi, properties: McpStartTelemetryProperties) => void;
|
|
24
|
+
export declare const sendDidUseMcpServer: (strapi: Core.Strapi) => void;
|
|
25
|
+
export declare const sendDidNotAuthenticateMcpRequest: (strapi: Core.Strapi, errorClass: McpAuthErrorClass) => void;
|
|
26
|
+
export declare const sendDidNotHandleMcpRequest: (strapi: Core.Strapi, errorClass: McpRequestErrorClass) => void;
|
|
27
|
+
export declare const sendDidExecuteMcpCapability: (strapi: Core.Strapi, identity: McpCapabilityIdentity) => void;
|
|
28
|
+
export declare const sendDidNotExecuteMcpCapability: (strapi: Core.Strapi, identity: McpCapabilityIdentity, errorClass: McpCapabilityErrorClass) => void;
|
|
29
|
+
//# sourceMappingURL=metrics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../../../src/services/mcp/metrics/metrics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAE1C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEtE,wDAAwD;AACxD,eAAO,MAAM,4BAA4B;;;;;CAK/B,CAAC;AAEX,MAAM,MAAM,wBAAwB,GAClC,CAAC,OAAO,4BAA4B,CAAC,CAAC,MAAM,OAAO,4BAA4B,CAAC,CAAC;AAEnF,MAAM,MAAM,iBAAiB,GAAG,eAAe,GAAG,eAAe,CAAC;AAClE,MAAM,MAAM,oBAAoB,GAAG,SAAS,GAAG,OAAO,CAAC;AACvD,MAAM,MAAM,uBAAuB,GAAG,iBAAiB,CAAC;AAExD,MAAM,MAAM,2BAA2B,GAAG;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;CAC3B,CAAC;AAWF,mEAAmE;AACnE,eAAO,MAAM,4BAA4B,QAAO,IAI/C,CAAC;AAwBF,eAAO,MAAM,yBAAyB,UAAW,OAAO,KAAG,oBAM1D,CAAC;AAEF,eAAO,MAAM,qBAAqB,WACxB,KAAK,MAAM,cACP,2BAA2B,KACtC,IAWF,CAAC;AAEF,eAAO,MAAM,mBAAmB,WAAY,KAAK,MAAM,KAAG,IAEzD,CAAC;AAEF,eAAO,MAAM,gCAAgC,WACnC,KAAK,MAAM,cACP,iBAAiB,KAC5B,IAMF,CAAC;AAEF,eAAO,MAAM,0BAA0B,WAC7B,KAAK,MAAM,cACP,oBAAoB,KAC/B,IAMF,CAAC;AAEF,eAAO,MAAM,2BAA2B,WAC9B,KAAK,MAAM,YACT,qBAAqB,KAC9B,IAcF,CAAC;AAEF,eAAO,MAAM,8BAA8B,WACjC,KAAK,MAAM,YACT,qBAAqB,cACnB,uBAAuB,KAClC,IAeF,CAAC"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/** Rate-limited via core telemetry `LIMITED_EVENTS`. */ const MCP_LIMITED_TELEMETRY_EVENTS = {
|
|
4
|
+
didStartMcpServer: 'didStartMcpServer',
|
|
5
|
+
didUseMcpServer: 'didUseMcpServer',
|
|
6
|
+
didNotAuthenticateMcpRequest: 'didNotAuthenticateMcpRequest',
|
|
7
|
+
didNotHandleMcpRequest: 'didNotHandleMcpRequest'
|
|
8
|
+
};
|
|
9
|
+
const ONE_DAY_MS = 24 * 60 * 60 * 1000;
|
|
10
|
+
let capabilityCacheExpiresAt = Date.now() + ONE_DAY_MS;
|
|
11
|
+
const executedCapabilities = new Set();
|
|
12
|
+
const failedCapabilities = new Set();
|
|
13
|
+
const capabilityCacheKey = (identity, succeeded)=>`${succeeded ? 'execute' : 'notExecute'}:${identity.type}:${identity.source}:${identity.name}`;
|
|
14
|
+
const shouldSendCapabilityEvent = (identity, succeeded)=>{
|
|
15
|
+
const cache = succeeded ? executedCapabilities : failedCapabilities;
|
|
16
|
+
if (Date.now() > capabilityCacheExpiresAt) {
|
|
17
|
+
executedCapabilities.clear();
|
|
18
|
+
failedCapabilities.clear();
|
|
19
|
+
capabilityCacheExpiresAt = Date.now() + ONE_DAY_MS;
|
|
20
|
+
}
|
|
21
|
+
const key = capabilityCacheKey(identity, succeeded);
|
|
22
|
+
if (cache.has(key)) {
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
cache.add(key);
|
|
26
|
+
return true;
|
|
27
|
+
};
|
|
28
|
+
const classifyMcpRequestFailure = (error)=>{
|
|
29
|
+
if (error instanceof Error && error.message.includes('timed out')) {
|
|
30
|
+
return 'timeout';
|
|
31
|
+
}
|
|
32
|
+
return 'error';
|
|
33
|
+
};
|
|
34
|
+
const sendDidStartMcpServer = (strapi, properties)=>{
|
|
35
|
+
strapi.telemetry.send(MCP_LIMITED_TELEMETRY_EVENTS.didStartMcpServer, {
|
|
36
|
+
eventProperties: {
|
|
37
|
+
path: properties.path
|
|
38
|
+
},
|
|
39
|
+
groupProperties: {
|
|
40
|
+
numberOfTools: properties.numberOfTools,
|
|
41
|
+
numberOfPrompts: properties.numberOfPrompts,
|
|
42
|
+
numberOfResources: properties.numberOfResources
|
|
43
|
+
}
|
|
44
|
+
}).catch(()=>{});
|
|
45
|
+
};
|
|
46
|
+
const sendDidUseMcpServer = (strapi)=>{
|
|
47
|
+
strapi.telemetry.send(MCP_LIMITED_TELEMETRY_EVENTS.didUseMcpServer).catch(()=>{});
|
|
48
|
+
};
|
|
49
|
+
const sendDidNotAuthenticateMcpRequest = (strapi, errorClass)=>{
|
|
50
|
+
strapi.telemetry.send(MCP_LIMITED_TELEMETRY_EVENTS.didNotAuthenticateMcpRequest, {
|
|
51
|
+
eventProperties: {
|
|
52
|
+
errorClass
|
|
53
|
+
}
|
|
54
|
+
}).catch(()=>{});
|
|
55
|
+
};
|
|
56
|
+
const sendDidNotHandleMcpRequest = (strapi, errorClass)=>{
|
|
57
|
+
strapi.telemetry.send(MCP_LIMITED_TELEMETRY_EVENTS.didNotHandleMcpRequest, {
|
|
58
|
+
eventProperties: {
|
|
59
|
+
errorClass
|
|
60
|
+
}
|
|
61
|
+
}).catch(()=>{});
|
|
62
|
+
};
|
|
63
|
+
const sendDidExecuteMcpCapability = (strapi, identity)=>{
|
|
64
|
+
if (!shouldSendCapabilityEvent(identity, true)) {
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
strapi.telemetry.send('didExecuteMcpCapability', {
|
|
68
|
+
eventProperties: {
|
|
69
|
+
type: identity.type,
|
|
70
|
+
source: identity.source,
|
|
71
|
+
name: identity.name
|
|
72
|
+
}
|
|
73
|
+
}).catch(()=>{});
|
|
74
|
+
};
|
|
75
|
+
const sendDidNotExecuteMcpCapability = (strapi, identity, errorClass)=>{
|
|
76
|
+
if (!shouldSendCapabilityEvent(identity, false)) {
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
strapi.telemetry.send('didNotExecuteMcpCapability', {
|
|
80
|
+
eventProperties: {
|
|
81
|
+
type: identity.type,
|
|
82
|
+
source: identity.source,
|
|
83
|
+
name: identity.name,
|
|
84
|
+
errorClass
|
|
85
|
+
}
|
|
86
|
+
}).catch(()=>{});
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
exports.MCP_LIMITED_TELEMETRY_EVENTS = MCP_LIMITED_TELEMETRY_EVENTS;
|
|
90
|
+
exports.classifyMcpRequestFailure = classifyMcpRequestFailure;
|
|
91
|
+
exports.sendDidExecuteMcpCapability = sendDidExecuteMcpCapability;
|
|
92
|
+
exports.sendDidNotAuthenticateMcpRequest = sendDidNotAuthenticateMcpRequest;
|
|
93
|
+
exports.sendDidNotExecuteMcpCapability = sendDidNotExecuteMcpCapability;
|
|
94
|
+
exports.sendDidNotHandleMcpRequest = sendDidNotHandleMcpRequest;
|
|
95
|
+
exports.sendDidStartMcpServer = sendDidStartMcpServer;
|
|
96
|
+
exports.sendDidUseMcpServer = sendDidUseMcpServer;
|
|
97
|
+
//# sourceMappingURL=metrics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metrics.js","sources":["../../../../src/services/mcp/metrics/metrics.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\n\nimport type { McpCapabilityIdentity } from './normalizeMcpCapability';\n\n/** Rate-limited via core telemetry `LIMITED_EVENTS`. */\nexport const MCP_LIMITED_TELEMETRY_EVENTS = {\n didStartMcpServer: 'didStartMcpServer',\n didUseMcpServer: 'didUseMcpServer',\n didNotAuthenticateMcpRequest: 'didNotAuthenticateMcpRequest',\n didNotHandleMcpRequest: 'didNotHandleMcpRequest',\n} as const;\n\nexport type McpLimitedTelemetryEvent =\n (typeof MCP_LIMITED_TELEMETRY_EVENTS)[keyof typeof MCP_LIMITED_TELEMETRY_EVENTS];\n\nexport type McpAuthErrorClass = 'missing_token' | 'invalid_token';\nexport type McpRequestErrorClass = 'timeout' | 'error';\nexport type McpCapabilityErrorClass = 'execution_error';\n\nexport type McpStartTelemetryProperties = {\n path: string;\n numberOfTools: number;\n numberOfPrompts: number;\n numberOfResources: number;\n};\n\nconst ONE_DAY_MS = 24 * 60 * 60 * 1000;\n\nlet capabilityCacheExpiresAt = Date.now() + ONE_DAY_MS;\nconst executedCapabilities = new Set<string>();\nconst failedCapabilities = new Set<string>();\n\nconst capabilityCacheKey = (identity: McpCapabilityIdentity, succeeded: boolean): string =>\n `${succeeded ? 'execute' : 'notExecute'}:${identity.type}:${identity.source}:${identity.name}`;\n\n/** Resets in-memory capability metrics state (unit tests only). */\nexport const resetMcpMetricsStateForTests = (): void => {\n executedCapabilities.clear();\n failedCapabilities.clear();\n capabilityCacheExpiresAt = Date.now() + ONE_DAY_MS;\n};\n\nconst shouldSendCapabilityEvent = (\n identity: McpCapabilityIdentity,\n succeeded: boolean\n): boolean => {\n const cache = succeeded ? executedCapabilities : failedCapabilities;\n\n if (Date.now() > capabilityCacheExpiresAt) {\n executedCapabilities.clear();\n failedCapabilities.clear();\n capabilityCacheExpiresAt = Date.now() + ONE_DAY_MS;\n }\n\n const key = capabilityCacheKey(identity, succeeded);\n\n if (cache.has(key)) {\n return false;\n }\n\n cache.add(key);\n return true;\n};\n\nexport const classifyMcpRequestFailure = (error: unknown): McpRequestErrorClass => {\n if (error instanceof Error && error.message.includes('timed out')) {\n return 'timeout';\n }\n\n return 'error';\n};\n\nexport const sendDidStartMcpServer = (\n strapi: Core.Strapi,\n properties: McpStartTelemetryProperties\n): void => {\n strapi.telemetry\n .send(MCP_LIMITED_TELEMETRY_EVENTS.didStartMcpServer, {\n eventProperties: { path: properties.path },\n groupProperties: {\n numberOfTools: properties.numberOfTools,\n numberOfPrompts: properties.numberOfPrompts,\n numberOfResources: properties.numberOfResources,\n },\n })\n .catch(() => {});\n};\n\nexport const sendDidUseMcpServer = (strapi: Core.Strapi): void => {\n strapi.telemetry.send(MCP_LIMITED_TELEMETRY_EVENTS.didUseMcpServer).catch(() => {});\n};\n\nexport const sendDidNotAuthenticateMcpRequest = (\n strapi: Core.Strapi,\n errorClass: McpAuthErrorClass\n): void => {\n strapi.telemetry\n .send(MCP_LIMITED_TELEMETRY_EVENTS.didNotAuthenticateMcpRequest, {\n eventProperties: { errorClass },\n })\n .catch(() => {});\n};\n\nexport const sendDidNotHandleMcpRequest = (\n strapi: Core.Strapi,\n errorClass: McpRequestErrorClass\n): void => {\n strapi.telemetry\n .send(MCP_LIMITED_TELEMETRY_EVENTS.didNotHandleMcpRequest, {\n eventProperties: { errorClass },\n })\n .catch(() => {});\n};\n\nexport const sendDidExecuteMcpCapability = (\n strapi: Core.Strapi,\n identity: McpCapabilityIdentity\n): void => {\n if (!shouldSendCapabilityEvent(identity, true)) {\n return;\n }\n\n strapi.telemetry\n .send('didExecuteMcpCapability', {\n eventProperties: {\n type: identity.type,\n source: identity.source,\n name: identity.name,\n },\n })\n .catch(() => {});\n};\n\nexport const sendDidNotExecuteMcpCapability = (\n strapi: Core.Strapi,\n identity: McpCapabilityIdentity,\n errorClass: McpCapabilityErrorClass\n): void => {\n if (!shouldSendCapabilityEvent(identity, false)) {\n return;\n }\n\n strapi.telemetry\n .send('didNotExecuteMcpCapability', {\n eventProperties: {\n type: identity.type,\n source: identity.source,\n name: identity.name,\n errorClass,\n },\n })\n .catch(() => {});\n};\n"],"names":["MCP_LIMITED_TELEMETRY_EVENTS","didStartMcpServer","didUseMcpServer","didNotAuthenticateMcpRequest","didNotHandleMcpRequest","ONE_DAY_MS","capabilityCacheExpiresAt","Date","now","executedCapabilities","Set","failedCapabilities","capabilityCacheKey","identity","succeeded","type","source","name","shouldSendCapabilityEvent","cache","clear","key","has","add","classifyMcpRequestFailure","error","Error","message","includes","sendDidStartMcpServer","strapi","properties","telemetry","send","eventProperties","path","groupProperties","numberOfTools","numberOfPrompts","numberOfResources","catch","sendDidUseMcpServer","sendDidNotAuthenticateMcpRequest","errorClass","sendDidNotHandleMcpRequest","sendDidExecuteMcpCapability","sendDidNotExecuteMcpCapability"],"mappings":"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"}
|