qiniu-mcp
Version:
A Model Context Protocol server for Qiniu Cloud Storage services with optimized local file upload support
100 lines • 3.04 kB
JavaScript
import { readFileSync, existsSync } from 'fs';
import { homedir } from 'os';
import { join } from 'path';
export class ConfigManager {
static instance;
config = null;
remoteConfig;
constructor() {
// 默认远程服务器配置 - 使用你的服务器
this.remoteConfig = {
endpoint: process.env.QINIU_MCP_ENDPOINT || 'http://mcp.qiaomu.ai:8766/qiniu/api',
timeout: 30000
};
}
static getInstance() {
if (!ConfigManager.instance) {
ConfigManager.instance = new ConfigManager();
}
return ConfigManager.instance;
}
/**
* 从多个位置加载配置
*/
loadConfig() {
if (this.config) {
return this.config;
}
// 1. 从环境变量加载
const envConfig = this.loadFromEnv();
if (envConfig) {
this.config = envConfig;
return this.config;
}
// 2. 从用户配置文件加载
const fileConfig = this.loadFromFile();
if (fileConfig) {
this.config = fileConfig;
return this.config;
}
return null;
}
loadFromEnv() {
const accessKey = process.env.QINIU_ACCESS_KEY;
const secretKey = process.env.QINIU_SECRET_KEY;
if (accessKey && secretKey) {
return {
accessKey,
secretKey,
bucket: process.env.QINIU_BUCKET,
region: process.env.QINIU_REGION,
domain: process.env.QINIU_DOMAIN
};
}
return null;
}
loadFromFile() {
const configPaths = [
join(process.cwd(), '.qiniu-mcp.json'),
join(homedir(), '.qiniu-mcp.json'),
join(homedir(), '.config', 'qiniu-mcp', 'config.json')
];
for (const configPath of configPaths) {
if (existsSync(configPath)) {
try {
const content = readFileSync(configPath, 'utf-8');
const config = JSON.parse(content);
if (config.accessKey && config.secretKey) {
return config;
}
}
catch (error) {
console.warn(`Failed to load config from ${configPath}:`, error);
}
}
}
return null;
}
getRemoteConfig() {
return this.remoteConfig;
}
setRemoteEndpoint(endpoint) {
this.remoteConfig.endpoint = endpoint;
}
hasValidConfig() {
return this.loadConfig() !== null;
}
/**
* 生成配置文件模板
*/
generateConfigTemplate() {
return JSON.stringify({
accessKey: "your_qiniu_access_key",
secretKey: "your_qiniu_secret_key",
bucket: "your_default_bucket",
region: "z0", // 华东-浙江
domain: "your_custom_domain.com"
}, null, 2);
}
}
//# sourceMappingURL=config.js.map