最全的 MCP协议的 Stdio 机制代码实战

最全的 MCP协议的 Stdio 机制代码实战你好 我是 shengjk1 多年大厂经验 努力构建 通俗易懂的 好玩的编程语言教程 欢迎关注 你会有如下收益 了解大厂经验 拥有和大厂相匹配的技术等 希望看什么 评论或者私信告诉我 前面我们已经再为更进一步的 MCP 打下了基础 一文搞定 Python 装饰器 解锁 MCP 中的 JSON RPC 为什么 MCP 可以适配不同 LLM MCP 协议三种传输机制全解析

大家好,我是讯享网,很高兴认识大家。这里提供最前沿的Ai技术和互联网信息。



你好,我是 shengjk1,多年大厂经验,努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注!你会有如下收益:

  1. 了解大厂经验
  2. 拥有和大厂相匹配的技术等

希望看什么,评论或者私信告诉我!

前面我们已经再为更进一步的 MCP 打下了基础 一文搞定 Python 装饰器

解锁 MCP 中的 JSON-RPC

为什么MCP可以适配不同LLM

MCP协议三种传输机制全解析

多智能体大语言模型系统频频翻车?三大失败根源与解决方案全解析

今天就正式进入到代码开发阶段

通过专属链接获取 2000万Tokens

 
  
 
  
 
  

3.2.1. 导入模块

 
  
  • 是 Python 的标准库模块,用于处理文件路径和目录操作。
  • 是一个类型注解,表示函数返回值可以是任意类型。
  • 是从 框架中导入的 类,用于创建和管理服务器。

3.2.2. 初始化 FastMCP 服务器

 
  
  • 创建了一个 服务器实例,命名为 。这个实例将用于注册工具函数和资源,并启动服务器。

3.2.3 定义工具函数

  • 使用 装饰器将 函数注册为一个工具函数。( 扩展知识:一文搞定 Python 装饰器 )
  • 需要注意使用 装饰器装饰的函数,一定写好函数的 doc: 描述清楚函数的作用和参数 这个很重要,不然 tool call 的时候,没有办法选择合适的工具

3.2.4. 定义资源函数

  • 使用 装饰器将 函数注册为一个资源函数。
  • 同 要描述清楚 doc

3.2.5. 启动服务器

 
  
  • 当脚本作为主程序运行时,调用 方法启动服务器。
  • 参数 表示服务器通过标准输入输出()进行通信。

3.2.6. 总结

这段代码实现了一个简单的 服务器,提供了以下功能:

  1. 工具函数
    • :根据用户的名字生成问候语。
    • :计算两个数字的和(但注释中提到的功能与实际实现不符)。
  2. 资源函数
    • :列出指定目录中的所有文件。
  3. 服务器启动
    • 使用 作为通信方式。

 
  

这段代码是一个简化版本的 类实现,它结合了与服务器的通信(通过 模块)和智谱AI(ZhipuAI)的接口调用。以下是对代码的详细解释:

3.4.1. 类的定义

 
  
  • :用于存储与服务器的会话对象,初始值为 。
  • :用于管理异步上下文,确保在程序结束时正确关闭资源。

3.4.2. 连接到服务器

 
  
  • :服务器脚本的路径。
  • :用于启动服务器的命令(这里是 )。
  • :定义了服务器的启动参数,包括命令、参数列表和环境变量。
  • :通过 创建一个标准输入输出的传输通道。
  • :从 中获取输入和输出流。
  • :创建一个 对象,用于与服务器进行通信。
  • :初始化会话。
  • :获取服务器支持的工具列表并打印。

3.4.3. 关闭客户端

 
  
  • :关闭异步上下文管理器,确保所有资源被正确释放。

3.4.4. 处理查询

 
  
  • :用户输入的查询字符串。
  • :初始化消息列表,包含用户的消息。

 
  
  • 将工具信息转换为特定格式,用于后续的工具调用。

 
  
  • 使用智谱AI的接口,根据用户输入和可用工具生成响应。

 
  
  • 如果响应中包含工具调用请求:
    • 遍历工具调用列表,调用相应的工具并获取结果。
    • 将工具调用的结果添加到消息列表中。
    • 根据结果类型(文本、图片、嵌入资源)进行处理。

 
  
  • 使用更新后的消息列表重新调用智谱AI接口,生成最终的响应。

3.4.5. 主函数

 
  
  • 创建 实例。
  • 连接到服务器并处理用户查询。
  • 确保在程序结束时关闭客户端。

  1. 连接到服务器:通过 方法启动服务器脚本,并建立与服务器的通信会话。
  2. 处理用户查询:
    • 将用户输入的查询包装为消息格式。
    • 调用智谱AI接口,获取初步响应。
    • 如果响应中包含工具调用请求,则调用服务器提供的工具。
    • 将工具调用的结果更新到消息列表中。
    • 重新调用智谱AI接口,生成最终的响应。
  3. 关闭客户端:确保在程序结束时释放所有资源。
  1. 服务器脚本路径: 是服务器脚本的路径,需要根据实际情况调整。
  2. 工具调用:工具调用的结果需要根据实际返回的 进行处理。

执行运行 client.py 文件即可,client 会通过下面的代码以子进程的方式启动 server

 
  

结果

 
  

文章详细讲解了如何使用 MCP 协议和智谱 AI 平台构建一个工具调用系统。通过注册智谱 AI 平台获取 API Key,并编写了 MCP Server 和 Client 的代码。Server 提供了工具函数,Client 通过智谱 AI 的接口调用这些工具函数,并处理用户查询。代码逻辑清晰,包含了工具函数的定义、服务器的启动、客户端的连接以及查询处理等关键步骤。

小讯
上一篇 2026-04-07 08:02
下一篇 2026-04-07 08:00

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/219611.html