huoyan-enterprise/backend/core/mcp_client.py

57 lines
1.4 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""
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 客户端已关闭")