""" MCP 客户端管理模块 管理 Model Context Protocol 客户端的初始化和获取。 """ from typing import Optional from langchain_mcp_adapters.client import MultiServerMCPClient from core.config import settings from logger.logging import get_logger logger = get_logger(__name__) # 全局 MCP 客户端 _mcp_client: Optional[MultiServerMCPClient] = None async def get_mcp_client() -> MultiServerMCPClient: """ 获取或创建全局 MCP 客户端 Returns: MultiServerMCPClient: MCP 客户端实例 """ global _mcp_client if _mcp_client is None: logger.info("初始化 MCP 客户端...") # 构建 MCP 服务器配置 mcp_servers = {} if settings.mcp_url: mcp_servers["my-mcp"] = { "transport": settings.mcp_transport, "url": settings.mcp_url, } else: logger.warning("未配置 MCP_URL,跳过第三方 MCP 服务") _mcp_client = MultiServerMCPClient(mcp_servers) logger.info("MCP 客户端初始化完成") return _mcp_client async def close_mcp_client(): """关闭 MCP 客户端""" global _mcp_client if _mcp_client is not None: logger.info("关闭 MCP 客户端...") # MCP 客户端可能没有显式的关闭方法,但我们清理引用 _mcp_client = None logger.info("MCP 客户端已关闭")