"""Точка входа MCP сервера для Bitrix24.
Поддерживает запуск в режимах:
- stdio (по умолчанию) - для локального использования
- streamable-http - для удалённого доступа через HTTP
- sse - для Server-Sent Events (legacy)
"""
from src.config import SettingsManager
from src.infrastructure.logging.logger import configure_log_level, logger
from src.presentation.mcp import create_mcp_server
server = create_mcp_server()
def run() -> None:
"""Точка входа для запуска MCP сервера.
Эта функция инициализирует настройки и запускает MCP сервер
для обработки входящих запросов.
Поддерживаемые транспорты (через MCP_TRANSPORT):
- stdio: Standard I/O (по умолчанию, для локального использования)
- streamable-http: HTTP с потоковой передачей (для удалённого доступа)
- sse: Server-Sent Events (legacy, для обратной совместимости)
"""
settings = SettingsManager.init()
configure_log_level(settings.LOG_LEVEL)
transport = settings.MCP_TRANSPORT.lower()
logger.info(
"Запуск MCP сервера",
transport=transport,
host=settings.MCP_HOST if transport != "stdio" else None,
port=settings.MCP_PORT if transport != "stdio" else None,
)
if transport == "stdio":
# Локальный режим через stdin/stdout
server.run()
elif transport in ("sse", "http", "streamable-http"):
# Удалённый режим через SSE (Server-Sent Events)
# В текущей версии FastMCP параметры host и port не поддерживаются в run()
logger.info("Запуск в режиме SSE. Порт по умолчанию: 8000")
server.run(transport="sse")
else:
msg = f"Неподдерживаемый транспорт: {transport}. Используйте: stdio, sse"
raise ValueError(msg)
if __name__ == "__main__":
run()