casefile-repository-mcp-server
Version:
Vessel casefile management system with MCP integration for maritime operations
147 lines • 6.93 kB
JavaScript
import * as fs from 'fs';
import * as path from 'path';
function getMcpJsonDefaults() {
try {
const mcpPath = path.join(process.env.HOME || process.env.USERPROFILE || '', '.cursor', 'mcp.json');
if (!fs.existsSync(mcpPath))
return {};
const mcpRaw = fs.readFileSync(mcpPath, 'utf-8');
const mcp = JSON.parse(mcpRaw);
const args = mcp?.mcpServers?.casefile_repository?.args;
if (!Array.isArray(args))
return {};
const defaults = {};
for (let i = 0; i < args.length; i++) {
const key = args[i];
if (typeof key === 'string' && key.startsWith('--') && i + 1 < args.length) {
const val = args[i + 1];
switch (key) {
case '--mongo-uri':
defaults.mongoUri = val;
break;
case '--db-name':
defaults.dbName = val;
break;
case '--typesense-host':
defaults.typesenseHost = val;
break;
case '--typesense-port':
defaults.typesensePort = val;
break;
case '--typesense-protocol':
defaults.typesenseProtocol = val;
break;
case '--typesense-api-key':
defaults.typesenseApiKey = val;
break;
case '--openai-api-key':
defaults.openaiApiKey = val;
break;
case '--perplexity-api-key':
defaults.perplexityApiKey = val;
break;
}
}
}
return defaults;
}
catch {
return {};
}
}
function parseArgs() {
const args = process.argv.slice(2);
const config = {};
const mcpDefaults = getMcpJsonDefaults();
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 === '--db-name' && i + 1 < args.length) {
config.dbName = args[++i];
}
else if (arg === '--etl-dev-mongo-uri' && i + 1 < args.length) {
config.etlDevMongoUri = args[++i];
}
else if (arg === '--etl-dev-db-name' && i + 1 < args.length) {
config.etlDevDbName = args[++i];
}
else if (arg === '--beta-api-mongo-uri' && i + 1 < args.length) {
config.betaApiMongoUri = args[++i];
}
else if (arg === '--beta-api-db-name' && i + 1 < args.length) {
config.betaApiDbName = 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 === '--api-base-url' && i + 1 < args.length) {
config.API_BASE_URL = args[++i];
}
else if (arg === '--api-token' && i + 1 < args.length) {
config.API_TOKEN = args[++i];
}
else if (arg === '--company-name' && i + 1 < args.length) {
config.companyName = 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];
}
}
return {
mongoUri: config.mongoUri || process.env.MONGO_URI || mcpDefaults.mongoUri || 'mongodb://localhost:27017/company_docs',
dbName: config.dbName || process.env.DB_NAME || mcpDefaults.dbName || 'company_docs',
etlDevMongoUri: config.etlDevMongoUri || process.env.ETL_DEV_MONGO_URI || 'mongodb://localhost:27017/company_docs',
etlDevDbName: config.etlDevDbName || process.env.ETL_DEV_DB_NAME || 'company_docs',
betaApiMongoUri: config.betaApiMongoUri || process.env.BETA_API_MONGO_URI || 'mongodb://beta-syia-api-readonly:s40p4CF01PiQ@13.202.145.171:27017/?authSource=beta-syia-api',
betaApiDbName: config.betaApiDbName || process.env.BETA_API_DB_NAME || 'beta-syia-api',
typesenseHost: config.typesenseHost || process.env.TYPESENSE_HOST || mcpDefaults.typesenseHost || 'localhost',
typesensePort: config.typesensePort || process.env.TYPESENSE_PORT || mcpDefaults.typesensePort || '8108',
typesenseProtocol: config.typesenseProtocol || process.env.TYPESENSE_PROTOCOL || mcpDefaults.typesenseProtocol || 'http',
typesenseApiKey: config.typesenseApiKey || process.env.TYPESENSE_API_KEY || mcpDefaults.typesenseApiKey || 'test_key',
cohereApiKey: config.cohereApiKey || process.env.COHERE_API_KEY || '',
openaiApiKey: config.openaiApiKey || process.env.OPENAI_API_KEY || mcpDefaults.openaiApiKey || '',
s3ApiToken: config.s3ApiToken || process.env.S3_API_TOKEN || '',
perplexityApiKey: config.perplexityApiKey || process.env.PERPLEXITY_API_KEY || mcpDefaults.perplexityApiKey || '',
llamaApiKey: config.llamaApiKey || process.env.LLAMA_API_KEY || '',
vendorModel: config.vendorModel || process.env.VENDOR_MODEL || '',
API_BASE_URL: config.API_BASE_URL || process.env.API_BASE_URL || '',
API_TOKEN: config.API_TOKEN || process.env.API_TOKEN || '',
companyName: config.companyName || process.env.COMPANY_NAME,
companyDbUri: config.companyDbUri || process.env.COMPANY_DB_URI,
companyDbName: config.companyDbName || process.env.COMPANY_DB_NAME,
};
}
export const config = parseArgs();
//# sourceMappingURL=config.js.map