test_mcp_services.py 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. import asyncio
  2. from mcp_tools import MCPTools
  3. async def test_all_mcp_services():
  4. """
  5. 测试所有配置的MCP服务
  6. """
  7. print("开始测试MCP服务...")
  8. print("=" * 50)
  9. # 初始化MCP工具
  10. mcp_tools = MCPTools()
  11. # 获取所有配置的服务器
  12. servers = mcp_tools.get_available_servers()
  13. if not servers:
  14. print("未找到任何配置的MCP服务")
  15. return
  16. print(f"找到 {len(servers)} 个MCP服务: {', '.join(servers)}")
  17. print()
  18. # 测试每个服务器
  19. results = []
  20. for server_name in servers:
  21. print(f"正在测试服务: {server_name}")
  22. try:
  23. result = await mcp_tools.test_mcp_connection(server_name)
  24. results.append(result)
  25. if result.get("status") == "success":
  26. tools_count = result.get("tools_available", 0)
  27. print(f" ✓ 连接成功 - 可用工具数: {tools_count}")
  28. else:
  29. print(f" ✗ 连接失败 - 错误: {result.get('error', '未知错误')}")
  30. except Exception as e:
  31. error_result = {
  32. "status": "error",
  33. "server": server_name,
  34. "error": str(e)
  35. }
  36. results.append(error_result)
  37. print(f" ✗ 测试异常 - 错误: {str(e)}")
  38. print()
  39. # 输出汇总结果
  40. print("=" * 50)
  41. print("测试结果汇总:")
  42. success_count = sum(1 for r in results if r.get("status") == "success")
  43. print(f"总服务数: {len(servers)}")
  44. print(f"成功连接: {success_count}")
  45. print(f"连接失败: {len(servers) - success_count}")
  46. # 详细结果
  47. print("\n详细结果:")
  48. for result in results:
  49. server = result.get("server", "未知")
  50. status = result.get("status", "未知")
  51. if status == "success":
  52. print(f" {server}: ✓ 成功")
  53. else:
  54. print(f" {server}: ✗ 失败 - {result.get('error', '未知错误')}")
  55. def main():
  56. """
  57. 主函数
  58. """
  59. try:
  60. asyncio.run(test_all_mcp_services())
  61. except KeyboardInterrupt:
  62. print("\n测试被用户中断")
  63. except Exception as e:
  64. print(f"测试过程中发生错误: {e}")
  65. if __name__ == "__main__":
  66. main()