@vibe-kit/grok-cli
Version:
An open-source AI agent that brings the power of Grok directly into your terminal.
80 lines • 2.73 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.MCPManager = void 0;
const settings_1 = require("./settings");
class MCPManager {
static getServers() {
const settings = (0, settings_1.loadSettings)();
return settings.mcpServers || {};
}
static addServer(name, server) {
const settings = (0, settings_1.loadSettings)();
if (!settings.mcpServers) {
settings.mcpServers = {};
}
settings.mcpServers[name] = server;
(0, settings_1.saveSettings)(settings);
}
static removeServer(name) {
const settings = (0, settings_1.loadSettings)();
if (!settings.mcpServers || !settings.mcpServers[name]) {
return false;
}
delete settings.mcpServers[name];
(0, settings_1.saveSettings)(settings);
return true;
}
static getServer(name) {
const servers = this.getServers();
return servers[name];
}
static listServers() {
const servers = this.getServers();
return Object.entries(servers).map(([name, server]) => ({ name, server }));
}
static validateServer(server) {
const errors = [];
if (!server.name || server.name.trim() === '') {
errors.push('Server name is required');
}
if (!server.transport) {
errors.push('Transport type is required');
}
else if (!['stdio', 'sse', 'http'].includes(server.transport)) {
errors.push('Transport must be one of: stdio, sse, http');
}
if (server.transport === 'stdio') {
if (!server.command) {
errors.push('Command is required for stdio transport');
}
}
else if (server.transport === 'sse' || server.transport === 'http') {
if (!server.url) {
errors.push('URL is required for SSE/HTTP transport');
}
}
return errors;
}
static parseServerFromArgs(name, transport, ...args) {
const server = {
name,
transport: transport,
};
if (transport === 'stdio') {
if (args.length === 0) {
throw new Error('Command is required for stdio transport');
}
server.command = args[0];
server.args = args.slice(1);
}
else if (transport === 'sse' || transport === 'http') {
if (args.length === 0) {
throw new Error('URL is required for SSE/HTTP transport');
}
server.url = args[0];
}
return server;
}
}
exports.MCPManager = MCPManager;
//# sourceMappingURL=mcp-manager.js.map