@sigyl-dev/cli
Version:
Official Sigyl CLI for installing and managing MCP packages. Zero-config installation for public packages, secure API-based authentication.
67 lines ⢠3.49 kB
JavaScript
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.scanAndGenerate = scanAndGenerate;
const chalk_1 = __importDefault(require("chalk"));
const node_path_1 = require("node:path");
const node_fs_1 = require("node:fs");
const ora_1 = __importDefault(require("ora"));
const express_scanner_1 = require("../lib/express-scanner");
const mcp_generator_1 = require("../lib/mcp-generator");
const logger_1 = require("../logger");
async function scanAndGenerate(directory, options) {
const spinner = (0, ora_1.default)("Scanning Express application...").start();
try {
// Resolve directory path
const targetDir = (0, node_path_1.resolve)(process.cwd(), directory);
if (!(0, node_fs_1.existsSync)(targetDir)) {
throw new Error(`Directory not found: ${targetDir}`);
}
(0, logger_1.verboseLog)(`Scanning directory: ${targetDir}`);
(0, logger_1.verboseLog)(`Output directory: ${options.outDir}`);
(0, logger_1.verboseLog)(`Server language: ${options.serverLanguage}`);
// Scan for Express endpoints
spinner.text = "Detecting Express routes...";
const scanner = new express_scanner_1.ExpressScanner(targetDir);
const endpoints = await scanner.scanForEndpoints(options.framework);
if (endpoints.length === 0) {
spinner.fail("No Express endpoints found!");
console.log(chalk_1.default.yellow("Make sure your Express app has route definitions like:"));
console.log(chalk_1.default.gray(" app.get('/api/users', handler)"));
console.log(chalk_1.default.gray(" app.post('/api/orders', handler)"));
return;
}
spinner.succeed(`Found ${endpoints.length} endpoints`);
// Display found endpoints
console.log(chalk_1.default.blue("\nš Discovered endpoints:"));
for (const endpoint of endpoints) {
console.log(chalk_1.default.green(` ${endpoint.method.toUpperCase()} ${endpoint.path}`));
if (endpoint.description) {
console.log(chalk_1.default.gray(` ${endpoint.description}`));
}
}
// Generate MCP server
spinner.start("Generating MCP server...");
const generator = new mcp_generator_1.MCPGenerator(options.outDir, options.serverLanguage);
await generator.generateFromEndpoints(endpoints, {
appPort: options.port,
...options.config
});
spinner.succeed("MCP server generated successfully!");
console.log(chalk_1.default.green("\nš Generated files:"));
console.log(chalk_1.default.gray(` ${(0, node_path_1.join)(options.outDir, "sigyl.yaml")} - MCP configuration`));
console.log(chalk_1.default.gray(` ${(0, node_path_1.join)(options.outDir, "server.ts")} - MCP server`));
console.log(chalk_1.default.gray(` ${(0, node_path_1.join)(options.outDir, "tools/")} - Tool handlers`));
console.log(chalk_1.default.blue("\nš Next steps:"));
console.log(chalk_1.default.gray(` cd ${options.outDir}`));
console.log(chalk_1.default.gray(" npm install"));
console.log(chalk_1.default.gray(" sigyl dev"));
}
catch (error) {
spinner.fail("Scan failed");
throw error;
}
}
//# sourceMappingURL=scan.js.map
;