yapi-devloper-mcp
Version:
YApi MCP Integration
144 lines • 5.25 kB
JavaScript
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getServerConfig = getServerConfig;
exports.getConfigSource = getConfigSource;
exports.printConfig = printConfig;
const zod_1 = require("zod");
const dotenv_1 = require("dotenv");
const yargs_1 = __importDefault(require("yargs"));
const helpers_1 = require("yargs/helpers");
(0, dotenv_1.config)();
const configSchema = zod_1.z.object({
yapiBaseUrl: zod_1.z.string().url(),
yapiUsername: zod_1.z.string().optional(),
yapiPassword: zod_1.z.string().optional(),
yapiToken: zod_1.z.string().optional(),
port: zod_1.z.number().optional(),
});
function maskApiKey(key) {
if (key.length <= 4)
return "****";
return `****${key.slice(-4)}`;
}
function getServerConfig() {
const argv = (0, yargs_1.default)((0, helpers_1.hideBin)(process.argv))
.options({
"yapi-base-url": {
type: "string",
description: "YApi服务器基础URL",
},
"yapi-username": {
type: "string",
description: "YApi用户名",
},
"yapi-password": {
type: "string",
description: "YApi密码",
},
port: {
type: "number",
description: "MCP服务器运行端口",
},
"yapi-token": {
type: "string",
description: "token",
},
})
.help()
.parseSync();
const config = {
yapiBaseUrl: "",
configSources: {
yapiBaseUrl: "default",
},
};
if (argv["yapi-base-url"]) {
config.yapiBaseUrl = argv["yapi-base-url"];
config.configSources.yapiBaseUrl = "cli";
}
else if (process.env.YAPI_BASE_URL) {
config.yapiBaseUrl = process.env.YAPI_BASE_URL;
config.configSources.yapiBaseUrl = "env";
}
if (argv["yapi-username"]) {
config.yapiUsername = argv["yapi-username"];
config.configSources.yapiUsername = "cli";
}
else if (process.env.YAPI_USERNAME) {
config.yapiUsername = process.env.YAPI_USERNAME;
config.configSources.yapiUsername = "env";
}
if (argv["yapi-password"]) {
config.yapiPassword = argv["yapi-password"];
config.configSources.yapiPassword = "cli";
}
else if (process.env.YAPI_PASSWORD) {
config.yapiPassword = process.env.YAPI_PASSWORD;
config.configSources.yapiPassword = "env";
}
if (argv["yapi-token"]) {
config.yapiToken = argv["yapi-token"];
config.configSources.yapiToken = "cli";
}
else if (process.env.YAPI_TOKEN) {
config.yapiToken = process.env.YAPI_TOKEN;
config.configSources.yapiToken = "env";
}
if (argv.port) {
config.port = argv.port;
config.configSources.port = "cli";
}
else if (process.env.PORT) {
config.port = parseInt(process.env.PORT, 10);
config.configSources.port = "env";
}
console.log("\n配置信息:");
console.log(`- YApi服务器地址: ${config.yapiBaseUrl} (来源: ${config.configSources.yapiBaseUrl})`);
console.log(`- YApi用户名: ${config.yapiUsername || "未配置"} (来源: ${config.configSources.yapiUsername})`);
console.log(`- YApi密码: ${config.yapiPassword ? "****" : "未配置"} (来源: ${config.configSources.yapiPassword})`);
console.log(`- MCP服务器端口: ${config.port} (来源: ${config.configSources.port})`);
console.log();
console.log(`- token: ${config.yapiToken ? "****" : "未配置"} (来源: ${config.configSources.yapiToken})`);
try {
configSchema.parse(config);
}
catch (error) {
console.error("配置验证失败:");
if (error instanceof zod_1.z.ZodError) {
error.errors.forEach((err) => {
console.error(`- ${err.path.join(".")}: ${err.message}`);
});
}
throw new Error("配置验证失败");
}
if (!config.yapiToken && (!config.yapiUsername || !config.yapiPassword)) {
throw new Error("必须提供 yapiToken 或者 yapiUsername/yapiPassword");
}
console.log(config);
return config;
}
function getConfigSource(config, key) {
return config.configSources[key] || "default";
}
function printConfig(config) {
console.log("当前配置:");
console.log("-------------------");
console.log(`YApi Base URL: ${config.yapiBaseUrl} (来自: ${getConfigSource(config, "yapiBaseUrl")})`);
if (config.yapiUsername) {
console.log(`YApi Username: ${config.yapiUsername} (来自: ${getConfigSource(config, "yapiUsername")})`);
}
if (config.yapiPassword) {
console.log(`YApi Password: ****** (来自: ${getConfigSource(config, "yapiPassword")})`);
}
if (config.yapiToken) {
console.log(`YApi Token: ****** (来自: ${getConfigSource(config, "yapiToken")})`);
}
if (config.port) {
console.log(`Port: ${config.port} (来自: ${getConfigSource(config, "port")})`);
}
console.log("-------------------");
}
//# sourceMappingURL=config.js.map
;