crew-management-mcp-server
Version:
Crew management server handling crew records, certifications, scheduling, payroll, and vessel assignments with ERP access for data extraction
148 lines • 7.42 kB
JavaScript
import dotenv from 'dotenv';
import path from 'path';
// Load environment variables from .env file
dotenv.config({ path: path.resolve(process.cwd(), '.env') });
function parseArgs() {
const args = process.argv.slice(2);
const config = {};
for (let i = 0; i < args.length; i++) {
const arg = args[i];
if (arg === '--mongo-uri' && i + 1 < args.length) {
config.mongoUri = args[++i];
}
else if ((arg === '--mongo-db-name' || arg === '--db-name') && i + 1 < args.length) {
config.mongoDbName = args[++i];
}
else if (arg === '--typesense-host' && i + 1 < args.length) {
config.typesenseHost = args[++i];
}
else if (arg === '--typesense-port' && i + 1 < args.length) {
config.typesensePort = args[++i];
}
else if (arg === '--typesense-protocol' && i + 1 < args.length) {
config.typesenseProtocol = args[++i];
}
else if (arg === '--typesense-api-key' && i + 1 < args.length) {
config.typesenseApiKey = args[++i];
}
else if (arg === '--cohere-api-key' && i + 1 < args.length) {
config.cohereApiKey = args[++i];
}
else if (arg === '--openai-api-key' && i + 1 < args.length) {
config.openaiApiKey = args[++i];
}
else if (arg === '--s3-api-token' && i + 1 < args.length) {
config.s3ApiToken = args[++i];
}
else if (arg === '--perplexity-api-key' && i + 1 < args.length) {
config.perplexityApiKey = args[++i];
}
else if (arg === '--llama-api-key' && i + 1 < args.length) {
config.llamaApiKey = args[++i];
}
else if (arg === '--vendor-model' && i + 1 < args.length) {
config.vendorModel = args[++i];
}
else if (arg === '--google-client-id' && i + 1 < args.length) {
config.googleClientId = args[++i];
}
else if (arg === '--google-client-secret' && i + 1 < args.length) {
config.googleClientSecret = args[++i];
}
else if (arg === '--google-redirect-uri' && i + 1 < args.length) {
config.googleRedirectUri = args[++i];
}
else if (arg === '--s3-generate-html-url' && i + 1 < args.length) {
config.s3GenerateHtmlUrl = args[++i];
}
else if (arg === '--llama-parse-url' && i + 1 < args.length) {
config.llamaParseUrl = args[++i];
}
else if (arg === '--google-api-key' && i + 1 < args.length) {
config.googleApiKey = args[++i];
}
else if (arg === '--google-search-engine-id' && i + 1 < args.length) {
config.googleSearchEngineId = args[++i];
}
else if (arg === '--snowflake-account' && i + 1 < args.length) {
config.snowflakeAccount = args[++i];
}
else if (arg === '--snowflake-user' && i + 1 < args.length) {
config.snowflakeUser = args[++i];
}
else if (arg === '--snowflake-password' && i + 1 < args.length) {
config.snowflakePassword = args[++i];
}
else if (arg === '--snowflake-warehouse' && i + 1 < args.length) {
config.snowflakeWarehouse = args[++i];
}
else if ((arg === '--snowflake-database' || arg === '--snowflake-database-report') && i + 1 < args.length) {
config.snowflakeDatabase = args[++i];
}
else if ((arg === '--snowflake-schema' || arg === '--snowflake-schema-searfearer') && i + 1 < args.length) {
config.snowflakeSchema = args[++i];
}
else if (arg === '--snowflake-role' && i + 1 < args.length) {
config.snowflakeRole = args[++i];
}
else if (arg === '--base-url' && i + 1 < args.length) {
config.baseUrl = args[++i];
}
else if (arg === '--log-level' && i + 1 < args.length) {
config.logLevel = args[++i];
}
else if (arg === '--port' && i + 1 < args.length) {
config.port = args[++i];
}
else if (arg === '--company-db-uri' && i + 1 < args.length) {
config.companyDbUri = args[++i];
}
else if (arg === '--company-db-name' && i + 1 < args.length) {
config.companyDbName = args[++i];
}
else if (arg === '--company-name' && i + 1 < args.length) {
config.companyName = args[++i];
}
}
return {
mongoUri: config.mongoUri || process.env.MONGO_URI || '',
mongoDbName: config.mongoDbName || process.env.MONGO_DB_NAME || '',
typesenseHost: config.typesenseHost || process.env.TYPESENSE_HOST || '',
typesensePort: config.typesensePort || process.env.TYPESENSE_PORT || '',
typesenseProtocol: config.typesenseProtocol || process.env.TYPESENSE_PROTOCOL || 'https',
typesenseApiKey: config.typesenseApiKey || process.env.TYPESENSE_API_KEY || '',
cohereApiKey: config.cohereApiKey || process.env.COHERE_API_KEY || '',
openaiApiKey: config.openaiApiKey || process.env.OPENAI_API_KEY || '',
s3ApiToken: config.s3ApiToken || process.env.S3_API_TOKEN || '',
perplexityApiKey: config.perplexityApiKey || process.env.PERPLEXITY_API_KEY || '',
llamaApiKey: config.llamaApiKey || process.env.LLAMA_API_KEY || '',
vendorModel: config.vendorModel || process.env.VENDOR_MODEL || 'gpt-4o',
googleClientId: config.googleClientId || process.env.GOOGLE_CLIENT_ID || '',
googleClientSecret: config.googleClientSecret || process.env.GOOGLE_CLIENT_SECRET || '',
googleRedirectUri: config.googleRedirectUri || process.env.GOOGLE_REDIRECT_URI || '',
s3GenerateHtmlUrl: config.s3GenerateHtmlUrl || process.env.S3_GENERATE_HTML_URL || '',
llamaParseUrl: config.llamaParseUrl || process.env.LLAMA_PARSE_URL || '',
googleApiKey: config.googleApiKey || process.env.GOOGLE_API_KEY || '',
googleSearchEngineId: config.googleSearchEngineId || process.env.GOOGLE_SEARCH_ENGINE_ID || '',
snowflakeAccount: config.snowflakeAccount || process.env.SNOWFLAKE_ACCOUNT || '',
snowflakeUser: config.snowflakeUser || process.env.SNOWFLAKE_USER || '',
snowflakePassword: config.snowflakePassword || process.env.SNOWFLAKE_PASSWORD || '',
snowflakeWarehouse: config.snowflakeWarehouse || process.env.SNOWFLAKE_WAREHOUSE || '',
snowflakeDatabase: config.snowflakeDatabase || process.env.SNOWFLAKE_DATABASE || '',
snowflakeSchema: config.snowflakeSchema || process.env.SNOWFLAKE_SCHEMA || '',
snowflakeRole: config.snowflakeRole || process.env.SNOWFLAKE_ROLE || '',
companyDbUri: config.companyDbUri || process.env.COMPANY_DB_URI || '',
companyDbName: config.companyDbName || process.env.COMPANY_DB_NAME || '',
companyName: config.companyName || process.env.COMPANY_NAME || '',
baseUrl: config.baseUrl || process.env.BASE_URL || '',
logLevel: config.logLevel || process.env.LOG_LEVEL || 'info',
port: config.port || process.env.PORT || '3000'
};
}
// Export a function to get fresh config instead of caching it
export function getConfig() {
return parseArgs();
}
// For backward compatibility, export the config object
export const config = parseArgs();
//# sourceMappingURL=config.js.map