mcp-server-blk
Version:
MCP server for managing blocks schemas via API
101 lines • 4.34 kB
JavaScript
;
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