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

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

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

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

希望看什么,评论或者私智谱 AI GLM 教程信告诉我!

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

解锁 MCP 中的 JSON-RPC

为什么MCP可以适配不同LLM

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

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

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

通过专属链接获取 2000万Tokens

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




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 的接口调用这些工具函数,并处理用户查询。代码逻辑清晰,包含了工具函数的定义、服务器的启动、客户端的连接以及查询处理等关键步骤。

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

发布者:Ai探索者,转载请注明出处:https://javaforall.net/268450.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月12日 下午5:07
下一篇 2026年3月12日 下午5:07


相关推荐

关注全栈程序员社区公众号