""" 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 = {} # 聚合数据 MCP 服务 if settings.mcp_juhe_token: mcp_servers["juhe"] = { "transport": "sse", "url": f"https://mcp.juhe.cn/sse?token={settings.mcp_juhe_token}", } else: # 使用默认配置(如果没有配置 token) mcp_servers["juhe"] = { "transport": "sse", "url": "https://mcp.juhe.cn/sse?token=1jyLFDQt8u6I2HmBswXK2m0xRuosHKl51YcNzyaeEvfdhb", } _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 客户端已关闭")