@hauptsache.net/clickup-mcp
Version:
Search, create, and retrieve tasks, add comments, and track time through natural language commands.
62 lines (61 loc) • 2.84 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.CONFIG = exports.rawPrimaryLang = void 0;
exports.rawPrimaryLang = process.env.CLICKUP_PRIMARY_LANGUAGE || process.env.LANG;
let detectedLanguageHint = undefined;
/**
* Enhanced language detection that handles various formats and common language names
*/
function detectLanguage(rawLang) {
if (!rawLang)
return undefined;
const normalizedLang = rawLang.toLowerCase().trim();
// German language detection
if (normalizedLang === 'de' || normalizedLang === 'german' || normalizedLang === 'deutsch' || normalizedLang.startsWith('de_') || normalizedLang.startsWith('de-')) {
return 'de';
}
// English language detection
if (normalizedLang === 'en' || normalizedLang === 'english' || normalizedLang.startsWith('en_') || normalizedLang.startsWith('en-')) {
return 'en';
}
// French language detection
if (normalizedLang === 'fr' || normalizedLang === 'french' || normalizedLang === 'français' || normalizedLang.startsWith('fr_') || normalizedLang.startsWith('fr-')) {
return 'fr';
}
// Spanish language detection
if (normalizedLang === 'es' || normalizedLang === 'spanish' || normalizedLang === 'español' || normalizedLang.startsWith('es_') || normalizedLang.startsWith('es-')) {
return 'es';
}
// Italian language detection
if (normalizedLang === 'it' || normalizedLang === 'italian' || normalizedLang === 'italiano' || normalizedLang.startsWith('it_') || normalizedLang.startsWith('it-')) {
return 'it';
}
// Fallback: extract the primary language part (e.g., 'en' from 'en_US.UTF-8' or 'en-GB')
const langPart = normalizedLang.match(/^[a-zA-Z]{2,3}/);
if (langPart) {
return langPart[0].toLowerCase();
}
return undefined;
}
if (exports.rawPrimaryLang) {
detectedLanguageHint = detectLanguage(exports.rawPrimaryLang);
}
const rawMode = process.env.CLICKUP_MCP_MODE?.toLowerCase();
let mcpMode = 'write'; // Default to write (full functionality)
if (rawMode === 'read-minimal' || rawMode === 'read') {
mcpMode = rawMode;
}
else if (rawMode && rawMode !== 'write') {
console.error(`Invalid CLICKUP_MCP_MODE "${rawMode}". Using default "write". Valid options: read-minimal, read, write`);
}
exports.CONFIG = {
apiKey: process.env.CLICKUP_API_KEY,
teamId: process.env.CLICKUP_TEAM_ID,
maxImages: process.env.MAX_IMAGES ? parseInt(process.env.MAX_IMAGES) : 4,
maxResponseSizeMB: process.env.MAX_RESPONSE_SIZE_MB ? parseFloat(process.env.MAX_RESPONSE_SIZE_MB) : 1,
primaryLanguageHint: detectedLanguageHint, // Store the cleaned code directly
mode: mcpMode,
};
if (!exports.CONFIG.apiKey || !exports.CONFIG.teamId) {
throw new Error("Missing Clickup API key or team ID");
}