ApiFox MCP Server
by wangmhaha
Verified
/*
* @Descripttion:
* @version:
* @Author: wangmin
* @Date: 2025-03-20 17:26:55
* @LastEditors: wangmin
* @LastEditTime: 2025-03-21 09:16:43
*/
import { config } from "dotenv";
import yargs from "yargs";
import { hideBin } from "yargs/helpers";
config();
interface ServerConfig {
port: number;
apifoxApiKey: string;
projectId: string;
}
interface CliArgs {
"apifox-api-key"?: string;
port?: number;
"project-id"?: string;
}
export function getServerConfig(): ServerConfig {
const argv = yargs(hideBin(process.argv))
.options({
"apifox-api-key": {
type: "string",
describe: "apifox api key",
},
"project-id": {
type: "string",
describe: "apifox project id",
},
port: {
type: "number",
describe: "Prot to run the server on",
},
})
.help()
.parseSync() as CliArgs;
const config: ServerConfig = {
apifoxApiKey: "",
projectId: "",
port: 3000,
};
if (argv["apifox-api-key"]) {
config.apifoxApiKey = argv["apifox-api-key"];
} else if (process.env.APIFOX_API_KEY) {
config.apifoxApiKey = process.env.APIFOX_API_KEY;
}
if (argv["project-id"]) {
config.projectId = argv["project-id"];
} else if (process.env.PROJECT_ID) {
config.projectId = process.env.PROJECT_ID;
}
if (argv.port) {
config.port = argv.port;
} else if (process.env.PORT) {
config.port = parseInt(process.env.PORT, 10);
}
if (!config.apifoxApiKey) {
console.error("请提供 apifox api key");
process.exit(1);
}
if (!config.projectId) {
console.error("请提供 apifox project id");
process.exit(1);
}
return config;
}