当前位置: 首页 > news >正文

Client 和 Server 的关系理解

client.py 和 server.py 是基于 MCP(Multi-Component Protocol)协议的客户端-服务端架构,二者的关系如下:

1. 角色分工

  • server.py:服务端,负责注册和实现各种“工具函数”(如新闻检索、情感分析、邮件发送等),并通过 MCP 协议对外暴露这些工具,等待客户端调用。
  • client.py:客户端,负责与用户交互,接收用户输入,将请求通过 MCP 协议发送给服务端,调用服务端的工具函数,并将结果返回给用户。

2. 通信方式

  • 两者通过 MCP 协议(在你的代码中是 stdio 通道,即标准输入输出)进行通信。
  • 客户端通过 MCP 的 ClientSession 和 stdio_client 连接到服务端,发送请求、接收响应。

3. 典型交互流程

  1. 服务端启动(server.py):
  • 注册工具函数(如 search_google_news、analyze_sentiment、send_email_with_attachment)。
  • 监听 MCP 通道,等待客户端请求。
  1. 客户端启动(client.py):
  • 连接到服务端(通过 MCP 的 stdio 通道)。
  • 获取服务端支持的工具列表。
  • 用户输入问题,客户端根据问题和工具列表,自动规划调用哪些工具、以什么顺序调用。
  • 客户端依次调用服务端的工具函数,收集结果。
  • 客户端将最终结果展示给用户,并可保存为文件。

4. 代码中的具体体现

  • server.py 通过 @mcp.tool() 装饰器注册工具,mcp.run(transport='stdio') 启动服务。
  • client.py 通过 MCPClient 类的 connect_to_server 方法连接服务端,process_query 方法调用工具,plan_tool_usage 方法自动规划工具链。

5. 关系总结

  • server.py 是“工具箱”,负责实现和暴露功能。
  • client.py 是“指挥者”,负责与用户交互、调用工具箱里的功能,并把结果反馈给用户。
  • 二者通过 MCP 协议(本例用 stdio 通道)实现解耦和灵活的工具链调用。

相关文章:

  • 【AI智能推荐系统】第七篇:跨领域推荐系统的技术突破与应用场景
  • AI预测3D新模型百十个定位预测+胆码预测+去和尾2025年5月10日第73弹
  • 如何避免在CMD中分段发送问题导致大模型多段回复的问题?
  • 解密数据结构之位图和布隆过滤器
  • 【Redis进阶】持久化
  • 每日算法刷题Day1 5.9:leetcode数组3道题,用时1h
  • [6-2] 定时器定时中断定时器外部时钟 江协科技学习笔记(41个知识点)
  • (四)毛子整洁架构(Presentation层/Authentiacation)
  • 问题解决思路:numpy:DLL load failed
  • QSFP+、QSFP28、QSFP-DD接口分别实现40G、100G、200G/400G以太网接口
  • AUTODL Chatglm2 langchain 部署大模型聊天助手
  • 《用MATLAB玩转游戏开发:从零开始打造你的数字乐园》基础篇(2D图形交互)-《打砖块:向量反射与实时物理模拟》MATLAB教程
  • 【数据结构与算法】图的基本概念与遍历
  • 离线化 Service Worker
  • yocto的大致工作流程
  • [SV]等待32个instance的某一个信号的pulse,该怎么写?
  • 【LeetCode 热题 100】215. 数组中的第K个最大元素(Python 快速选择详解)
  • 探索C++内存管理
  • UE5 PCG学习笔记
  • 初等数论--莫比乌斯反演
  • 电子凭证会计数据标准推广至全国
  • 43.2℃!河南林州打破全省5月最高温纪录,明后天高温将持续
  • 不赚“快钱”的佳沛:蒋时杰解密新西兰国果如何在中国“慢养”出43亿生意
  • 去年六成中小企业营收保持上升或持平,发展环境持续优化
  • 国家统计局:1-4月份,全国固定资产投资同比增长4.0%
  • 贯彻落实《生态环境保护督察工作条例》,充分发挥生态环境保护督察利剑作用