"""
第 3 步测试：一个 MCP Server 暴露多个工具，并分别调用它们。

运行：
python step3_call_multiple_tools.py
"""

from __future__ import annotations

import asyncio
import sys
from pathlib import Path

from langchain_mcp_adapters.client import MultiServerMCPClient


async def main() -> None:
    server_file = Path(__file__).with_name("my_mcp_demo.py").resolve()

    client = MultiServerMCPClient(
        {
            "travel-tools": {
                "transport": "stdio",
                "command": sys.executable,
                "args": [str(server_file)],
            }
        }
    )

    tools = await client.get_tools()
    tool_map = {tool.name: tool for tool in tools}

    print("MCP Client 发现了这些工具：")
    for tool_name in tool_map:
        print(f"- {tool_name}")

    hotel_result = await tool_map["search_hotels"].ainvoke(
        {
            "city": "重庆",
            "nights": 2,
            "budget_per_night": 400,
        }
    )

    transport_result = await tool_map["search_transport"].ainvoke(
        {
            "origin": "成都",
            "destination": "重庆",
            "travel_date": "2026-08-15",
        }
    )

    print("\n住宿工具返回：")
    print(hotel_result)

    print("\n交通工具返回：")
    print(transport_result)


if __name__ == "__main__":
    asyncio.run(main())
