#!/usr/bin/env python3 """ Proxy MCP específico para el proyecto CtrEditor Este script inicia un proxy que conecta GitHub Copilot con el servidor MCP de CtrEditor """ import sys import os import subprocess import argparse import logging from pathlib import Path # Configuración de logging logging.basicConfig( level=logging.INFO, format="%(asctime)s - %(levelname)s - %(message)s" ) logger = logging.getLogger(__name__) def main(): parser = argparse.ArgumentParser(description="Proxy MCP para CtrEditor") parser.add_argument( "--ctreditor-host", default="localhost", help="Host del servidor MCP de CtrEditor", ) parser.add_argument( "--ctreditor-port", default="5006", help="Puerto del servidor MCP de CtrEditor" ) parser.add_argument( "--proxy-port", default="8080", help="Puerto del proxy para Copilot" ) parser.add_argument("--verbose", "-v", action="store_true", help="Modo verbose") args = parser.parse_args() if args.verbose: logging.getLogger().setLevel(logging.DEBUG) # Ruta al proxy principal script_dir = Path(__file__).parent main_proxy_path = script_dir.parent / "Scripts" / "MCP_Proxy" / "mcp_proxy.py" if not main_proxy_path.exists(): logger.error(f"No se encontró el proxy principal en: {main_proxy_path}") sys.exit(1) # Comando para ejecutar el proxy cmd = [ sys.executable, str(main_proxy_path), "--host", args.ctreditor_host, "--port", args.ctreditor_port, "--proxy-port", args.proxy_port, ] if args.verbose: cmd.append("--verbose") logger.info(f"Iniciando proxy MCP para CtrEditor...") logger.info(f"Servidor CtrEditor: {args.ctreditor_host}:{args.ctreditor_port}") logger.info(f"Proxy para Copilot: localhost:{args.proxy_port}") logger.info(f"Comando: {' '.join(cmd)}") try: # Ejecutar el proxy subprocess.run(cmd, check=True) except subprocess.CalledProcessError as e: logger.error(f"Error al ejecutar el proxy: {e}") sys.exit(1) except KeyboardInterrupt: logger.info("Proxy detenido por el usuario") sys.exit(0) if __name__ == "__main__": main()