UNPKG

@gleanwork/mcp-server-utils

Version:

Shared utilities for MCP server packages

70 lines 2.19 kB
import { stripUndefined } from '../util/object.js'; /** * Type guard to check if a GleanConfig uses token authentication */ export function isGleanTokenConfig(config) { return config.authType === 'token'; } /** * Type guard to check if a GleanConfig uses basic authentication */ export function isBasicConfig(config) { return config.authType === 'unknown'; } /** * Validates required environment variables and returns client configuration. * * @returns A promise that resolves to GleanConfig * @throws {Error} If required environment variables are missing */ export async function getConfig() { return getLocalConfig(); } function getLocalConfig() { const instance = process.env.GLEAN_INSTANCE || process.env.GLEAN_SUBDOMAIN; const baseUrl = process.env.GLEAN_URL; const token = process.env.GLEAN_API_TOKEN; const actAs = process.env.GLEAN_ACT_AS; if (token !== undefined) { return buildTokenConfig({ token, instance, baseUrl, actAs, }); } const config = buildBasicConfig({ instance, baseUrl, }); return Object.assign(Object.assign({}, stripUndefined(config)), { baseUrl: config.baseUrl, authType: config.authType }); } export function sanitizeConfig(config) { const result = Object.assign({}, config); if ('token' in result) { delete result.token; } return result; } function buildGleanBaseUrl({ baseUrl, instance, }) { if (!baseUrl) { if (!instance) { throw new Error('GLEAN_INSTANCE environment variable is required'); } return `https://${instance}-be.glean.com/`; } return baseUrl; } function buildBasicConfig({ instance, baseUrl, }) { return { authType: 'unknown', baseUrl: buildGleanBaseUrl({ instance, baseUrl }), }; } function buildTokenConfig({ token, actAs, baseUrl, instance, }) { if (!token) { throw new Error('GLEAN_API_TOKEN environment variable is required'); } return Object.assign({ authType: 'token', baseUrl: buildGleanBaseUrl({ instance, baseUrl }), token }, (actAs ? { actAs } : {})); } //# sourceMappingURL=index.js.map