UNPKG

@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
"use strict"; 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)}` }; } }