@seliseblocks/mcp-server
Version:
A Model Context Protocol (MCP) server for managing schemas in SELISE Blocks platform, built with TypeScript.
59 lines • 2.38 kB
JavaScript
import { ErrorCode, McpError } from '@modelcontextprotocol/sdk/types.js';
async function generateToken() {
const username = process.env.USERNAME;
const passkey = process.env.PASSKEY;
const blocksKey = process.env.BLOCKS_KEY;
const apiBaseUrl = process.env.API_BASE_URL;
if (!username || !passkey || !blocksKey || !apiBaseUrl) {
const missingFields = [];
if (!username)
missingFields.push('username');
if (!passkey)
missingFields.push('passkey');
if (!blocksKey)
missingFields.push('blocksKey');
if (!apiBaseUrl)
missingFields.push('apiBaseUrl');
throw new McpError(ErrorCode.InvalidParams, `Missing required parameters: ${missingFields.join(', ')}`);
}
const formData = new URLSearchParams();
formData.append('grant_type', 'password');
formData.append('username', username);
formData.append('password', passkey);
const headers = {
'Content-Type': 'application/x-www-form-urlencoded',
'x-blocks-key': blocksKey
};
const tokenUrl = `${apiBaseUrl}/authentication/v1/OAuth/Token`;
try {
const response = await fetch(tokenUrl, {
method: 'POST',
headers,
body: formData.toString(),
});
const responseText = await response.text();
let responseData;
try {
responseData = JSON.parse(responseText);
}
catch (parseError) {
const errorMessage = parseError instanceof Error ? parseError.message : 'Unknown parse error';
throw new Error('Invalid JSON response from token endpoint');
}
if (!response.ok) {
throw new Error(`Token generation failed: HTTP ${response.status}`);
}
const token = responseData.access_token || responseData.token || responseData.bearerToken;
if (!token) {
throw new Error('No token found in API response');
}
return token;
}
catch (error) {
const errorMessage = error instanceof Error ? error.message : 'Unknown error';
const errorStack = error instanceof Error ? error.stack : undefined;
throw new McpError(ErrorCode.InternalError, `Failed to generate token: ${errorMessage}`);
}
}
export default generateToken;
//# sourceMappingURL=authService.js.map