57 lines
1.4 KiB
Python
57 lines
1.4 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 = {}
|
||
|
||
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 客户端已关闭")
|