UNPKG

tts-mcp

Version:

OpenAI Text to Speech APIを活用したコマンドラインツールとMCPサーバー

71 lines (67 loc) 2.53 kB
#!/usr/bin/env node "use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); // 環境変数の読み込み require("dotenv/config"); const commander_1 = require("commander"); const mcp_server_1 = require("../src/mcp-server"); const package_json_1 = __importDefault(require("../package.json")); const path_1 = __importDefault(require("path")); // stderrのみに出力する関数(stdoutはMCP通信用に残す) function log(message) { process.stderr.write(`${message}\n`); } // コマンドラインオプションの設定 const program = new commander_1.Command(); program .name('tts-mcp-server') .description('OpenAI Text to Speech MCP Server') .version(package_json_1.default.version) .option('-m, --model <model>', 'TTS model to use', 'gpt-4o-mini-tts') .option('-v, --voice <voice>', 'Voice character', 'alloy') .option('-f, --format <format>', 'Audio format', 'mp3') .option('--api-key <key>', 'OpenAI API key (can also be set via environment variable)') .option('--log-file <path>', 'Log file path', path_1.default.join(process.cwd(), 'tts-mcp.log')) .addHelpText('after', ` Examples: $ tts-mcp-server $ tts-mcp-server --model tts-1 --voice nova --format mp3 $ tts-mcp-server --voice echo Supported voices: alloy, ash, coral, echo, fable, onyx, nova, sage, shimmer Supported models: tts-1, tts-1-hd, gpt-4o-mini-tts Supported formats: mp3, opus, aac, flac, wav, pcm `); // エラーによる終了時にメッセージを表示 process.on('uncaughtException', (error) => { log(`致命的なエラー: ${error.message}`); process.exit(1); }); // コマンドラインオプションの解析 program.parse(process.argv); // 設定を取得 const options = program.opts(); // OpenAI APIキーを環境変数からも取得 const apiKey = options.apiKey || process.env.OPENAI_API_KEY; if (!apiKey) { log('Error: OpenAI API key is not set. Please provide it using --api-key option or OPENAI_API_KEY environment variable.'); process.exit(1); } // サーバー設定 const serverConfig = { model: options.model, voice: options.voice, format: options.format, apiKey: apiKey, logFile: options.logFile }; // MCPサーバー起動 (0, mcp_server_1.startMcpServer)(serverConfig).catch(error => { log(`MCP server startup error: ${error.message}`); process.exit(1); });