💻 源码
from langchain_mcp_adapters.tools import load_mcp_tools
from mcp import StdioServerParameters, ClientSession
from mcp.client.sse import sse_client
from mcp.client.stdio import stdio_client
import asyncio

from mcp.client.streamable_http import streamablehttp_client

# MCP Server URL
server_url = "http://localhost:8001/mcp"

# 定义mcp客户端
mcp_client = None

# 创建一个异步函数,来实现客户端的创建及使用
async def main():
    global mcp_client
    # 启动 MCP server,并通过标准输入输出建立异步连接。
    async with streamablehttp_client(url=server_url) as (read, write, _):
        # 使用读写流创建MCP会话对象
        async with ClientSession(read, write) as session:
            # 初始化session
            await session.initialize()

            # 动态创建一个临时类 MCPClientHolder,把 session 放进去。这样就可以在函数外部通过 mcp_client.session 调用 MCP 工具
            mcp_client = type("MCPClientHolder", (), {"session": session})()

            # 从 session 自动获取 MCP server 提供的工具列表。
            tools = await load_mcp_tools(session)
            print(f"tools-->{tools}")

            # 通过session调用工具
            result = await session.call_tool("get_weather", {})
            print(f'result-->{result}')

            # 使用client进行调用
            result2 = await mcp_client.session.call_tool("query_high_frequency_question", arguments={})
            print(f'result2-->{result2}')

    return # 终止进程

# 启动运行
if __name__ == '__main__':
    asyncio.run(main())