#!/usr/bin/env python3
"""MCP 服务器 CLI 入口 - 支持 stdio 和 HTTP 模式"""
from src.utils import kill_port_process
import sys
import os
from pathlib import Path
# 添加项目根目录到 Python 路径
sys.path.insert(0, str(Path(__file__).parent))
def main():
"""主入口函数"""
# 使用统一的参数解析模块
from src.cli_args import (
parse_args,
setup_environment,
ensure_work_directory,
get_log_level
)
# 解析参数
args = parse_args(mode="mcp")
# 启动前清理端口占用
# kill_port_process(args.port)
# 设置环境变量
setup_environment(args)
# 确保工作目录存在
ensure_work_directory(args)
# 导入 MCP 服务器
from src.server import mcp
from src.logger import setup_app_logger
# 设置日志级别
log_level = get_log_level(args)
# 使用仅文件日志模式(MCP stdio 模式下不能输出到控制台)
logger = setup_app_logger(level=log_level, console_output=False)
# 记录启动信息到日志文件
logger.info("=" * 60)
logger.info("MCP 服务器启动 (stdio 模式)")
logger.info("=" * 60)
if args.work_dir:
logger.info(f"工作目录: {args.work_dir}")
logger.info(
f"批处理目录: {os.path.join(args.work_dir, args.batch_task_dir)}")
logger.info("=" * 60)
# 运行 MCP stdio 服务器
try:
mcp.run()
except KeyboardInterrupt:
logger.info("=" * 60)
logger.info("服务器已停止")
logger.info("=" * 60)
except Exception as e:
logger.error(f"服务器错误: {e}", exc_info=True)
sys.exit(1)
if __name__ == "__main__":
main()