UNPKG

mcp-server-blk

Version:

MCP server for managing blocks schemas via API

101 lines 4.34 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const types_js_1 = require("@modelcontextprotocol/sdk/types.js"); const logger_1 = require("../utils/logger"); async function generateToken() { const username = process.env.USERNAME; const userkey = process.env.USER_KEY; const blocksKey = process.env.BLOCKS_KEY; const apiBaseUrl = process.env.API_BASE_URL; (0, logger_1.debugLog)('info', '🔐 Starting token generation process', { username, blocksKey }); if (!username || !userkey || !blocksKey || !apiBaseUrl) { const missingFields = []; if (!username) missingFields.push('username'); if (!userkey) missingFields.push('userkey'); if (!blocksKey) missingFields.push('blocksKey'); if (!apiBaseUrl) missingFields.push('apiBaseUrl'); (0, logger_1.debugLog)('error', '❌ Missing required fields for token generation', { missingFields }); throw new types_js_1.McpError(types_js_1.ErrorCode.InvalidParams, `Missing required parameters: ${missingFields.join(', ')}`); } const formData = new URLSearchParams(); formData.append('grant_type', 'password'); formData.append('username', username); formData.append('password', userkey); const headers = { 'Content-Type': 'application/x-www-form-urlencoded', 'x-blocks-key': blocksKey }; const tokenUrl = `${apiBaseUrl}/authentication/v1/OAuth/Token`; (0, logger_1.logApiCall)('REQUEST', tokenUrl, { method: 'POST', headers, payload: `granttype=password&username=${username}&password=[HIDDEN]` }); (0, logger_1.debugLog)('info', '🌐 Making token generation API request', { url: tokenUrl, method: 'POST', username }); try { const response = await fetch(tokenUrl, { method: 'POST', headers, body: formData.toString(), }); (0, logger_1.debugLog)('info', '📥 Token API response received', { status: response.status, statusText: response.statusText, }); const responseText = await response.text(); (0, logger_1.debugLog)('info', '📄 Token API response body received'); let responseData; try { responseData = JSON.parse(responseText); (0, logger_1.debugLog)('info', '✅ Successfully parsed token JSON response'); } catch (parseError) { const errorMessage = parseError instanceof Error ? parseError.message : 'Unknown parse error'; (0, logger_1.debugLog)('error', '❌ Could not parse token response as JSON', { parseError: errorMessage, responseText }); throw new Error('Invalid JSON response from token endpoint'); } (0, logger_1.logApiCall)('RESPONSE', tokenUrl, { status: response.status, statusText: response.statusText }); if (!response.ok) { (0, logger_1.debugLog)('error', '❌ Token API request failed', { status: response.status, response: responseText }); throw new Error(`Token generation failed: HTTP ${response.status}`); } const token = responseData.access_token || responseData.token || responseData.bearerToken; if (!token) { (0, logger_1.debugLog)('error', '❌ No token found in API response', { availableFields: Object.keys(responseData) }); throw new Error('No token found in API response'); } (0, logger_1.debugLog)('success', '🎉 Token generated successfully'); return token; } catch (error) { const errorMessage = error instanceof Error ? error.message : 'Unknown error'; const errorStack = error instanceof Error ? error.stack : undefined; (0, logger_1.debugLog)('error', '💥 Token generation failed', { error: errorMessage, stack: errorStack, err: error }); throw new types_js_1.McpError(types_js_1.ErrorCode.InternalError, `Failed to generate token: ${errorMessage}`); } } exports.default = generateToken; //# sourceMappingURL=authService.js.map