step2_call_tool.py 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. """
  2. 第 2 步测试:连接本地 MCP Server,并直接调用 MCP 工具。
  3. 这一步还不接大模型,只验证:
  4. 1. MCP Client 能发现工具
  5. 2. MCP Client 能调用工具
  6. 3. MCP Server 能返回结果
  7. 运行:
  8. python step2_call_tool.py
  9. """
  10. from __future__ import annotations
  11. import asyncio
  12. import sys
  13. from pathlib import Path
  14. from langchain_mcp_adapters.client import MultiServerMCPClient
  15. async def main() -> None:
  16. server_file = Path(__file__).with_name("my_mcp_demo.py").resolve()
  17. client = MultiServerMCPClient(
  18. {
  19. "travel-tools": {
  20. "transport": "stdio",
  21. "command": sys.executable,
  22. "args": [str(server_file)],
  23. }
  24. }
  25. )
  26. tools = await client.get_tools()
  27. hotel_tool = next(tool for tool in tools if tool.name == "search_hotels")
  28. # 调用这个mcp工具
  29. result = await hotel_tool.ainvoke(
  30. {
  31. "city": "重庆",
  32. "nights": 2,
  33. "budget_per_night": 400,
  34. }
  35. )
  36. print("MCP 工具调用结果:")
  37. print(result)
  38. if __name__ == "__main__":
  39. asyncio.run(main())