@cequenceai/mcp-cli
Version:
Cequence MCP CLI - Command-line tool for setting up Cequence MCP servers with AI clients
91 lines (90 loc) • 3.19 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.setupClaudeCode = setupClaudeCode;
const child_process_1 = require("child_process");
const validation_1 = require("../utils/validation");
/**
* Checks if the Claude CLI is available in PATH
*/
async function isClaudeCliAvailable() {
return new Promise((resolve) => {
const process = (0, child_process_1.spawn)('claude', ['--version'], {
stdio: 'pipe',
shell: true
});
process.on('close', (code) => {
resolve(code === 0);
});
process.on('error', () => {
resolve(false);
});
});
}
/**
* Executes the claude mcp add command
*/
async function executeClaudeMcpAdd(serverName, url, transport = 'http') {
return new Promise((resolve) => {
const args = ['mcp', 'add', '--transport', transport, serverName, url];
const process = (0, child_process_1.spawn)('claude', args, {
stdio: 'pipe',
shell: true
});
let stdout = '';
let stderr = '';
process.stdout?.on('data', (data) => {
stdout += data.toString();
});
process.stderr?.on('data', (data) => {
stderr += data.toString();
});
process.on('close', (code) => {
if (code === 0) {
resolve({ success: true, output: stdout });
}
else {
resolve({ success: false, output: stdout, error: stderr || 'Command failed' });
}
});
process.on('error', (error) => {
resolve({ success: false, output: '', error: error.message });
});
});
}
/**
* Sets up Cequence MCP server configuration for Claude Code
*/
async function setupClaudeCode(config, transport = 'http') {
try {
// Check if Claude CLI is available
const cliAvailable = await isClaudeCliAvailable();
if (!cliAvailable) {
return {
success: false,
message: 'Claude CLI is not installed or not in PATH. Please install Claude Code first: https://claude.ai/code'
};
}
// Sanitize the server name for use as an identifier
const serverName = (0, validation_1.sanitizeServerName)(config.name).toLowerCase().replace(/\s+/g, '-');
// Execute the claude mcp add command
const result = await executeClaudeMcpAdd(serverName, config.url, transport);
if (result.success) {
return {
success: true,
message: `Cequence MCP server "${config.name}" configured successfully for Claude Code using ${transport.toUpperCase()} transport`
};
}
else {
return {
success: false,
message: `Failed to configure Cequence MCP server for Claude Code: ${result.error || 'Unknown error'}`
};
}
}
catch (error) {
return {
success: false,
message: `Failed to configure Cequence MCP server for Claude Code: ${error instanceof Error ? error.message : String(error)}`
};
}
}