UNPKG

n8n

Version:

n8n Workflow Automation Tool

72 lines 3.7 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.McpProtectedResource = exports.SUPPORTED_SCOPES = exports.INSTANCE_MCP_RESOURCE_ID = void 0; const api_types_1 = require("@n8n/api-types"); const config_1 = require("@n8n/config"); const di_1 = require("@n8n/di"); const mcp_scopes_1 = require("./mcp-scopes"); const mcp_config_1 = require("./mcp.config"); const mcp_settings_service_1 = require("./mcp.settings.service"); const url_service_1 = require("../../services/url.service"); exports.INSTANCE_MCP_RESOURCE_ID = 'instance-mcp'; exports.SUPPORTED_SCOPES = [...api_types_1.MCP_INSTANCE_SCOPES]; const MCP_RESOURCE_PATH = '/mcp-server/http'; const LEGACY_MCP_AUDIENCE = 'mcp-server-api'; let McpProtectedResource = class McpProtectedResource { constructor(urlService, mcpSettingsService, mcpConfig, globalConfig) { this.urlService = urlService; this.mcpSettingsService = mcpSettingsService; this.mcpConfig = mcpConfig; this.globalConfig = globalConfig; this.id = exports.INSTANCE_MCP_RESOURCE_ID; this.scopes = exports.SUPPORTED_SCOPES; this.isDefault = true; } getScopeTools() { const builderEnabled = this.globalConfig.endpoints.mcpBuilderEnabled; const tagsDisabled = this.globalConfig.tags.disabled; return Object.fromEntries(Object.entries(mcp_scopes_1.TOOLS_BY_SCOPE).map(([scope, tools]) => [ scope, tools.filter((tool) => (builderEnabled || !mcp_scopes_1.BUILDER_TOOLS.has(tool)) && (!tagsDisabled || tool !== 'list_tags')), ])); } getResourceUrl() { if (this.mcpConfig.baseUrl) { return `${this.mcpConfig.baseUrl}${MCP_RESOURCE_PATH}`; } const baseUrl = this.urlService.getInstanceBaseUrl().replace(/\/$/, ''); return `${baseUrl}${MCP_RESOURCE_PATH}`; } getProtectedResourceMetadataUrl() { const url = new URL(this.getResourceUrl()); return `${url.origin}/.well-known/oauth-protected-resource${url.pathname}`; } getResourceUrls() { const instanceUrl = `${this.urlService.getInstanceBaseUrl().replace(/\/$/, '')}${MCP_RESOURCE_PATH}`; return [...new Set([this.getResourceUrl(), instanceUrl])]; } getAudiences() { return [...this.getResourceUrls(), LEGACY_MCP_AUDIENCE]; } async getAllowedRedirectUris() { return await this.mcpSettingsService.getAllowedRedirectUris(); } async authorize(_user) { return await this.mcpSettingsService.getEnabled(); } }; exports.McpProtectedResource = McpProtectedResource; exports.McpProtectedResource = McpProtectedResource = __decorate([ (0, di_1.Service)(), __metadata("design:paramtypes", [url_service_1.UrlService, mcp_settings_service_1.McpSettingsService, mcp_config_1.McpConfig, config_1.GlobalConfig]) ], McpProtectedResource); //# sourceMappingURL=mcp-protected-resource.js.map