62 lines
1.7 KiB
Python
62 lines
1.7 KiB
Python
"""
|
||
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 客户端已关闭")
|