tts-mcp
Version:
OpenAI Text to Speech APIを活用したコマンドラインツールとMCPサーバー
71 lines (67 loc) • 2.53 kB
JavaScript
;
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);
});