@edicarlos.lds/businessmap-mcp
Version:
Model Context Protocol server for BusinessMap (Kanbanize) integration
60 lines • 2.11 kB
JavaScript
import dotenv from 'dotenv';
// Load environment variables
dotenv.config();
function getRequiredEnvVar(name) {
const value = process.env[name];
if (!value) {
throw new Error(`Required environment variable ${name} is not set`);
}
return value;
}
function getBooleanEnvVar(name, defaultValue = false) {
const value = process.env[name];
if (value === undefined)
return defaultValue;
return value.toLowerCase() === 'true';
}
function getNumberEnvVar(name, defaultValue) {
const value = process.env[name];
if (value === undefined)
return defaultValue;
const parsed = parseInt(value, 10);
if (isNaN(parsed)) {
throw new Error(`Environment variable ${name} must be a valid number`);
}
return parsed;
}
export const config = {
businessMap: {
apiUrl: getRequiredEnvVar('BUSINESSMAP_API_URL'),
apiToken: getRequiredEnvVar('BUSINESSMAP_API_TOKEN'),
defaultWorkspaceId: getNumberEnvVar('BUSINESSMAP_DEFAULT_WORKSPACE_ID'),
readOnlyMode: getBooleanEnvVar('BUSINESSMAP_READ_ONLY_MODE', false),
},
server: {
name: process.env.MCP_SERVER_NAME || 'businessmap-mcp',
version: process.env.MCP_SERVER_VERSION || '1.0.0',
port: getNumberEnvVar('PORT'),
},
transport: {
sse: getBooleanEnvVar('SSE', false),
streamableHttp: getBooleanEnvVar('STREAMABLE_HTTP', true),
},
};
export function validateConfig() {
// Validate API URL format
try {
new URL(config.businessMap.apiUrl);
}
catch {
throw new Error('BUSINESSMAP_API_URL must be a valid URL');
}
// Validate API token is not empty
if (!config.businessMap.apiToken.trim()) {
throw new Error('BUSINESSMAP_API_TOKEN cannot be empty');
}
console.log(`✅ Configuration validated for ${config.server.name} v${config.server.version}`);
console.log(`📡 BusinessMap API: ${config.businessMap.apiUrl}`);
console.log(`🔒 Read-only mode: ${config.businessMap.readOnlyMode ? 'enabled' : 'disabled'}`);
}
//# sourceMappingURL=environment.js.map